题目1 查找书籍中最高价及最低价
1 设计思路
(1)主要描述题目算法。可以用文字描述(不允许使用伪代码),如:
第一步:定义结构体book,并且对成员分量名字name价格price进行定义。
第二步:定义结构体组a[10],指针p,max,min。
第三步:输入n表示有n本书,利用循环输入书名和价格。
第四步:在循环体中将每本书的价格与最大价格max.price和最小价格min.price比较,如果价格大于max.price就将p.price传给max.price,如果价格小于min就将p.price传给min.price。
第五步:输出最高价格的书名和价格,输出最小价格的书名和价格。
(2)流程图
2.实验代码
#include<stdio.h> #include<stdlib.h> #include<string.h> struct book { char name[31]; double price; }a[10],*p,max,min; int main() { int n,i; scanf("%d",&n); p=&a[0]; for(i=0;i<n;i++,p++) { getchar(); gets(p->name); scanf("%lf",&p->price); } max.price=0; min.price=999999999; p=&a[0]; for(i=0;i<n;i++,p++) { if(p->price>max.price) { max.price=p->price; strcpy(max.name,p->name); } if(p->price<min.price) { min.price=p->price; strcpy(min.name,p->name); } } printf("%.2lf, %s %.2lf, %s",max.price,max.name ,min.price,min.name ); return 0; }
3.本题调试过程碰到问题及解决办法:
本题没有遇到问题。
题目2 计算平均成绩
1 设计思路
(1)主要描述题目算法。可以用文字描述(不允许使用伪代码),如:
第一步:定义结构体,并且将学号、姓名、成绩定义在结构体中。
第二步:利用for循环都学生信息进行输入,然后再次利用循环对学生成绩进行判断。
第三步:输出平均分以及低于平均分的同学的学号、姓名、。
(2)流程图
2.实验代码
#include<stdio.h> struct student{ char num[6]; char name[10]; int score; }s[10]; main(){ int n,i,sum=0; float ave; scanf("%d ",&n); for(i=0;i<n;i++){ scanf("%s %s %d",s[i].num,s[i].name,&s[i].score); sum=sum+s[i].score; } ave=sum*1.00/n*1.00; printf("%.2f ",ave); for(i=0;i<n;i++){ if(s[i].score<ave){ printf("%s %s ",s[i].name,s[i].num); } } return 0; }
3.本题调试过程碰到问题及解决办法
错误信息采用以下格式
错误原因:使用结构体失败。
改正方法:在使用结构之前先定义结构体。
要求三、学习总结和进度
1、指针与结构作业中题目所使用的知识点。
结构体在c中和C++不同
在C中的结构体只能自定义数据类型,结构体中不允许有函数,而C++中的结构体可以加入成员函数。C中的结构体只涉及到数据结构,而不涉及到算法,也就是说在C中数据结构和算法是分离的,而到C++中一类或者一个结构体可以包含函数(这个函数在C++我们通常中称为成员函数),C++中的结构体和类体现了数据结构和算法的结合。
2、将PTA作业的源代码使用git提交到托管平台上。
上传成功截图: