標籤:迴圈 條件 圖片 win src 正整數 scanf 編寫 sum
(一)改錯題
1、錯誤資訊:
錯誤原因:do while的形式錯了
改正方法:while( item < eps)後加上分號 。
2、錯誤資訊:
錯誤原因:最後一項的絕對值小於eps結束,要想要迴圈進行應該>=eps
改正方法:把item < eps改成item>=eps.
3、錯誤資訊:
錯誤原因:item定義得是double類型
改正方法:把1改成1.0
4、錯誤資訊:
錯誤原因:item定義得是double類型
改正方法:輸入把%f改成%lf.
(二)學習總結
1.while(1)和for(;;)是無限迴圈,用break.
2.(1)迴圈次數已知,用for語句。
(2)迴圈次數未知,但迴圈條件在進入迴圈時明確,用while語句。
(3)迴圈次數未知,且迴圈條件在進入迴圈時未知,需要在迴圈體中明確,用do while語句。
3.(1)for語句
#include <stdio.h> int main(void){ int n,i,sum; double average; sum=0; i=1; scanf("%d",&n); for(; ;) { if(n!=-1) { sum=sum+n; i++; } else { break; } scanf("%d",&n); } average=(double)sum/i; printf("%f",average); return 0;}
(2)while語句
#include <stdio.h>int main(void){ int n,i,sum; double average; n=0; sum=0; i=0; while(n!=-1) { scanf("%d",&n); sum=sum+n; i++; } average=(double)sum/i; printf("%f",average); return 0;}
(3)do while語句
#include <stdio.h>int main(void){ int n,sum,i; double average ; sum=0; i=1; scanf("%d",&n); do { sum=sum+n; i++; scanf("%d",&n); }while(n!=-1); average=(double)sum/i; printf("%f",average); return 0;}
4.(1)
break是不符合條件,直接跳出迴圈
(2)
continue是不符合條件,結束本次迴圈。
(三)實驗總結
求給定精度的簡單交錯序列部分和
(1)題目
本題要求編寫程式,計算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最後一項的絕對值不大於給定精度eps。
(2)流程圖
(3)原始碼
include include int main(void)
{
int n;
double eps,sum,b,c;
scanf("%lf",&eps);
n=1;
sum=0;
c=1;
if(c<=eps)
{
sum=1;
}
else
{
while(fabs(c)>eps)
{
b=3.0n-2;
c=1.0/bpow(-1,n-1);
sum=sum+c;
n++;
}
}
printf("sum = %f",sum);
return 0;
}
(4)實驗分析
問題1:運行不對
原因:用eps於eps相比較 了
解決辦法:重新定義一個量與eps比較。
(5)本題PTA提交列表
猜數字遊戲
(1)題目
猜數字遊戲是令遊戲機隨機產生一個100以內的正整數,使用者輸入一個數對其進行猜測,需要你編寫程式自動對其與隨機產生的被猜數進行比較,並提示大了(“Too big”),還是小了(“Too small”),相等表示猜到了。如果猜到,則結束程式。程式還要求統計猜的次數,如果1次猜出該數,提示“Bingo!”;如果3次以內猜到該數,則提示“Lucky You!”;如果超過3次但是在N(>3)次以內(包括第N次)猜到該數,則提示“Good Guess!”;如果超過N次都沒有猜到,則提示“Game Over”,並結束程式。如果在到達N次之前,使用者輸入了一個負數,也輸出“Game Over”,並結束程式。
(2)流程圖
(3)原始碼
#include
} else if(i<a) { printf("Too big\n"); } else { if(n==1) { printf("Bingo!\n"); break; } else if(n>1&&n<=3) { printf("Lucky You!\n"); break; } else if(n>3&&n<=N) { printf("Good Guess!\n"); break; } else { printf("Game Over\n"); break; } }
}
return 0;
}
(4)實驗分析
問題1:編譯錯誤
原因:第一個else 就是a=b的意思,我在裡面判斷的時候又寫了一遍a=b.
解決辦法:把b=a去掉
(5)本題PTA提交列表
求奇數和
(1)題目
本題要求計算給定的一系列正整數中奇數的和
(2)流程圖
(3)原始碼
include int main(void)
{
int a,sum;
sum=0;
scanf("%d",&a);
do
{
if(a<0) { break; } else if(a%2!=0) { sum=sum+a; } scanf("%d",&a);
}
while(a>0);
printf("%d",sum);
return 0;
}
(4)實驗分析
問題1:編譯錯誤
原因:while(a>0)後面應該有分號
解決辦法:while(a>0);
(5)本題PTA提交列表
(四)部落格互評
1,姚紀遠:http://www.cnblogs.com/yjy751522356/p/7838296.html
2.王映丹:http://www.cnblogs.com/windsky-1999/p/7838107.html
3.盧玉:http://www.cnblogs.com/luyu0322-/p/7846404.html
c語言第六次作業