問題 | 回答 |
---|---|
這個作業屬於那個課程 | C語言程序設計II |
這個作業要求在哪里 | C語言I博客作業11 |
我在這個課程的目標是 | 學習好C語言解決應用到實際生活中 |
這個作業在那個具體方面幫助我實現目標 | 了解了for,while,do-while循環之間的區別 |
參考文獻 | 百度百科、CSDN博客、C語言程序設計 |
1.PTA實驗作業
1.1 統計某類完全平方數
本題要求實現一個函數,判斷任一給定整數N是否滿足條件:它是完全平方數,又至少有兩位數字相同,如144、676等。
函數接口定義:
int IsTheNumber ( const int N );
其中N是用戶傳入的參數。如果N滿足條件,則該函數必須返回1,否則返回0。
裁判測試程序樣例:
#include <stdio.h>
#include <math.h>
int IsTheNumber ( const int N );
int main()
{
int n1, n2, i, cnt;
scanf("%d %d", &n1, &n2);
cnt = 0;
for ( i=n1; i<=n2; i++ ) {
if ( IsTheNumber(i) )
cnt++;
}
printf("cnt = %d\n", cnt);
return 0;
}
/* 你的代碼將被嵌在這里 */
輸入樣例:
105 500
輸出樣例:
cnt = 6
1.1.1
數據處理:定義n,x,i,為整型變量,y為雙精度變量;
數據表達:賦值N的平方根給n和y,運用while語句,for循環語句;
1.1.2實驗代碼截圖
1.1.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
10 30 | cnt=0 | 10~20內沒有類完全平方數 |
105 500 | cnt=6 | 105~500內有6個類完全平方數 |
1.1.4 PTA提交列表及說明
這題我是先在Dvev-C++1上先調試后復制上去的,但我記得當時出現的問題
編譯錯誤:要定義的數定義定義錯誤
編譯錯誤:我用了中文符號";"
1.2 統計各位數字之和是5的數
本題要求實現兩個函數:一個函數判斷給定正整數的各位數字之和是否等於5;另一個函數統計給定區間內有多少個滿足上述要求的整數,並計算這些整數的和。
函數接口定義:
int is( int number );
void count_sum( int a, int b );
函數is判斷number的各位數字之和是否等於5,是則返回1,否則返回0。
函數count_sum利用函數is統計給定區間[a, b]內有多少個滿足上述要求(即令is返回1)的整數,並計算這些整數的和。最后按照格式
count = 滿足條件的整數個數, sum = 這些整數的和
進行輸出。題目保證0<a≤b≤10000。
裁判測試程序樣例:
#include <stdio.h>
int is( int number );
void count_sum( int a, int b );
int main()
{
int a, b;
scanf("%d %d", &a, &b);
if (is(a)) printf("%d is counted.\n", a);
if (is(b)) printf("%d is counted.\n", b);
count_sum(a, b);
return 0;
}
/* 你的代碼將被嵌在這里 */
輸入樣例:
104 999
輸出樣例:
104 is counted.
count = 15, sum = 3720
1.2.1 數據處理
數據表達:本題定義s,y為整型變量;主函數是“int main()”,被調函數是“int is( int number )”;
數據處理:本題運用了while語句,for循環去處理變量;使用了scanf語句輸入;
1.2.2實驗代碼截圖
1.2.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
104 999 | 104 is counted. count = 15, sum = 3720 | 與PTA實例一致 |
11 13 | count=0 ,sum=0 | 區間內沒有 |
15 16 | count=0 ,sum=0 | 區間內沒有 |
1.2.4 PTA提交列表及說明
編譯錯誤:定義變量s錯誤
編譯錯誤:把i賦值用成了s
編譯錯誤: 輸入(is(i))少了一個“)”
2.代碼互評
2.1同學代碼截圖:
自己代碼截圖:
不同點:我和他大的代碼思路大致相同,但在數據處理方面有些不一樣,如我是把N的平方根賦值給n和y;而他只是賦值n的平方根賦值給m;
2.2同學代碼截圖
自己代碼截圖
不同點:本題我采用的是while語句而他用的是for循環,所以他定義的變量比我多一些,我的更加簡約一些。
3.學習總結
周/日期 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較疑惑的問題 |
---|---|---|---|---|
第一周/9-18 | 3天 | 42 | 簡單的C語言知識 | 不會寫代碼 |
第二周/10-27 | 3天 | 提問的智慧 | 寫代碼的思路 | |
第三周/9-12 | 3天 | 87 | 關系運算,格式化輸入語句scanf() | 怎么找錯誤 |
第四周/10-15 | 4天 | 106 | 使用for循環語句事先指定次數的循環程序設計 | 循環程序的邏輯關系 |
第五周/10-19 | 3天 | 126 | 自定義函數 | 構建函數 |
第六周/11-1 | 3天 | 205 | 在編程中運用函數,多分支結構,邏輯運算符,字符型數據類型 | 怎樣用字符型數據 |
第七周/11-6 | 1天 | 189 | 運用switch語句 | 怎么將switch靈活運用,怎么去寫偽代碼 |
第八周/11-15 | 一天 | 學習了do-while語句 | 運用do-while語句 | |
第九周/11-20 | 一天 | 190 | 嵌套循環 | 嵌套循環去解決問題 |
第十周/11-29 | 一天 | 178 | 嵌套循環的綜合 | 循環結構的設置思路 |
第十一周/12-6 | 一天 | 183 |
3.2 累積代碼行和博客字數
3.3 學習內容總結
3.4 學習體會
這一周主要是復習,在復習的過程中感覺又學習到了新知識,switch語句能使的代碼更加的簡潔還有do-while語句使用能使題目更加的簡單。發現在閱讀別人的代碼時能讓自己收獲許多新的東西,同明白自己與別人之間的差距。