一、PTA實驗作業
題目1
專家通過多組情侶研究數據發現,最佳的情侶身高差遵循着一個公式:(女方的身高)×1.09 =(男方的身高)。如果符合,你倆的身高差不管是牽手、擁抱、接吻,都是最和諧的差度。
下面就請你寫個程序,為任意一位用戶計算他/她的情侶的最佳身高。
1.實驗代碼
int i,n;
double man,women;
char sex;
scanf("%d\n",&n);
for(i=1;i<=n;i++){
scanf("%c",&sex);
if(sex=='M'){
scanf("%lf\n",&man);
women=man/1.09;
printf("%.2f\n",women);
}
if(sex=='F'){
scanf("%lf\n",&women);
man=women*1.09;
printf("%.2f\n",man);
}
}
return 0;
2.設計思路
1.定義兩個整型變量i,n,兩個雙精度浮點型變量man,women,一個字符型變量sex,輸入n;
2.當i<n時,執行循環:輸入sex,當sex=M時,輸入男性身高,women=man/1.09,輸出女性身高;當sex=F時,輸入女性身高,man=women*1.09,輸出男性身高;
3.當i>=n,結束循環。
3.本題調試過程碰到問題及解決辦法
剛剛開始for的條件里用的逗號,改為分號后就沒什么問題了。。
4.本題PTA提交列表
題目2
給定兩個均不超過9的正整數a和n,要求編寫程序求a+aa+aaa++⋯+aa⋯a(n個a)之和。
1.實驗代碼
int a,t,n,i,sum;
scanf("%d%d",&a,&n);
sum=0,t=0;
for(i=1;i<=n;i++){
t=t*10+a;
sum=sum+t;
}
printf("s = %d",sum);
2.實驗思路
1.定義五個整形變量a,t,n,i,sum,將0賦給sum、t,輸入a,n;
2.當i<=n時,執行循環:t=t*10+a,sum=sum+t;
3.當i>n時,結束循環,輸出sum。
3.本題調試過程碰到問題及解決辦法
本來用的a=a10+a來表示aaa...的,但是發現輸出的數字不對,調試后發現了問題,於是采用了t=t10+a來代替a=a*10+a,問題得到解決。
4.本題提交列表
題目3
本題要求編寫程序,找出給定一系列整數中的最小值
1.實驗代碼
int n,i,number,min;
scanf("%d%d",&n,&number);
min=number;
for(i=1;i<=n;i++){
scanf("%d",&number);
if(min>number)
min=number;
}
printf("min = %d\n",min);
2.實驗思路
1.定義四個整型變量i,n,number,min,輸入n,number的值,min=number;
2.當i<=n,執行循環:輸入一個數值,當min>number,min=number;
3.當i>n,結束循環,輸出min。
3.本題調試過程碰到問題及解決辦法
剛剛看到題目沒什么思路,不知道怎么確定最小值,想了很久用了將更小值賦給min的方法,問題解決。
4.本題提交列表
題目4
猜數字游戲是令游戲機隨機產生一個100以內的正整數,用戶輸入一個數對其進行猜測,需要你編寫程序自動對其與隨機產生的被猜數進行比較,並提示大了(“Too big”),還是小了(“Too small”),相等表示猜到了。如果猜到,則結束程序。程序還要求統計猜的次數,如果1次猜出該數,提示“Bingo!”;如果3次以內猜到該數,則提示“Lucky You!”;如果超過3次但是在N(>3)次以內(包括第N次)猜到該數,則提示“Good Guess!”;如果超過N次都沒有猜到,則提示“Game Over”,並結束程序。如果在到達N次之前,用戶輸入了一個負數,也輸出“Game Over”,並結束程序。
1.實驗代碼
int N,count,mynumber,yournumber;
scanf("%d%d",&mynumber,&N);
count=0;
do {
count++;
scanf("%d",&yournumber);
if(yournumber<0){
break;
}
else if(yournumber<mynumber){
printf("Too small\n");
}
else if(yournumber>mynumber){
printf("Too big\n");
}
else
break;
}
while(yournumber>=0);
if(yournumber>=0){
switch(count){
case 1:
printf("Bingo!");
break;
case 2:
case 3:
printf("Lucky You!");
break;
}
}
if (count>3&&count<=N){
printf("Good Guess!");
}
else if(count>N){
printf("Game Over");
} else if(yournumber<0){
printf("Game Over");
}
2.實驗思路
1.定義四個整型變量N,count,mynumber,yournumber,輸入N和mynumber的值;
2.用do while語句,每輸入一次count加一,用if語句判斷並輸出所猜數與隨機數的比較結果;
3.重復第三步,直至用戶猜數小於0.結束循環;
4.用switch、case語句輸出當count分別等於1,2,3是的判斷結果;
5.當count>3且count<=N時,輸出Good Guess!;
6.當輸入次數大於3小於等於N時,輸出Good Guess!
7.當輸入次數大於N時,輸出Game Over;
8.當用戶猜數小於0時,輸出Game Over。
3.本題調試過程碰到問題及解決辦法
開始覺得跟書上的猜數游戲有點像,可是研究了很久還是沒思路,最后求助同學了。。。
4.本題提交列表
二、截圖本周題目集的PTA最后排名
1.PTA提交列表
2.PTA排名
三、本周學習總結
1.你學會了什么?
學會了for循環語句,學會了break跟continue的不同,還學會了while語句和do while語句,以及兩者的差別,還學會了如何通過調試程序尋出錯誤。
2.你還不會什么?
多個數值的輸入輸出還只能一個一個來,不懂得怎么一次輸入並判斷然后輸出多個數值。
很多題目看了都沒有思路,腦子一團亂,思維不夠靈活。。
3.分支結構上機考試總結
對於絕對值對數等函數記得不清晰;第三題的情況考慮的不夠清楚,將十二點歸於上午了。