做业1:html
第一步:定义主函数
第二步:定义数组,用do while语句判断字符是否为数字,不是则s[j]=s[i];j++;循环后将最后一位赋值‘\0’git
、 #include<stdio.h> void delnum(char *s) { int i=0,j=0; do { if(!(s[i]>='0'&&s[i]<='9')) { s[j]=s[i]; j++; } i++; } while(s[i]!='\0'); s[j]='\0'; } 、
开始出现思路错误,换一种思路后没有遇到问题。算法
第一步:定义主函数
第二步:定义指针,循环变量i和总数num,当字符不为空字符时,若是字符为'a','s','d'的一种,则num++,统计出num的值,最后返回num数组
、 #include<stdio.h> int fun(char *str,char *substr) { int i=0,num=0; while(*(str+i)!='\0') { if(*(str+i)=='a'&&*(str+i+1)=='s'&&*(str+i+2)=='d') { num++; } i++; } return num; }
本题没有问题。函数
第一步:定义主函数
第二步:定义指针,循环变量i,j,置换字符temp,用for循环判断两个字符数值大小,将数值大的字符置换至前面,再用一个for循环排除首末位,输出字符串。学习
、 #include <stdio.h> int fun(char *s,int num) { int i,j; char temp; for(i=0;i<num;i++) for(j=1;j<num-2;j++) { if(s[j]<s[j+1]) {temp=s[j]; s[j]=s[j+1]; s[j+1]=temp;} } } 、
在第二个for循环去掉首末位时出现几回错误,尝试几回后错误排除。.net
第一步:定义变量,输入学生人数
第二步:for循环判断成绩的大小,得出最大最小值和总和
第三步:输出最高成绩,最低成绩,平均成绩设计
、 #include<stdio.h> int main() { int n,i; float max,min=200,sum=0,cj; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%f ",&cj); if(cj>max) { max=cj; } if(cj<min) { min=cj; } sum=sum+cj; } printf("average = %.2f\n",sum/n); printf("max = %.2f\n",max); printf("min = %.2f",min); return 0; } 、
做业2:3d
第一步:定义结构体,数组,变量
第二步:输入人数,引用结构体
第三步:用for循环输入数据,输出结果指针
、 #include<stdio.h> struct work { char name[10]; float jiben; float fudong; float zhichu; float sum; }; int main() { int n,i; scanf("%d",&n); struct work a[n]; for(i=0;i<n;i++) { scanf("%s %f %f %f",&a[i].name,&a[i].jiben,&a[i].fudong,&a[i].zhichu); a[i].sum=(a[i].jiben+a[i].fudong)-a[i].zhichu; printf("%s %.2f\n",a[i].name,a[i].sum); } } 、
本题没有问题。
第一步:定义结构体,数组,变量
第二步:输入人数,引用结构体
第三步:for循环输入数据,计算平均成绩并输出,另外一个for循环比较成绩与平均数成绩的大小,若是成绩小于平均成绩则输出姓名学号
、 #include<stdio.h> struct student { char xuehao[6]; char name[10]; int grade; }; int main() { int n,i,sum=0; float average; scanf("%d",&n); struct student a[n]; for(i=0;i<n;i++) { scanf("%s %s %d",a[i].xuehao,a[i].name,&a[i].grade); sum=sum+a[i].grade; average=1.0*(sum/n); } printf("%.2f\n",average); for(i=0;i<n;i++) { if(a[i].grade<average) { printf("%s %s\n",a[i].name,a[i].xuehao); } } } 、
开始将学号的字符串定义为5位致使没法结束字符串,修改位数后输出正常。
做业3:
第一步:观察主函数定义
第二步:定义循环变量,不及格人数,for循环判断是否不及格,不及格则num++,另外一个for循环判断分数等级
、 #include <stdio.h> #define MAXN 10 int set_grade( struct student *p, int n ) { int j=0,num=0; for(j=0;j<n;j++) { if(p[j].score<60) { num++; } } for(j=0;j<n;j++) { if((p[j].score)>=85&&(p[j].score)<=100) { (p[j].grade)='A'; }else if((p[j].score)>=70&&(p[j].score)<=84) { (p[j].grade)='B'; }else if((p[j].score)>=60&&(p[j].score)<=69) { (p[j].grade)='C'; }else if((p[j].score)>=0&&(p[j].score)<=59) { (p[j].grade)='D'; } } return num; }
本题没有问题。
主要描述题目算法
第一步:观察主函数定义
第二步:第一个函数for循环求出分数总和,第二个函数for循环比较两人分数总和,分数高的置换到前面。
、 void calc(struct student *p,int n) { int i; for(i=0;i<n;i++) { (p+i)->sum=(p+i)->score[0]+(p+i)->score[1]+(p+i)->score[2]; } } void sort(struct student *p,int n) { int i,j=0; struct student t; for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { if(p[i].sum<p[j].sum) { t=p[i]; p[i]=p[j]; p[j]=t; } } } } 、
第二个函数的for循环j的初始值最初出现错误,修改后正确。
郭钊毅 http://www.cnblogs.com/nothingistrue/p/8747979.html
班庆泽 http://www.cnblogs.com/wsbqz/p/8746704.html
丰大为 http://www.cnblogs.com/DavidPark/p/8664273.html