請將pta做業編程題目的解題思路和調試過程記錄在博客中,每道題目的具體格式以下:c++
6-7 刪除字符串中數字字符git
1.設計思路算法
(1)主要描述題目算法。能夠用文字描述(不容許使用僞代碼),
第一步:定義指針變量p並將s賦值
第二步:利用for循環遍歷數組,if語句完成刪除數字指令編程
第三步:當賦值爲結束字符'\0'時,循環結束數組
(2)流程圖函數
2.實驗代碼學習
void delnum(char *s) { char *p=s; for(;*s;s++) { if(*s>'9'||*s<'0') *p++=*s; } *p='\0'; }
3.本題調試過程碰到問題及解決辦法spa
錯誤信息:
錯誤緣由:字符數組元素未用單引號‘’括起。
改正方法:詢問同窗及查詢課本後,進一步熟悉了字符數組的運用。.net
6-8 統計子串在母串出現的次數設計
1.設計思路
(1)主要描述題目算法。能夠用文字描述(不容許使用僞代碼),
第一步:定義i,n
第二步:建立一個for循環遍歷數組,並在其中利用if語句判斷前三個字符值
2.實驗代碼
int fun(char *str,char *substr) { int n=0,i; for(i=0;*(str+i)!='\0';i++){ if(*(str+i)=='a'&&*(str+i+1)=='s'&&*(str+i+2)=='d') { n++; } } return n; }
3.本題調試過程碰到問題及解決辦法
錯誤信息:
錯誤緣由:語句後缺乏‘;’,而且返回值應該是n。
改正方法:低級錯誤,經過編譯器提示發現並改正。
6-9 字符串中除首尾字符外的其他字符按降序排列
1.設計思路
(1)主要描述題目算法。能夠用文字描述(不容許使用僞代碼),
第一步:定義整形變量i,j,字符型變量t
第二步:套用兩個for循環進行排序
第三步:用if語句比較大小並進行交換
2.實驗代碼
int fun(char *s,int num) { int i,j; char t; for(j=0;j<num-3;j++) for(i=1;i<num-j-2;i++) if(s[i]<s[i+1]) { t=s[i]; s[i]=s[i+1]; s[i+1]=t; } }
3.本題調試過程碰到問題及解決辦法
錯誤信息:無
7-1 輸出學生成績
1.設計思路
(1)主要描述題目算法。能夠用文字描述(不容許使用僞代碼),
第一步:定義所需變量並按要求執行輸入指令
第二步:調用函數,將p中首地址賦最大最小值,以後判斷大小並從新賦值,並用for循環進行數據計算
第三步:使用if語句進行比較大小並輸出
2.實驗代碼
#include <stdio.h> int main() { int i,n; float sum=0,average,max,min; scanf("%d",&n); float *p=(float *)malloc(n); for(i=0;i<n;i++) { scanf("%f",(p+i)); sum+=*(p+i); } min=*(p+0); max=*(p+0); for(i=0;i<n;i++){ if(min>*(p+i)) { min=*(p+i); } if(max<*(p+i)) { max=*(p+i); } } printf("average = %.2f\n",sum/n); printf("max = %.2f\n",max); printf("min = %.2f\n",min); return 0; }
3.本題調試過程碰到問題及解決辦法
錯誤信息:
錯誤緣由:缺乏函數定義 float *p=(float *)malloc(n);
改正方法:經過與同窗交流並查詢書籍得知
7-1 計算職工工資
1.設計思路
(1)主要描述題目算法。能夠用文字描述(不容許使用僞代碼),
第一步:使用結構來表示職員信息
第二步:使用嵌套的結構類型進行結構變量操做
(2)流程圖
2.實驗代碼
# include <stdio.h> struct salary { int num; char name[10]; float a,b,c; double sum; }; int main(void) { int i, n; struct salary s1; scanf ("%d", &n); for (i = 1; i <= n; i++){ scanf ("%s %f %f %f",s1.name,&s1.a,&s1.b,&s1.c); s1.sum = s1.a + s1.b - s1.c; printf("%s %.2lf\n", s1.name,s1.sum); } return 0; }
3.本題調試過程碰到問題及解決辦法
錯誤信息1:
錯誤緣由:輸出指令中sum格式不正確
改正方法:經過編譯器輸出框提示及觀察改正
錯誤信息2:
錯誤緣由:printf應在上一個括號內,未知錯誤致使輸出結果錯誤
改正方法:同窗幫助並指出
7-2 計算平均成績
1.設計思路
(1)主要描述題目算法。能夠用文字描述(不容許使用僞代碼),
第一步:使用結構來表示學生基本信息
第二步:使用嵌套的結構類型進行結構變量操做
2.實驗代碼
#include<stdio.h> struct student{ char num[6]; char name[10]; int grade; }student1[10]; int main() { int n,i; double average=0,sum=0; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%s %s %d",student1[i].num,student1[i].name,&student1[i].grade); sum=sum+student1[i].grade; }average=sum/n; printf("%.2f\n",average); for(i=0;i<n;i++) { if(student1[i].grade<average) printf("%s %s\n",student1[i].name,student1[i].num); } return 0; }
3.本題調試過程碰到問題及解決辦法
錯誤信息:
錯誤緣由:num定義時未設置字節長度
改正方法:對基本概念認知不清淅,詢問室友瞭解
6-1 按等級統計學生成績
1.設計思路
(1)主要描述題目算法。能夠用文字描述(不容許使用僞代碼),
第一步:用else-if條件句分類討論,設定i,j=0進行人數計算
第二步:用指向運算符"->"訪問指針指向的結構成員
(2)流程圖
2.實驗代碼
int set_grade( struct student *p, int n ) { int i,j=0; for(i=0;i<n;i++,p++) { if(p->score <60) { j++; } if((p->score >=85)&&(p->score <=100)) { p->grade = 'A'; } else if((p->score >=70)&&(p->score <=84)) { p->grade = 'B'; } else if((p->score >=60)&&(p->score <=69)) { p->grade = 'C'; }else if((p->score >=0)&&(p->score <=59)) { p->grade = 'D'; } } return j; }
3.本題調試過程碰到問題及解決辦法
錯誤信息1:
錯誤緣由:字符未用 ' ' 括起沒法編譯
改正方法:經過Dev-c++編譯器提示改正
錯誤信息2:
錯誤緣由:if-else條件句不完整
改正方法:用else隔離每個新的條件句使狀況分離
6-2 結構體數組按總分排序
1.設計思路
(1)主要描述題目算法。能夠用文字描述(不容許使用僞代碼),
第一步:引用主函數中結構體,並用兩個for循環和calc函數進行計算及輸入輸出
第二步:用冒泡法排序,並按大小順序進行交換
2.實驗代碼
void calc(struct student *p,int n) { struct student sum; int i,j=0; for(i=0;i<n;i++) { for(j=0;j<3;j++) { (p+i)->sum =(p+i)->sum + (p+i)->score[j]; } } } void sort(struct student *p,int n) { int i,j,k; struct student t; for(i=0;i<n-1;i++) { k=i; for(j=i;j<n;j++) { if(((p+k)->sum)<((p+j)->sum)) { k=j; } } if(k!=i) { t=*(p+i); *(p+i)=*(p+k); *(p+k)=t; } } }
3.本題調試過程碰到問題及解決辦法
錯誤信息:定義t時用了int型發現沒法編譯
改正方法:改用結構體定義t
一、總結兩週裏所學的知識點有哪些學會了?哪些尚未學會?
本章學習告終構、結構類型的通常定義以及如何嵌套使用,結構指針因爲接觸時間較短因此還並未徹底熟練掌握,還須要再之後的做業及練習中繼續努力。
二、將PTA做業的源代碼使用git提交到託管平臺上,要求給出上傳成功截圖和你的git地址。
個人git連接: https://git.coding.net/Downager/180408.git
三、點評3個同窗的本週做業(在做業中給出被點評同窗博客的連接),並邀請3名同窗點評你的做業,無點評做業(你的做業未被3人點評)/或者沒有回覆同窗或老師的點評都倒扣該題分數。
豐大爲:https://home.cnblogs.com/u/DavidPark/
孫銘婧:http://www.cnblogs.com/sun031915/
吳曉明:https://home.cnblogs.com/u/gu-an-cheng-wxm/
四、請用表格和折線圖呈現你本週(3/26 8:00~4/9 8:00)的代碼行數和所用時間、博客字數和所用時間