C-语言第二次作业(大一下)
要求一、设计过程
作业(1)
1.提交列表

6-7 删除字符串中数字字符
2.设计思路(6分)
(1)主描述题目算法。
第一步:设出字符char *srt,char*substr;
第二步:使用for循环语句和if语句,判断是否数字字符;
第三步: 循环寻找或结束语句。
(2)流程图
主函数调用:

返回主函数:

3.实验代码
void delnum(char *s)
{
int i,m=;
for(i=;*(s+i)!='\0';i++)
{
if(*(s+i)>=''&&*(s+i)<='')
{
}else
{
*(s+m)=*(s+i);
m++;
}
}
*(s+m)='\0';
}
4.本题调试过程碰到问题及解决办法。
改正方法:并且符号是两个&&。
6-8 统计子串在母串出现的次数
(1)描述题目算法
第一步:列出char*str,并使用函数char str[81]="asdasas";
第二步:使用for语句和if语句统计字符出现字数,令str依次srt+i,str+i+1...;
第三步:返回函数。
3.实验代码(2分)
int fun(char *str,char *substr){
int i,count=;
for(i=;*(str+i)!='\0';i++){
if(*(str+i)==*(substr)){
if(*(str+i+)==*(substr+)){
if(*(str+i+)==*(substr+)){
count++;
}
}
}
}
return count;
}
4.本题调试过程碰到问题及解决办法(4分)

改正方法:‘\0'忘记加\,字符串是以\0为结束标志,找不到\0会越界访问。
.
6-9 字符串中除首尾字符外的其余字符按降序排列
(1)描述题目算法
第一步:设出指针,用外循环控制循环数,num-1次;
第二步:用for循环和if语句判断字符ASCII大小;
第三步:判断后交换大小。
3.实验代码
int fun(char *s,int num){
int i,j,k,temp;
for(i=;i<num-;i++){
k=i;
for(j=i+;j<num-;j++){
if((int)(*(s+k))<(int)(*(s+j))){
k=j;
}
}
if(k!=i){
temp=*(s+i);*(s+i)=*(s+k);*(s+k)=temp;
}
}
return ;
}
4.本题调试过程碰到问题及解决办法

改正方法:第一次限制循环未控制在num-1次。
7-1 输出学生成绩
(1)描述题目算法
第一步:输入学生人数,动态分配;
第二步:用for循环相加成绩;
第三步:令max,min,等于数组第一个元素,比较大小,并用for循环交换。
3.实验代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,n;
float sum=,average,max,min;
scanf("%d",&n);
float *p=(float *)malloc(n);
for(i=;i<n;i++){
scanf("%f",(p+i));
sum+=*(p+i);
}
min=*(p+);max=*(p+);
for(i=;i<n;i++){
if(min>*(p+i)){
min=*(p+i);
}
if(max<*(p+i)){
max=*(p+i);
}
}
printf("average = %.2f\n",sum/n*);
printf("max = %.2f\n",max);
printf("min = %.2f\n",min);
return ;
}
4.本题调试过程碰到问题及解决办法

错误原因:min=*(p);max=*(p);输出后与列子不同。
改正方法:min=*(P+0);max=*(p+0);表示依次加。
作业(2)
1.提交列表
.
2.设计思路(6分)
7-1 计算职工工资
(1)描述题目算法。
第一步:设出变量,使用结构算法;
第二步:用for循环语句,保证正确输出;
第三步:令实际工资=s1.j+s1.f-s1.z,输出。
(2)流程图

3.实验代码
#include <stdio.h>
struct clerk
{
float j,f,z;
char name[];
}; int main()
{
int i,n;
float pay;
scanf("%d",&n);
struct clerk s1;
for(i=;i<=n;i++)
{
scanf("%s %f %f %f",s1.name,&s1.j,&s1.f,&s1.z);
pay=s1.j+s1.f-s1.z;
printf("%s %.2f\n",s1.name,pay);
}
return ;
}
4.本题调试过程碰到问题及解决办法。

错误原因:第一次使用数组的方法,麻烦且没有成功。
改正方法:使用简单的for循环,数据结构就很容易编写。
7-2 计算平均成绩
(1)描述题目算法。
第一步:定义结构;
第二步:计算平均值 ,输出;
第三步:用for循环,if语句,判断每人成绩是否小于平均值;若是。则输出,学生和学号。
3.实验代码
#include <stdio.h>
struct student
{
char num[];
char name[];
int grade;
double average;
}; int main()
{
int i,N,sum = ;
double average;
scanf("%d",&N);
struct student s[N];
for(i=;i<N;i++)
{
scanf("%s %s %d",s[i].num,s[i].name,&s[i].grade);
sum = sum + s[i].grade;
}
average = (double)(sum/N);
printf("%.2f\n",average);
for(i=;i<N;i++)
{
if(s[i].grade<average)
{
printf("%s %s\n",s[i].name,s[i].num);
}
} return ;
}
4.本题调试过程碰到问题及解决办法。

解决方法:'\n'一直打成'/n',令答案错误。
作业(3)
1.提交列表

2.设计思路(6分)
6-1 按等级统计学生成绩
(1)描述题目算法。
第一步:列出指针;
第二步:用for循环,if语句判断学生成绩是否小于60;
第三步:count 在每次又小于60的同学,逐渐+1;
第四步:返回count的值到主函数。
(2)流程图

3.实验代码
int set_grade( struct student *p, int n ){
int i,q=;
for(i=;i<n;i++,p++){
if(p->score<){
q++;
}
if((p->score>=)&&(p->score<=)){
p->grade ='A';
}else if((p->score>=)&&(p->score<=)){
p->grade ='B';
}else if((p->score>=)&&(p->score<=)){
p->grade='C';
}else{
p->grade='D';
}
}
return q;
}
4.本题调试过程碰到问题及解决方法。

解决方法:要定义n。
6-2 结构体数组按总分排序
(1)描述题目算法。
第一步:列出指针,结构体;
第二步:用for循环,一个循环第n个人的成绩总数值,一个计算第n个人的成绩总值;
第三步:用冒泡法排序,按总成绩大小排序,交换。
3.实验代码
void calc(struct student *p,int n){
int i;
for(i=;i<n;i++){
(p+i)->sum=(p+i)->score[]+(p+i)->score[]+(p+i)->score[];
}
}
void sort(struct student *p,int n){
int i,j,t;
struct student temp;
for(i=;i<n-;i++){
t=i;
for(j=i;j<n;j++){
if(((p+t)->sum)<((p+j)->sum)){
t=j;
}
}
if(t!=i){
temp=*(p+i);*(p+i)=*(p+t);*(p+t)=temp;
}
}
}
4.本题调试过程碰到问题及解决办法(4分)

错误原因:if((p+t)->sum)<((p+j)->sum)),少加一个括号。
改正方法:加上即可。
要求二、学习总结和进度
1、总结两周里所学的知识点有哪些学会了?哪些还没有学会?
在这两周学习了结构和在结构体中使用指针。将结构和两个结构的写法听的很清楚明白并感觉对for循环和if语句又有了更清楚的认识。没有学习明白指针在结构的使用,还是对函数有些苦恼,会尽快弄明白。
2、GIT:https://git.coding.net/GUANCHENG/101.git

3、点评3个同学的本周作业。
张心悦:http://www.cnblogs.com/zxy980612/p/8696690.html
丰大为:http://www.cnblogs.com/DavidPark/p/8664273.html
王姝雯:http://www.cnblogs.com/phsudie/p/8661686.html
4、折线图。

C-语言第二次作业(大一下)的更多相关文章
- C语言——第二次作业(2)
作业要求一 PTA作业的提交列表 作业要求二 题目1.删除字符串中数字字符(函数题) 1.设计思路 - (1)算法 第一步:调用定义的函数. 第二步:定义i=0.j=0,i为原字符数组角标,j为删除后 ...
- c++语言第二次作业
一题目7-1统计学生成绩 1实验代码 #include<stdio.h> int main(void) { int i,n,grade,A,B,C,D,E; A=B=C=D=E=; sca ...
- C语言--第二周作业
****学习内容总结**** 1.Git和编辑器截图 2.MOOC截图 3.阅读<提问的智慧>感想 读完<提问的智慧>之后,我认为在提问时,要根据以下步骤: 谨慎明确的描述症状 ...
- C语言第二次作业 ,
一:修改错题 1输出带框文字:在屏幕上输出以下3行信息. 将源代码输入编译器 运行程序发现错误 错误信息1: 错误原因:将stido.h拼写错误 改正方法:将stido.h改为stdio.h 错误信息 ...
- C语言--第二周作业评分和总结(5班)
作业链接:https://edu.cnblogs.com/campus/hljkj/CS2017-5/homework/1026 一.评分要求 要求1 阅读指定博客+阅读收获+例子.(5分) 要求2 ...
- C语言第二次作业-----顺序结构
一:改错题 (1)输出指定信息: 将给定源代码输入编译器: 执行编译命令,发现编译器报错,错误信息如下: 经检查,发现源程序将"stdio.h"误拼为"stido.h&q ...
- C语言第二周作业
一.PTA实验作业 题目一:7-1 计算分段函数 1.实验代码 double x,y; scanf("%lf", &x); if(x >= 0){ y=pow(x,0 ...
- C语言第二次作业---分支结构
一.PTA实验作业 题目1:计算分段函数[2] 1.实验代码 double x,y; scanf("%lf",&x); if(x>=0){ y=sqrt(x); } ...
- c语言第二次作业2
---恢复内容开始--- (一)改错题 1.输出带框文字:在屏幕上输出以下3行信息. 源程序 对源程序进行编译 错误信息1: 错误原因:stdio.h输入错误 改正方法:i和d互换位置 错误信息2: ...
- 2018C语言第二次作业
一.学习内容总结 1.指针是一种数据类型,同样占有空间,其存储的是内存地址: 2.定义指针变量要在变量名之前加“*”字符表示: 3.“&”是取地址运算符,“*”是间接运算符: (注:声名和使用 ...
随机推荐
- curl基本使用
curl简介 linux curl是一个利用URL规则在命令行下工作的文件传输工具.它支持文件的上传和下载. curl可以使用URL的语法模拟浏览器来传输数据,因为它是模拟浏览器,因此它同样支持多种协 ...
- 13信号signal
信号 传送给进程的事件通知,完成异步通信 信号的产生 1.程序错误:硬件异常,除数为0,等 2.外部事件:定时器事件,按键中断(ctrl+c)等 3.显示请求:调用 kill, raise 等信号发 ...
- 能否通过六面照片构建3D模型?比如人脸,全身的多角度照片,生成3D模型。?
https://www.zhihu.com/question/36412840 9023 添加评论 分享 邀请回答举报 收起 已关注写回答 9 个回答 默认排序 叛逆者 计算机图形学 ...
- pyDay12
内容来自廖雪峰的官方网站. 1.可迭代对象(Iterable):可以直接作用于for循环的对象. 2.集合数据类型:如list.tuple.dict.set.str等. 3.generator:包括生 ...
- SQL学习笔记八之ORM框架SQLAlchemy
阅读目录 一 介绍 二 创建表 三 增删改查 四 其他查询相关 五 正查.反查 一 介绍 SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进 ...
- SQL学习笔记四(补充-1-1)之MySQL单表查询补充部分:SQL逻辑查询语句执行顺序
阅读目录 一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SELECT语句关键字的定义顺序 SELE ...
- 简单方法实现无刷新提交Form表单
前几天遇到一个前端的问题.我希望提交表单后页面不跳转且不刷新当前页面,然而查了很多方法都没有解决. 由于Form 是提交后一定刷新页面的,所以我们可以用一个折中的办法.我们给Form 指定一个ifra ...
- JQuery+CSS3实现Ajax加载时loading效果
之前通过Ajax请求加载数据的时候,在数据还没有呈现出来前,为了更好的用户体验,总会弄个loading告诉用户其实内容正在加载,而不是网站崩了.但是貌似之前使用gif图片的情况比较多,可能是为了兼容各 ...
- jQuery Mobile中的页面加载与跳转机制
第一次做用jQuery Mobile做东西,发现一些跟平时的思维习惯不太一样的.其中这个框架的页面加载机制便是其中一个.如果不明白其中的奥秘,往往会出现一些让人摸不着头脑的怪现象,比如页面进入后点击按 ...
- linux使用vi浏览python源码
一.背景 2018/8/15,这一天要分析一个python项目,因此需要浏览代码,而我使用的是ubuntu 16.04,于是作此文 二.步骤 2.1 获取生成tags文件的脚本 http://svn. ...