C語言第六次作業


(一)改錯題
序列求和:輸入一個正實數eps,計算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... ,精確到最后一項的絕對值小於eps(保留6位小數)。
  輸入輸出樣例:
  Input eps:1E-4
  s = 0.835699
1錯誤信息:

錯誤原因:do。。while()少;
改正方法:在while()后加;
2錯誤信息:

錯誤原因;item < eps第一次就輸出了
改正方法:item>=eps
3錯誤信息: item = 1/ n
錯誤原因:沒有轉化為double
改正方法:item =1.0/n
4錯誤信息:

錯誤原因:沒有加上最后一項
改正方法:在循環結束后加一句item = 1/ n; s = s + flag * item;
(二)學習總結
1.語句while(1)和for(;;)是什么意思?,如何保證這種循環能正常執行?
前者是無限循環;或者是有限循環;條件合理,循環加大括號

2.一般情況下,設計循環結構時,使用for、while、do while三種語句都可以,並且三種語句可以相互轉換,但是,在某些特定情況下,我們應該優先選擇某種語句來快速實現循環設計。如果有如下情況:
(1)循環次數已知
while循環
(2)循環次數未知,但循環條件在進入循環時明確
for循環
(3)循環次數未知,且循環條件在進入循環時未知,需要在循環體中明確
do while循環
針對上面三種情況,分別采用什么循環語句實現比較好?對每種情況,用我們完成的兩次循環結構作業中的題目加以說明。
for循環

while循環

do while

3.有如下問題:輸入一批學生成績,以-1作為結束,計算學生的平均成績。
要求分別用for語句、while語句、do while語句三種循環語句實現,並說明你認為哪種形式更合適?
for(;n!= -1;);while(n!= -1);do。。。while(n!= -1);因為不知道循環次數for不能選,因為不知道是否第一次是不是-1do。。。while不能選,所以選while
4.運行下面程序,輸入1到10,結果分別是什么?為什么?


break是跳出循環;continue是跳出本次循環。
(三)實驗總結
本次實驗總結,完成循環結構(2)中的1、2、3題。
1(1)題目
計算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一項的絕對值不大於給定精度eps。
(2)流程圖

(3)源代碼

include <stdio.h>

include <math.h>

int main()
{
int i = 1;
double sum = 0.0,eps = 0.0;

scanf("%lf",&eps);
while(fabs(1.0/i) > eps)
{
	sum = sum+1.0/i;
	i = pow(-1,i)*(fabs(i)+3);
}
sum = sum+1.0/i;
printf("sum = %.6f",sum);

return 0;

}
(4)實驗分析:忘記加最后的數
(5)pta提交

2(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<stdio.h>

int main()
{
int m,n;
scanf("%d%d",&m,&n);
int num;
int s=0;
while(scanf("%d",&num)!=EOF)
{
s=s+1;
if(s>n||num<0)
{
printf("Game Over\n");
break;
}
else
{
if(num>m)printf("Too big\n");
else if(num<m)printf("Too small\n");
else if(numm&&s1)
{
printf("Bingo!\n");
break;
}
else if(num==m&&s<=3)
{
printf("Lucky You!\n");
break;
}
else
{
printf("Good Guess!\n");
break;
}
}
}
return 0;
}
(4)實驗分析:循環和選擇嵌套滾亂大括號不全
(5)pta提交

3(1)題目
本題要求計算給定的一系列正整數中奇數的和。
(2)流程圖

(3)源代碼

include <stdio.h>

int main()
{
int x,sum = 0;
do
{
scanf("%d",&x);
if(x%2)
{
sum = sum + x;
}

}while(x > 0);
x = -x;
if(x%2)
{
	sum = sum + x;
	printf("%d",sum);
}
else
{
	sum = sum;
	printf("%d",sum);
}



return 0;

}
(4)實驗分析:無
(5)pta提交

(四)博客互評
每個同學至少評論三篇其他同學的博客作業,依次列出你所評論的博客地址。對於同學對你的博客作業提出的問題,應積極進行回答,存在的錯誤應及時改正。希望大家能夠在互評的過程中取長補短,共同進步。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM