第三次作業


作業要求https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2360

PTA作業

第十一周 第六次作業 7-4 輸出華氏-攝氏溫度轉換表

題目:輸入2個正整數lower和upper(lower≤upper≤100),請輸出一張取值范圍為[lower,upper]、且每次增加2華氏度的華氏-攝氏溫度轉換表。 溫度轉換的計算公式:C=5×(F−32)/9,其中:C表示攝氏溫度,F表示華氏溫度。

輸入格式:在一行中輸入2個整數,分別表示lower和upper的值,中間用空格分開。

輸出格式:第一行輸出:"fahr celsius" 接着每行輸出一個華氏溫度fahr(整型)與一個攝氏溫度celsius(占據6個字符寬度,靠右對齊,保留1位小數)。 若輸入的范圍不合法,則輸出"Invalid." 

1.實驗代碼

#include<stdio.h>
int main()
{
int lower,fahr,upper;
double celsius;
scanf("%d %d",&lower,&upper);
if(lower<=upper&&upper<=100){
printf("fahr celsius\n");
for(fahr=lower;fahr<=upper;fahr=fahr+2){
celsius=5*(fahr*1.0-32)/9;
printf("%d %5.1f\n",fahr,celsius);}
}
else{
printf("Invalid.");
}
return 0;
}

 2 解題思路

(1)算法: **利用if語句判斷數據。利用for語句實現循環,對華氏溫度在[lower,upper]內的每個值,使用溫度轉換公式計算得出的攝氏溫度。         

        *用if語句判斷輸入數據的合法性,即lower是否小於upper

     *lower小於upper時,進行溫度轉換

        *lower大於upper時,輸出錯誤提示。         

      *溫度轉換:用for語句進行重復轉換,從lower開始,到upper結束,步長為1。         

(2)流程圖:

 

3.本題調試過程碰到問題及解決辦法

(1)錯誤:for語句后加了“;”

(2)有錯誤提示的截圖

   沒有輸出溫度轉換表,而是只輸出一次結果

(3)編譯器設置斷點、單步調試的界面截圖

(4)解決辦法:";"代表空語句,這時循環體為空語句,應刪去“;”,循環體語句才能被正常循環。

 

第十二周 第九次作業 7-2 輸出閏年

題目:輸出21世紀中截止某個年份以來的所有閏年年份。注意:閏年的判別條件是該年年份能被4整除但不能被100整除、或者能被400整除。

輸入格式:輸入在一行中給出21世紀的某個截止年份。

輸出格式:逐行輸出滿足條件的所有閏年年份,即每個年份占一行。輸入若非21世紀的年份則輸出"Invalid year!"。若不存在任何閏年,則輸出“None”。

1.實驗代碼

#include<stdio.h>
int main()
{
  int i,x,n;
  scanf("%d",&n);
  if(n<=2000){
    printf("Invalid year!");
  }
  else if(n<2004){
    printf("None");
  }
  else if(n<=2100){
    for(i = 2004;i<=n;i+=4){
      if(i%100!=0||i%400==0){
        printf("%d\n",i);
      }
      
    }
  }
  else{
    printf("Invalid year!");
  }
    
      return 0;}

2解題思路

(1)算法: **利用else if語句和for語句嵌套實現多分支結構和循環結構        

      *利用else if語句,實現n小於2000,n大於2000小於2004,n大於2004三種情況。

         *n小於2000時,打印“Invalid year!”      

         *n大於2000小於2004時,打印“None”

      *n大於2004時,利用for循環中嵌套if語句的結構判斷n是否是閏年,如果是閏年,就輸出。

(2)流程圖

3.本題調試過程碰到問題及解決辦法

(1)錯誤:if和else配對錯誤。

(2)有錯誤提示的截圖

(3)編譯器設置斷點、單步調試的界面截圖

 

(4)解決辦法:count, sum寫程序時要注意縮進,這樣可以一目了然,避免了不必要的錯誤。

 

第十三周 第十次作業 7-1 統計素數並求和

題目:本題要求統計給定整數M和N區間內素數的個數並對它們求和。

輸入格式:輸入在一行中給出兩個正整數M和N(1≤M≤N≤500)。

輸出格式:在一行中順序輸出M和N區間內素數的個數以及它們的和,數字間以空格分隔。

1.實驗代碼

#include <stdio.h>
int main()
{
 int M,N,sum,count,i,o;
 
 scanf("%d %d",&M,&N);
 
 sum=0;
 count=0;

  for(i=M;i<=N;i++){
                   for(o=2;o<=i/2;o++){
                                       if(i%o==0){
                                                  break;
                                      }
                   }
                   if(o > i/2 && i != 1){
                                         sum=sum+i;
                                         count++;
                   }
 }
 printf("%d %d", count, sum);
 return 0; 
}

2 解題思路

(1)算法: **利用if語句和for語句嵌套實現分支結構和循環結構           

      *利用for語句實現[n,m]區間內每個數字的循環。         

      *第一個for語句中嵌套第二個for語句

     *第二個for語句中嵌套一個if語句,以實現是否為素數的判斷

     *如果不是,跳出循環;如果是,進行下一步。         

      *利用if語句,滿足條件則sum(素數和)加一,count(素數個數)加一。         

(2)流程圖

3.本題調試過程碰到問題及解決辦法

(1)錯誤:將“printf("%d %d", count, sum);”語句錯放在了for語句中,導致每次循環都打印一次count和sum的值。 (2)有錯誤提示的截圖

(3)編譯器設置斷點、單步調試的界面截圖

(4)解決辦法:將“printf("%d %d", count, sum);”語句放在了for語句外面,只打印一次。

 

個人總結

1.本周我學習了的內容:for語句,while語句,do while語句,以及它們和if語句,if else語句,else if語句的相互嵌套    我的收獲:for語句,while語句,do while語句雖然都是用來實現循環的語句,它們有相似的地方,但也有很大區別。循環次數確定時,宜用for語句;循環體至少執行一次時,用do while語句

2.難點: *三種語句形式的區別和正確選擇最合適最簡便的語句         

      *嵌套時語句之間的邏輯關系

     *調試的過程始終不太清楚,操作生疏   

  措施: *多加練習,熟悉三種語句  

      *勤於思考,多動腦  

       *寫程序時要做好縮進,使代碼一目了然,便於檢查

     *求助於身邊的同學,從她們身上我學習到了許多有用的東西

 

累積代碼行數和時間:

時間 11.21 11.22 11.23 11.24 11.25 11.26 11.27
代碼行數 30 25 22 18 20 15 33

 

累積博客字數和時間:

時間 11.21 11.22 11.23 11.24 11.25 11.26 11.27
博客字數 0 0 0 0 500 700 1100

 

點評:

https://www.cnblogs.com/mayijing/p/10017399.html

https://www.cnblogs.com/chumengGTRlhz/p/9991154.html

https://www.cnblogs.com/abcdsjjs/p/10029383.html

 

 

 

 


免責聲明!

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



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