作業要求二(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