這個作業屬於哪個課程 | C語言程序設計II |
---|---|
這個作業要求在哪里 | C語言I博客作業11 |
我在這個課程的目標是 | 學習C語言程序設計 |
這個作業在哪個具體方面幫助我實現目標 | 掌握各種類型函數的定義、調用和申明,熟悉變量的作用域、生存周期和存儲類型 |
參考文獻 <寫上作業所參考的文獻資料> | 百度查閱 |
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,i,a.雙精度浮點型變量m,
數據處理:偽代碼
include <stdio.h> //頭文件
include <math.h> //頭文件
定義整形變量IsTheNumber 將N定義為整形變量
int main()
{
定義整形變量n1, n2, i, cnt;
輸入"%d %d", &n1, &n2
cnt的初始值為0
for i=n1 to i<=n2 累加i
{
如果 ( IsTheNumber(i) )
cnt累加;
}
輸入cnt
end for
return 0;
}
int IsTheNumber (const int N) //函數接口
{
定義整形變量 n,i,a;
定義雙精度浮點型變量 m;
num[10]初始化為0;
將整形的(N)開方后的值賦給n;
將(N)開方的數賦給m;
將N賦值給a;
if(a==m*n)
while(a)
{
for(i=0 to i<=9 累加i)
{
if(a除以10取余等於i)
{
num[i]+=1;
如果(num[i]>=2)
返回 1;
}
end if
}
end for
a等於a除以10;
}
end if
返回 0;
}
1.1.2 實驗代碼截圖
1.1.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
144 169 | cnt = 1 | 兩個平方數 |
125 275 | cnt = 2 | 兩個5的倍數 |
25 49 | cnt = 0 | 兩個小於100的可開方數 |
333 666 | cnt = 3 | 兩個大於300的數據 |
122 226 | cnt = 2 | 兩個大於100的數據 |
1.1.4 PTA提交列表及說明
1.編譯錯誤:未將for循環中的分號碼正確;用到了逗號,導致錯誤
2.答案正確:將for循環中的逗號改成分號就行了
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數據處理
數據表達:定義整形變量x,y,並將0賦值給y
數據處理:偽代碼
include <stdio.h> //頭文件
void count_sum( 定義整形變量a,b);
int main()
{
定義整形變量a, b;
輸入a,b
如果是a,輸出的是"a is counted."
如果是b,輸出的是"b is counted."
count_sum(a, b);
return 0;
}
int is( int number )
{
定義整形變量x,y,並將0賦值給y
do
{
將number除以10的余數賦值給x
將number除以10的值賦值給number
將x+y的值賦值給y
}
while(number不等於0);
如果(y等於5)
返回 1;
返回 0;
}
void count_sum( int a, int b )
{
定義整型變量i,count,sum,並將0賦值給count與sum
for(i=a to i<=b i累加
{
如果是i
{
count++;
將sum+i的值賦值給sum
}
end if
}
end for
輸出("count = %d, sum = %d")
}
1.2.2 實驗代碼截圖
1.2.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
122 226 | 122 is counted. count = 6, sum = 1029 | 大於100的數據 |
222 122 | 122 is counted. count = 0, sum = 0 | 大於100的數據 |
232 332 | count = 3, sum = 933 | 大於200的數據 |
122 222 | 122 is counted. count = 6, sum = 1029 | 大於100數據 |
332 335 | count = 0, sum = 0 | 大於300的數據 |
1.2.4PTA提交列表及說明
1.答案錯誤:將第6行中的x=number%10;寫成了x=number/10;
2.格式錯誤:將第28行中的空格未打出來;
3.格式錯誤:第28行中的空格位置打錯了;
4.格式錯誤:依舊是28行中的空格位置打錯了;
5.答案正確:在經過多次格式錯誤下,終於打正確了格式
2.代碼互評
同學代碼截圖
自己代碼截圖
1.同學代碼中僅僅用到了整形變量,而自己的代碼中用到了整形變量及雙精度浮點型變量
2.同學代碼中用到了3個整形變量,並將n賦值給m,而我自己的代碼中用到了3個整形變量及1個雙精度浮點型變量
3.同學代碼中用到的是if語句中鑲嵌while語句,而我的代碼是while語句中鑲嵌for循環語句
同學代碼截圖
自己代碼截圖
1.同學代碼中用到了5個變量,而我的代碼中用到了3個變量及1個雙精度浮點型變量
2.同學代碼中用到了if語句中鑲嵌while語句,而我的代碼中用到了while語句中鑲嵌for語句
3.同學代碼中是直接將數據賦值給for循環中,而我的代碼是將count定義並將其作為范圍
3.學習總結
3.1學習進度條
周 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較困惑的問題 |
---|---|---|---|---|
第五周 | 3小時 | 17行 | 初期開始學習“Hello World!" | 不知道如何開始編譯 |
第六周 | 10小時 | 27行 | 提問的智慧及編譯器的下載 | 編譯格式問題 |
第七周 | 10小時 | 95行 | 流程結構類型及變量類型分類方法 | 代碼分析不明白以及編譯格式問題 |
第八周 | 13小時 | 115行 | 循環程序設計及Dev-C++編譯運行等方法 | 用專業術語將代碼解釋出來及各種賦值運用 |
第九周 | 15小時 | 165行 | 四種流程結構及主調,被調函數,實參與形參的識別 | PTA作業中題目的編寫 |
第十周 | 17小時 | 94行 | 分支結構的部分代碼 | PTA作業的編寫(真的好難) |
第十一周 | 14小時 | 76行 | switch語句的運用 | switch語句的靈活運用以及PTA作業的編寫 |
第十二周 | 18小時 | 147行 | 循環結構程序設計及運用字串符處理代碼題 | 有時候對於一些問題的意思很難懂,對於自己的解題速度也有很大問題 |
第十三周 | 11小時 | 113行 | 學習使用循環的嵌套及熟悉continue的使用 | PTA的題目,C語言知識點及考試的心態 |
第十四周 | 10小時 | 40行 | 熟練運用循環結構的程序設計 | 對於一些循環嵌套的代碼還是有很多不解 |
第十五周 | 5小時 | 93行 | 熟悉各種類型函數的定義、調用和申明,熟悉變量的作用域、生存周期和存儲類型 | 對於這次的作業,又要讓人脫發了吧 |
3.2累積代碼行和博客字數
3.3學習內容總結和感悟
3.3.1學習內容總結
3.3.2學習體會
1.在本周中,我們體會到了有史以來的難度,不知道怎么解決問題,真的是應該好好反思,是不是基礎太弱了。其實最希望的不是直接寫題目,知識點都不清楚,就做題,現在就是一學期下來,基本上沒有學到什么,這種方法真的讓我自己無力吐槽了,枯遼。
2.在本周中的學習點是掌握各種類型函數的定義、調用和申明,熟悉變量的作用域、生存周期和存儲類型,對於這些知識點就像一群demons,讓我看到就沒太大興趣,因為一直都還是不太清楚,太心塞了。
3.在這學期的學習中,我發現還是有很多要學的知識點都不知道,自己的實力多大,心里都知道,真的很薄弱,只是希望以后能在忙於其他課外活動的同時能夠騰出最大空間來學習吧。