第三次结构部分作业
作业要求一
1 已完成
2 struct sk{int a; char *str)}*p; p->str++ 中的++ 加向str字符串中的字符++。
作业要求二
题目1查找书籍中最高价及最低价
1.设计思路
(1)主要描述题目算法
第一步:题中需要比较不同的书名和价格,先建立book结构体(name【】,price)。
第二步:把min,max分别赋初值999999999,0。
第三步:在for循环中进行价格高低的比较,找到最高的或最低的价格,并输出相应的书名及价格。
(2)流程图
2.实验代码
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> int main() { struct book { char name[300]; double price; }now,max,min; max.price=0; min.price=999999999999999999; int n,i; scanf("%d",&n); for(i=1;i<=n;i++) { getchar(); gets(now.name); scanf("%lf",&now.price); if(now.price>max.price) { strcpy(max.name,now.name); max.price=now.price; } if(now.price<min.price) { strcpy(min.name,now.name); min.price=now.price; } } printf("%.2lf, %s\n%.2lf, %s",max.price,max.name,min.price,min.name); return 0; }
3.本题调试过程碰到问题及解决办法
错误信息1:没有定义min,max以及他们的初始值。
截图:
改正方法:定义max,min变量以及赋初值和其输入价格比较。
题目2 计算平均成绩
1 设计思路
(1)主要描述题目算法
第一步:建立以student为名的结构体(包含学号,姓名,成绩)。
第二步:对平均数赋初值,并输入人的个数以及对应的学号,姓名,成绩,并把每一个学生的成绩累加。
第三步:计算平均值,并判断输入的成绩与平均值的比较,输出低于平均值成绩的姓名以及成绩。
(2)流程图
2.实验代码
#include<stdio.h> struct student{ int num; char name[10]; int grade; }; int main() { int N,i=0,num=0; float aver=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); num=num+p->grade; } if(N==0) aver=0; else aver=num/(N*1.0); printf("%.2f\n",aver); p=s; for(i=0;i<N;i++,p++) { if(p->grade<aver) printf("%s %.5d\n",p->name,p->num); } }
3.本题调试过程碰到问题及解决办法
错误:打印出的数是乱码;
解决方法:代码中含有两个循环体,而p在第一个循环中最终指向最后一个的地址,所以需要在第二个循环钱加上p=s这种语句。
要求三、学习总结和进度
1.
2.截图:
git地址:https://git.coding.net/hezongyan321/text.git