第三次作业
要求一:加向字符变量str
要求二:
题目一:
1.第一步:先编译一个结构体,定义字符型name数组和双精度cost。
第二步:在主函数中引用,定义i和n,在循环语句中输入n,再输入name数组,最后输入花费的价格。
第三步:定义最大值和最小值都为零。再用一个循环,利用if条件句判断出最大值和最小值。
2.
#include<stdio.h> #include<string.h> #include<stdlib.h> struct book { char name[31]; double cost; }; main() { struct book s[10]; int i,n; scanf("%d",&n); for(i=0;i<n;i++) { scanf("\n"); gets(s[i].name); scanf("%lf",&s[i].cost); } int max=0,min=0; for(i=1;i<n;i++) { if(s[i].cost>s[max].cost){max=i;} if(s[i].cost<s[min].cost){min=i;} } printf("%.2f, %s\n",s[max].cost,s[max].name); printf("%.2f, %s",s[min].cost,s[min].name); }
题目二:
1.设计思路:第一步:打好框架,定义结构体。
第二步:定义和,平均值等信息。
第三步:利用循环,结构体,指针指向变量算出平均值,再分别输出对应信息
2.代码:
#include<stdio.h> #include<stdlib.h> struct student{ int num; char name[10]; int grade; }; main() { int N,i=0,sum=0; float average=0; scanf("%d",&N); struct student s[N],*p; p=s; for(i=0;i<N;i++,p++) { scanf("%d %s %d",&p->num,p->name,&p->grade); sum=sum+p->grade; } if(N==0) average=0; else average=sum/N*1.0; printf("%.2f\n",average); p=s; for(i=0;i<N;i++,p++) { if(p->grade<average) printf("%s %.5d\n",p->name,p->num); } }
3.遇到问题:程序编译错误
改正:一个致命的错误,定义结构体最后没有加”;“
要求三:指向结构体中变量,可以用指针指向例如
p->grade
可以直接用数组例如
s[i].cost
https://coding.net/u/asdfg145632/p/a7/git?public=true