第三次隨筆作業


作業要求:https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2359

 

一.對pta作業的總結

  第11周:這周作業我花時間比較長的是第六次作業的第四題

 

 
         
7-4 輸出華氏-攝氏溫度轉換表 (15 分)
 
         

輸入2個正整數lowerupperlowerupper≤100),請輸出一張取值范圍為[lowerupper]、且每次增加2華氏度的華氏-攝氏溫度轉換表。

 
         

溫度轉換的計算公式:C=5×(F32)/9,其中:C表示攝氏溫度,F表示華氏溫度。

 
代碼:
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int lower,upper,f;
 5     double c;//定義所需的最高、低的溫度,攝氏度、華氏度變量
 6     scanf("%d %d",&lower,&upper);//輸入最低、高華氏度溫度
 7     if(lower<=upper)//判斷輸入溫度是否合理
 8     {
 9     
10         f = lower;//將最低溫賦予華氏度
11         printf("fahr celsius");
12         for (;f <= upper;f = f + 2)//按題要求沒次差兩華氏度,進行循環
13         {
14             c = (f-32)*5/9.0;//計算攝氏度的值
15             printf("\n%d%6.1f",f,c); //輸出華氏度及其對應攝氏度
16         }
17     }
18     else
19     {
20         printf("Invalid.");//當輸入溫度不合理時輸出錯誤
21     }
22 }
 
         

 

 
 
         

流程圖:

調試過程:

輸入合理數:

 

 ______________________________________________________________________________________________

 

輸入不合理數:

錯誤調試和解決辦法:

  這次在輸出格式上錯了幾次,主要是沒看懂題什么意思,但我覺得用\t進行對齊更加好看合理些。

 第十二周:這周作業我錯的次數比較多的是輸出閏年

7-2 輸出閏年 (15 分)

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

代碼:
 1  #include<stdio.h>
 2 int main()
 3 {
 4     int year,i;
 5     scanf("%d",&year);
 6     if(year > 2100 || year <= 2000)//判斷輸入年份是否在21世紀
 7     {
 8         printf("Invalid year!");
 9     }
10     else
11     {
12         if(year <= 2003)//判斷年份之前是否有閏年
13         {
14             printf("None");
15         }
16         for(i = 2004;i <= year;i += 4)//判斷循環是否到輸入年份
17         {
18             if(i % 4 == 0 && i % 100 != 0||i % 400 == 0)
19             printf("%d\n",i);
20         }
21     }
22     return 0;
23 }
 
         

 

 
         

流程圖:

調試過程:

輸入合理年份:

 

———————————————————————————————————————————————————————————————————————————————————————————————

輸入21世紀年份但之前沒有閏年

 

———————————————————————————————————————————————————————————————————————————————————————————————

輸入不是21世紀年份

錯誤調試和解決辦法:

這次多數錯誤是沒弄清閏年的定義,和對21世紀年份的理解,其實代碼還可以再試着節儉;

 

 

第十三周:這周作業我感覺有點意思的是掉入陷阱的數字

7-3 掉入陷阱的數字 (15 分)

對任意一個自然數N0​​,先將其各位數字相加求和,再將其和乘以3后加上1,變成一個新自然數N1​​;然后對N1​​重復這種操作,可以產生新自然數N2​​;……多次重復這種操作,運算結果最終會得到一個固定不變的數Nk​​,就像掉入一個數字“陷阱”。

本題要求對輸入的自然數,給出其掉入“陷阱”的過程。

 

代碼:

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int num,n1 = 0,n2 = 0,i,j = 1;
 5     scanf("%d",&num);
 6     while(num != n1)//查看是否與前一個數相等
 7     {
 8         n1 = num;//將上次計算的數記錄下來
 9         for(i = 0,n2 = 0; i < 5; i++)//求每位數和
10         {
11             n2 += num % 10;
12             num /= 10;
13         }
14         num = n2 * 3 + 1;    //將數和乘三加一
15         printf("%d:%d\n",j,num);//輸出第幾個數與計算結果
16         j++;
17     }
18     return 0;
19 }
 
         

 流程圖:


調試過程:













————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————


輸入只用循環一次的數






錯誤調試和解決辦法:
這題主要讓我學到了當循環是以重復為退出條件時的簡便方法,最早之前我是計算了兩次再判斷的,但那樣會導致判斷計算重復。

 二、總結和學習進度條

    這幾周沒有做太多十分讓我燒腦的題,目前在涉及些存儲方面的知識,同時深化對c語言基礎語句的理解,比如優先級等方面的問題。

  

點評同學博客鏈接

https://www.cnblogs.com/wangxiangbo/p/9948484.html#4123168

https://www.cnblogs.com/error203/p/9945496.html#4123195

https://www.cnblogs.com/104gyy/p/9918091.html


免責聲明!

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



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