要求二
題目7-3 求交錯序列前N項和
一,實驗代碼
#include<stdio.h> int main(){ int i,N,flag=1; double sum; scanf("%d",&N); sum=0; for(i=1;i<=N;i++){ sum=sum+flag*i*1.0/(2*i-1); flag=-flag; } printf("%.3f",sum); return 0; }
二,設計思路
1.根據題意定義變量,分別是整型變量i,N(輸入數據的個數),flag(需初始化),浮點型變量sum(前N項和)。
2.理解題意,需要用循環結構,並確定循環體的計算公式:sum=sum+flag*i*1.0/(2*i-1);flag=-flag。
3.輸入數據,先進行判斷,若i<=N,就執行sum=sum+flag*i*1.0/(2*i-1);flag=-flag循環。例如:輸入5,就循環5次。
4.輸出計算結果。
三,流程圖
四,遇到的問題及解決方法
(本圖為課件截圖)
此題老師上課講過同類型的,所以課下再做沒有遇到大問題。
五,運行結果截圖
六,提交列表
(答案錯誤是由於flag沒有初始化)
題目7-5統計學生平均成績及及格人數
一,實驗代碼
#include<stdio.h> int main() { int n,i,a,count=0; float sum=0,average; scanf("%d\n",&n); if(n!=0) { for(i=1;i<=n;i++) { scanf("%d",&a); sum+=a; if(a>=60) count++; } average=sum/n; printf("average = %.1f\n",average); printf("count = %d\n",count); } else { printf("average = %.1f\n",0.0); printf("count = %d\n",0); } return 0; }
二,設計思路
1.根據題意定義變量,分別是整型變量n(學生人數),i,a(學生成績),count(及格人數);浮點型變量sum(成績總和),average(平均成績)。
2.理解題意,需用到判斷和循環兩種結構,即if-else結構和for語句,並確定循環體scanf("%d",&a);sum+=a;if(a>=60),count++;和其他計算公式:average=sum/n。
3.輸入數據n,和相應個數的學生成績,進行判斷:若n不等於0,且i<=n,則執行sum+=a,在進行判斷,若a>=60,則執行count++,然后進行循環,循環結束后計算出平均成績;若n=0,則輸出平均值等於0,及格
人 數等於0。
4.輸出最終計算結果。
三,流程圖
四,遇到的問題及解決方法
遇到的問題:在編譯器中編譯沒有任何問題,但在pta上提交就一直是答案錯誤。
錯誤截圖
解決方法:在dev-c++中調試並沒有發現錯誤,就私下問老師,得知程序中沒有考慮到n=0的情況,加上這一條件后答案就正確了。
五,運行結果截圖
六,提交列表
(錯誤原因是由於沒有考慮到n=0和a<60這兩種情況)
附加題:
7-2 統計字符
一:實驗代碼
#include<stdio.h> int main(){ char a; int i,letter=0,blank=0,digit=0,other=0; for(i=1;i<=10;i++){ scanf("%c",&a); if(65<=a&&a<=90||97<=a&&a<=122) letter++; if(a==' '||a=='\n') blank++; if(48<=a&&a<=57) digit++; } other=10-(letter+blank+digit); printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other); return 0; }
二:設計思路
a,根據題意定義變量,分別是字符型變量c,整型變量letter,blank,digit,other,i.
b,理解題意,本題需要用到判斷和循環兩種境結構,而且本題使用for循環更好,程序比較簡潔;然后確定相應的判斷條件和循環體語句,例如:
for(i=1;i<=10;i++){
scanf("%c",&a);
if(65<=a&&a<=90||97<=a&&a<=122)
letter++;
c,輸入字符和數字,在不同的判斷條件下逐一進行判斷,然后循環,直到所有輸入的內容都運行結束。
d,輸出統計結果。
三:遇到的問題及解決方法
遇到的問題:提交時總是遇到答案錯誤這種情況。
錯誤截圖
解決方法:先根據錯誤提示自行修改,然而只改對了一部分,就問做對的同學,將所有的情況都考慮進去,將字符用ASSC碼代替,再提交就成功了。
四:提交列表
五:運行結果圖
7-2 求給定精度的簡單交錯序列部分和
一:實驗代碼
#include<stdio.h> int main(){ int i,N,flag=1; double sum; scanf("%d",&N); sum=0; for(i=1;i<=N;i++){ sum=sum+flag*i*1.0/(3*i-2); flag=-flag; } printf("sum = %.6f",sum); return 0; }
二:設計思路
a,根據題意定義變量,分別是整型變量i,N,flag;浮點型變量sum.
b,理解題意確定要用的結構類型為循環結構中的for循環,並確定相應的循環體
sum=sum+flag*i*1.0/(3*i-2);
flag=-flag;
c,輸入數值,先進行判斷,再根據計算公式進行計算,最后進行循環,直到結束運行。
d,輸出運算結果sum。
三:遇到的問題及解決方法
遇到的問題:編譯並沒有錯誤,但是輸出的結果與題目要求的並不符合。
錯誤截圖
解決方法:自己看程序並沒有找到錯誤,進行單步調試也沒發現有什么錯,於是就從網上找了答案,然后再對答案進行分析。
四:流程圖
五:提交列表
7-3 單詞長度
一:實驗代碼
#include<stdio.h> int main (void) { char c; int count=0; int flag=0; scanf("%c",&c); while(c != '.'){ if(c==' '){ if(count !=0){ if(flag) printf(" %d",count); else{ printf("%d",count); flag=1; } } count=0; } else{ count++; } scanf("%c",&c); } if(count!=0 && c=='.') if(flag==0) printf("%d",count); else{ printf(" %d",count); flag=1; } return 0; }
二:流程圖
三:提交列表
要求三
上傳文件截圖
GIT地址:https://git.coding.net/Hunjunxian/juhao.git
https://git.coding.net/Hunjunxian/zuoye.git
要求四
個人總結
1.本周主要學習了循環結構,其中包括三種語句,分別是:while,do-while,for。三者的區別在於while語句是先判斷在執行;do-while語句是先執行一次再判斷,即至少執行一次循環語句;for語句最為靈活簡潔,一般可以取代while語句。
2.學習難點就是循環體運算公式的確定和如何控制循環的結束。
3.不明白的知識點:對於如何控制循環結束這一塊不是很明白,老師講的例子就沒怎么聽懂
4.本周作業中出現的主要問題是對於for循環語句的使用不熟練,在確定循環體時會出現各種錯誤。
要求五
學習進度與互評
我評價的博客
何宗彥:http://www.cnblogs.com/hezongyan/
陳雨秋:http://www.cnblogs.com/cyq66992152/
姚爽:http://www.cnblogs.com/yaoshuang/
學習進度條
日期 | 代碼行數 | 時間1 | 博客字數 | 時間2 | 知識點 |
2017.11.13 | 135 | 共6小時左右 | 約400 | 45分鍾 | 三種循環語句 |
折線圖