要求二
題目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分鍾 | 三種循環語句 |
折線圖

