作業要求:https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2359
一.對pta作業的總結
第11周:這周作業我花時間比較長的是第六次作業的第四題
7-4 輸出華氏-攝氏溫度轉換表 (15 分)
輸入2個正整數lower
和upper
(lower
≤upper
≤100),請輸出一張取值范圍為[lower
,upper
]、且每次增加2華氏度的華氏-攝氏溫度轉換表。
溫度轉換的計算公式:C=5×(F−32)/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