作業要求 :【https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2359】 開頭小結:又經過了幾周的學習,這幾周學習的依然是循環語句,那么來看一看這幾周的難題吧。
第7次作業:7-3 統計學生平均成績與及格人數
實驗代碼:
//本題要求編寫程序,計算學生們的平均成績,並統計及格(成績不低於60分)的人數。題目保證輸入與輸出均在整型范圍內。 //77 54 92 73 60 #include <stdio.h> int main(void) { int i=0,n=0,count=0,sum=0,grade=0; double average=0; scanf("%d",&n); if(n==0){ printf("average = 0.0\n"); printf("count = 0\n"); } else{ for(i=1;i<=n;i++){ scanf("%d",&grade); sum=sum+grade; if(grade>=60){ count++; } } average= sum*1.0/n; printf("average = %.1f\n",average); printf("count = %d",count);} }
解題思路:這道題還是比較簡單的,但是有一些易錯點。
1.首先這道題先定義幾個變量,需要平均成績,輸入的人數,以及及格人數,以及循環需要的i,想求平均成績就需要先加和sum這幾個變量。
2.做這道題還需要考慮當輸入人數為0時會輸出什么,因此需要用到if-else語句來判斷n是否等於0,當等於0時,輸出平均成績0與及格人數0.
3.當n!=0時,這是進入循環,輸入人數,輸入成績,進行計算與統計;
4.最后輸出平均成績與及格人數。
流程圖:
運行結果:
遇到的錯誤:
當輸入n=0時,如果平均成績不是0.0,那么PTA運行結果就是錯的,這跟題里說的保留一位小數有關,錯誤結果如下;
看似是對的,但PTA卻顯示錯誤,正是因為在判斷n是否等於0時的輸出語句average=0而不是0.0;
調試:
經過調試,沒什么錯誤;
第八次作業:7-2 尋找250
第八次作業我選擇了比較有趣的一道題,那就是尋找250,雖然題目簡單,但是符合所學知識,即while語句的循環;
代碼:
#include <stdio.h> int main(void) { int i,num; while(num!=250){ scanf("%d",&num); i++; } printf("%d",i); return 0; }
解題思路:
這道題目的是讓用戶輸入一堆數字,再輸入數字中找到第多少位是250這個數字,並輸出位數;
1.定義變量i,num;
2.開始循環,當num!=250時開始循環,用戶開始輸入數字;
3.當輸入一個不是250的數字,i++;
4.輸出位數;
流程圖:
運行結果:
運行結果沒什么問題
錯誤結果:
因為這道題比較簡單,因此沒什么錯誤;
調試:
經過調試,沒什么錯誤。
第九次作業:7-2 猜數字游戲
這道題思路清晰但是代碼特別復雜,要求特別多,也用到了循環;
代碼:
#include <stdio.h> int main(void) { int mynum=0,yournum=0,n=0,count=0; scanf("%d%d",&mynum,&n); while(mynum>0&&mynum<100){ count++; if(count>n){ printf("Game Over"); break;} scanf("%d",&yournum); if(yournum<0){ printf("Game Over"); break; } else if(yournum>mynum){ printf("Too big\n"); } else if(yournum<mynum){ printf("Too small\n"); } else{ if(count==1) { printf("Bingo!\n"); break;} else if(count>1&&count<=3){ printf("Lucky You!\n"); break;} else(count>3&&count<=n);{ printf("Good Guess!\n"); break; } break; } } return 0; }
解題思路:
1.定義變量,我的數字,你的數字,次數,count;
2.輸入我的數字與輸入次數;
3.如果我的數字>0&&<100進行循環;
4.進行判斷,younum與mynum進行判斷,當輸入一個小於0的數,游戲結束;
5.每輸入一次進行count++;最后比較count與n的的值,進行輸出不同的結果;
流程圖:
運行結果:
調試:
經調試沒什么問題;
總結:
通過幾天的學習,我了解到for循環中先執行前兩條語句,在執行循環體,最后執行for循環的最后一條語句,而while語句則先進行判斷,如果語句為真,則開始循環,為假則進行下一條語句,do-while則先進行循環語句,在進行判斷。
遇到的問題:
循環體有點難以思考,不太好寫,計算素數那道題還是有一些問題;