一、PTA實驗作業
1.
1.代碼
int num, i;
double hight ,perfect;
char sex; /*hight為用戶的身高,num為要測試用戶的數量,perfect為測試用戶的情侶最佳身高,sex為用戶性別*/
i=1;
scanf("%d",&num);
getchar();
while(i<=num){
scanf("%c%lf",&sex,&hight);
getchar();
if(sex=='M'){
perfect=hight/1.09;
printf("%.2f\n",perfect);}
else{
perfect=hight*1.09;
printf("%.2f\n",perfect);
}
i++;
}
2.設計思路
- (1)定義用戶數量為num,每一個用戶身高為hight,用戶情侶最佳身高為perfect,用戶性別為sex,第某個用戶為i
- (2)輸入num,並輸入一個字符以確保滿足題意輸入要求。
- (3)輸入某個用戶性別和身高並輸入一個字符以確保輸入不受影響。
- (4)如果sex=M則perfect=hight/1.09並輸出perfect。
- (5)如果sex=F則perfect=hight*1.09並輸出perfect。
- (6)i=i+1,控制循環。
- (7)當i<=num,重復步驟3.
3.調試問題
這個程序的問題就時F無法進入自己的分支反而去了M的分支,而sex[N]好像變成了一個定值,目前還未解決希望到數組那邊可以解決。
4.PTA提交列表
2.
1.代碼
int a,n,i=1,s=0,c;/*a為1個a,2個a...n個a的值,n為要求n個a的和的寬度,s為累加和*/
scanf("%d%d",&a,&n);
c=a;
for(i=1;i<=n;i++){
s= a+s;
a=a+c*pow(10,i);
}
printf("s = %d",s);
return 0;
2.設計思路
- (1)根據題目要求定義n和a和累加和為s並賦予s初值為s=0,定義c保存a的數值。
- (2)輸入a和n。
- (3)將a的值賦予c。i=1。
- (4)s=a+s進行s的累加累加。
- (5)改變a的值即將原本的a加上c(儲存a的初始值)的i次方得到新的值,並i++控制循環。
- (6)當i<=n時重復步驟4。
- (7)根據題目要求輸出累加結果。
3.調試問題
無錯誤
4.PTA提交列表
3.
1.代碼
int n,i=1;
double min=0,s;
scanf("%d",&n);/*n為n個數量的數據,min為n個數據中的最小值,s為每一個數據。*/
getchar();
scanf("%lf",&s);
getchar();
min=s ;
for(i=1;i<n;i++){
if(min>s){
min=s;}
scanf("%lf",&s);
getchar();
}
printf("min = %.0f",min);
2.設計思路
- (1)定義輸入的數字個數為n最小值為min並賦予初值為0,每一個數值為s,和控制循環變量為i
- (2)輸入n,getchar()在這里可有可無,輸入一個量,並另min=s,i=1
- (3)當min>s時,將s的值賦予min.
- (4)輸入一個s同樣后面的getchar()可以省略,i++控制循環。
- (5)當i<n時重復步驟3
- (6)根據題目要求輸出。
3.調試問題
我已經將s賦值了第一個-2可s 的值還是0
4.PTA提交列表
4.
1.代碼
int N,yournumber,i=1,number;/*N為可以猜測的次數,yournumber為你所猜的數,number為所要猜的數*/
scanf("%d%d",&number,&N);
getchar();
while(N>=i){
scanf("%d",&yournumber);
getchar();
if(yournumber>number){
printf("Too big\n");
}
else if(yournumber==number){
if(i==1){
printf("Bingo!\n"); break;}
else if(i>=4){
printf("Good Guess!\n");break; }
else {
printf("Lucky You!\n");break
;}
}
else if (yournumber<=0){
printf("Game Over\n");break;
}
else {printf("Too small\n");}
i++;
}
if(yournumber>=0&&yournumber!=number)printf("Game Over\n");
2.設計思路
- (1)定義可輸入的次數為N,你猜的數字為yournumber,循環控制變量為i並賦初值為1,要猜的數字為number。
- (2)輸入要猜的數字為number,能猜的次數。getchar可省略
- (3)輸入一個你猜的數字。getchar可省略。當所猜的數字為負數時,輸出Game over直接跳出程序.
- (4)當yournumber>mynumber時,輸出Too big並轉行
- (5)當yournumber等於mynumber時進入次分支,當i等於1時輸出Bingo!並轉行,同時跳出程序,當i>=4時輸出Good Guess!並轉行,同時跳出程序,當4>i>=1時輸出Lucky You!並轉行,同時跳出程序。
- (6)當yournumber<mynumber時,輸出Too smal並轉行。
- (7)i++,控制循環。
- (8)當N>=i時重復步驟3.
- (9)當yournumber>=0同時yournumber不等於mynumber時輸出Game over。
3.調試問題
提示時顯示直接跳出錯誤自己在Dev上嘗試會有兩個Game over 后來發現在if中添加一個條件可以避免這種情況。這題我並未調試。
4.PTA提交列表
二、截圖本周題目集的PTA提交列表及最后排名。
PTA排名
三、本周學習總結
1.你學會了什么?
學習到了循環語句的使用和循環語句的嵌套使用也學會了調試,這對我程序的錯誤的糾正非常有意義,而且本周也把if-else語句的使用進行了牢固總結,是一個重大突破。
現在對getchar的理解是當有字符型數據的時候進行考慮沒有的時候可以不用使用。
2.本周的內容,你還不會什么?
大部分會就不太懂getchar()的使用要在什么時候,還有就是后面所學的數組也是很迷糊,希望在未來能夠在學習到數組時可以改正。