第三次作业

作业要求二(60分)
请将pta作业编程题目的1和2解题思路和调试过程记录在博客中。

题目1查找书籍中最高价及最低价

1 设计思路
(1)主要描述题目算法
第一步:考虑问题:给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。

第二步:给定n本书的名称和定价,首先要利用结构体,把书的名称和定价定义在结构体中。

第三步:在主函数中调用结构体,把需要的信息调用出来。

第四步:利用for循环语句,if判断语句,对结构体中每一个数据进行判断。

第五步:利用printf语句,将最高和最低的书的名称和定价,分别输出。

(2)流程图

 


2.实验代码

 1 #include<stdio.h>  
 2 #include<string.h>  
 3 struct book{  
 4     char name[31];  
 5     double price;     
 6 }b[10];  
 7 int main(){  
 8     int n,i,j,mini=0,maxi=0;  
 9     double min=1000000,max=-1;  
10     scanf("%d",&n);  
11     for(i=0;i<n;i++){  
12         scanf("\n");  
13         gets(b[i].name);  
14         scanf("%lf",&b[i].price);  
15         if(b[i].price>max){  
16             max=b[i].price;  
17             maxi=i;  
18         }  
19         if(b[i].price<min){  
20             min=b[i].price;  
21             mini=i;  
22         }   
23     }  
24     printf("%.2lf, %s\n",b[maxi].price,b[maxi].name);  
25     printf("%.2lf, %s\n",b[mini].price,b[mini].name);  
26     return 0;  

 



3.本题调试过程碰到问题及解决办法
 错误信息1:


   错误原因:在定义结构体中出现了问题
   改正方法:在一个结构体定义结束后,应该加分号。
 错误信息2:


   错误原因:和pta中预计输出的答案不一样
   改正方法:多输出了一条语句  scanf("\n");

 题目1计算平均成绩

1 设计思路
(1)主要描述题目算法
第一步:考虑问题:给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和成绩([0,100]区间内的整数),要求计算他们的平均成绩,并顺序输出平均线以下的学生名单。

第二步:给定N个学生的基本信息,包括学号、姓名成绩,首先要利用结构体,把学生的学号、姓名成绩定义在结构体中。

第三步:在主函数中调用结构体,把需要的信息调用出来。

第四步:利用for循环语句,if判断语句,对结构体中每一个数据进行判断。

第五步:利用printf语句,将学生的平均成绩输出并顺序输出平均线以下的学生名单。

(2)流程图

 

2.实验代码

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 struct student
 5 {
 6   int num;
 7   char name[10];
 8   int score;
 9 };
10 int main()
11 {
12   int n,i=0,num=0;   
13   float average = 0;
14   scanf("%d",&n);
15   struct student s[n],*p;
16   p=s;
17   for(i=0;i<n;i++,p++)
18   {
19   scanf("%d%s%d",&p->num,&p->name,&p->score);
20   num=num+p->score;
21   }
22  
23     if(n==0)
24     average=0;
25     else
26     average=num/(n*1.0);
27     printf("%.2f\n",average);
28     p=s;
29     for(i=0;i<n;i++,p++)
30   {
31       if(p->score<average)
32       printf("%s %.5d\n",p->name,p->num);
33   }
34   return 0;
35 }

 

3.本题调试过程碰到问题及解决办法
 错误信息1:


   错误原因:没有按照PTA的样式输出
   改正方法:将average定义成float型并输出时保留两位小数,具体语句如下:printf("%.2f\n",average);
 错误信息2:


   错误原因:没有按照PTA的样式输出
   改正方法:将printf("%s d\n",p->name,p->num);改成printf("%s %.5d\n",p->name,p->num);

 

要求三、学习总结和进度(20分)
1、指针与结构作业中题目所使用的知识点。

结构体指针

1.指向结构体的指针称为结构体指针,结构体指针变量也是指针变量,和普通指针变量的唯一区别就是这个指针指向的是一种结构体变量或结构数组。

2.结构体指针的定义分为三种形式:一是先定义结构体,后定义结构体指针。二是在定义结构体的同时定义结构体指针。

                                                       三是直接定义结构体指针。一般形式:struct  结构体名*结构体指针变量名;

3.结构体指针的引用:(1)使用结构体指针变量指向结构体变量或结构型数组 :①结构体指针变量=&结构体变量;

                                                                                                                  ②结构体指针变量=&结构体数组[下标];

                                                                                                                 ③结构体指针变量=结构体数组名+下标;

                                                                                                                  ④结构体指针变量=结构体数组名+下标;

                                  (2)指向结构体变量或数组元素的指针变量的引用   p1=&stu1;

                                  (3)指向结构体数组首地址的指针变量引用      p2=stu;

                                  (4)使用指向结构体数组首地址的指针变量引用其成员;(结构体指针变量+下标)-->成员名
2、将PTA作业的源代码使用git提交到托管平台上,要求给出上传成功截图和你的git地址。请注意git地址应是类似“https://git.coding.net/Dawnfox/wf4_2.git”这样的字符串且是可被访问者直接点击进行访问的链接。

https://coding.net/u/zhangle1234567/p/zhangle2018demo3/git/tree/master/?public=true

posted @ 2018-04-21 22:08  张乐五班  阅读(1493)  评论(0编辑  收藏  举报