C語言第三次博客作業---單層循環結構


一、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()的使用要在什么時候,還有就是后面所學的數組也是很迷糊,希望在未來能夠在學習到數組時可以改正。


免責聲明!

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



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