一、PTA實驗作業
題目1
1.實驗代碼
#include<stdio.h>
int main()
{
int i,N;//N表示查詢的用戶數
double height1,height2;//height1表示該用戶的身高,height2表示該用戶的最佳情侶身高
char ch;
(N>0&&N<=10);
(height1>=1.0&&height1<=3.0);
scanf("%d",&N);//輸入用戶數
scanf("%c %lf\n",&ch,&height1);//輸入性別和身高
for(i=1;i<=N;i++){
scanf(" %c %lf",&ch,&height1);
switch(ch){
case 'M':height2=height1/1.09;break;//查詢用戶為男性時
case 'F':height2=height1*1.09;break;//查詢用戶為女性時
}
printf("%.2lf\n",height2);//輸出最佳情侶身高
}
2.設計思路
-第一步:定義整型變量i,N;定義浮點型變量height1,height2;定義字符型變量ch
-第二步:給出N的范圍為(0,10],身高的范圍為[1.0,3.0]
-第三步:輸入用戶數、性別和身高
-第四步:當i<=N時進入循環,如果用戶為男性:height2=height1/1.09,如果用戶為女性:height2=height1*1.09
-第五步:i=i+1;
-第六步:重復步驟3、4、5直到i>N時結束循環,輸出height2
3.本題調試過程碰到問題及解決辦法



兩次查詢輸出的最佳情侶身高都是第一個用戶的最佳情侶身高,利用dev c++調試時發現第二次進入不了switch語句,經過仔細思考后,知道了是因為回車被當成了第二次的字符型變量,在for循環體的scanf語句中(" %c %lf",&ch,&height1)的%c前面加上空格后,問題得到了解決
4.本題PTA提交列表

題目2
1.實驗代碼
int i,a,n,s,item,sum;//i表示循環的次數,n表示一個數最多有n個a,item表示每次不同的a數列,sum表示總和
(a>0&&a<9);//給出a的取值范圍
(n>0&&n<9);//給出n的取值范圍
s=0;
item=0;
sum=0;
scanf("%d %d",&a,&n);
for(i=1;i<=n;i++){
item=a+item*10;//表示每次不同的a數列
sum=sum+item;//將數列累加起來
}
printf("s = %d",sum);//輸出總和
2.設計思路
-第一步:定義整型變量i,a,n,s,item,sum
-第二步:給出a,n的取值范圍(0,9)
-第三步:s=0,item=0,sum=0
-第四步:輸入a,n的值
-第五步:當i小於n時進入循環,item=a+item*10;sum=sum+item;
-第六步:重復步驟5,直到i>n時結束循環
-第七步:輸出總和
3.本題調試過程碰到問題及解決辦法
一開始沒有思路要如何實現輸出a,aa,aaa這種形式的數字,后來想到老師布置的作業中有一題類似的題目
由此得到啟發
4.本題PTA提交列表

題目3
1.實驗代碼
int n,number,min,i;//n表示輸入的正整數個數,number表示輸入的正整數,min代表最小值,i表示循環次數
scanf("%d",&n);//輸入n的值
scanf("%d",&number);//輸入正整數
min=number;
i=1;
while(i<n){
scanf("%d",&number);
if(min>number)
{
min=number;
}
i++;
}
printf("min = %d",min);//輸出最小值
2.設計思路
-第一步:定義整型變量i,n,number,min
-第二步:輸入n和正整數number的值
-第三步:min=mark,i=1
-第四步:當i小於n時,進入循環,輸入下一個正整數的值,如果min>number,那么min=number
-第五步:i=i+1
-第六步:重復步驟4、5,直到i>n時結束循環
-第七步:輸出最小值min
3.本題調試過程碰到問題及解決辦法




4.本題PTA提交列表

題目4
1.實驗代碼
int mynumber,yournumber,count,N;//定義整型變量
scanf("%d %d",&mynumber,&N);//輸入被猜數和被猜的最大次數
(N>3);
count=1;
scanf("%d",&yournumber);//輸入猜測的數字
while(yournumber>0){
if(yournumber==mynumber&&count==1){
printf("Bingo!");break;
}
else if(yournumber==mynumber&&count<=3) {
printf("Lucky You!") ;break;
}
else if(yournumber==mynumber&&count>3&&count<=N){
printf("Good Guess!");break;
}
else if(yournumber==mynumber&&count>3&&count>N){
printf("Game Over");break;
}
else if(yournumber>mynumber){
printf("Too big\n");
count++;
}
else if(yournumber<mynumber){
printf("Too small\n");
count++;
}
scanf("%d",&yournumber);
}
if(yournumber<0){
printf("Game Over");
}
2.設計思路
-第一步:定義整型變量yournumber,mynumber,count,N
-第二步:輸入mynumber和N(猜測的最大次數),給出N的取值范圍N>3
-第三步:賦值count=1
-第四步:輸入yournumber
--第五步:當yournumber>0,進入第六步
-第六步:如果yournumbermynumber,count=1時,輸出Bingo!,結束循環
-第七步:否則如果yournumbermynumber,count<=3時,輸出Lucky You!,結束循環
-第八步:否則如果yournumbermynumber,count>3並且count<=N時,輸出Good Guess!,結束循環
-第九步:否則如果yournumbermynumber,count>3並且count>N時,輸出Game Over,結束循環
-第十步:否則如果yournumber>mynumber,輸出Too big,count=count+1,重新進入步驟5
-第十一步:否則如果yournumber<mynumber,輸出Too small,count=count+1,重新進入步驟5
-第十二步:如果yournumber<0,輸出Game Over,結束循環
3.本題調試過程碰到問題及解決辦法

在猜對后程序仍然沒有結束,后面發現自己忘了用break中止循環
在所有輸出語句后面都加了\n,提交上去后pta不給過,后面只在Too big和Too small后面加了\n就通過了
這題剛開始用另一種寫法,讓程序自己產生隨機猜數和最大的猜測次數N,調試了好多天,輸入輸出都沒問題,但pta不給過,后面換了本題的這種寫法就可以了
4.本題PTA提交列表


二、截圖本周題目集的PTA最后排名。

三、本周學習總結
1.你學會了什么?
1.嵌套語句的基本表達語句
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
for(k=1;k<=N;i++)
2.學會了用dev c++調試程序。當程序有錯誤自己又發現不了時,調試是個很有用的方法。但有時候雖然找到了錯誤的地方,卻不知道該如何修改,這是個有點尷尬的問題。
3.循環次數如果確定的話,最好選用for語句,因為它看起來最清晰,當循環次數不確定的時候,選用while語句或do while語句。
2.本周的內容,你還不會什么?
1.循環的題目還不是很會,比如這周作業的猜數字游戲和龜兔賽跑,從周末寫到周四,每一天都在熬夜寫這兩題,每天晚上都在調試找錯誤,改來改去還是錯,弄得心態快崩了,還好堅持了下來,終於把這兩道題做出來了。
2.代碼不夠簡潔,思考還不夠,老是寫得很復雜,有時自己都被繞暈了,在編寫代碼這方面還是要加強自己的能力
3.有時候不確定循環控制條件到底是哪個
