本周作業頭
這個作業屬於哪個課程 | C語言程序設計II |
---|---|
這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-1/homework/11530 |
我在這個課程的目標是 | 了解函數的分類和類型,熟悉變量的作用域、生存周期和存儲類型 |
這個作業在那個具體方面幫助我實現目標 | 參考同學的代碼,翻閱書籍 |
參考文獻 | c語言程序設計(第三版) |
學號 | 20208928 |
1.PTA實驗作業(20分/題)
**1.1 題目1統計某類完全平方數 **
題目描述:本題要求實現一個函數,判斷任一給定整數N是否滿足條件:它是完全平方數,又至少有兩位數字相同,如144、676等。
函數接口定義:
int IsTheNumber ( const int N );
裁判測試程序樣例:
#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;
}
/* 你的代碼將被嵌在這里 */
1.1.1數據處理
數據表達:定義整型變量.n1和n2,b為存儲求取余余數的變量,定義p[10]數組,定義m為對n取開二次方后的整數部分。
數據處理:用了int=m=sqrt(n)函數對n進行取整開根,再判斷m*m是否等於n;之后用while(n)循環,和for循環
1.1.2實驗代碼截圖
1.1.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
100 506 | cnt = 7 | 正確 |
110 700 | cnt = 7 | 正確 |
1.1.4 PTA提交列表及說明
部分正確:將if(m*m==n)中m*m打成了m*n
1.2 題目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 = 這些整數的和
裁判測試程序樣例:
#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;
}
/* 你的代碼將被嵌在這里 */
**1.2.1數據處理**
數據表達:全定義為整型變量,函數int is( int number )判斷給定正整數的各位數字之和是否等於5;函數void count_sum( int a, int b )統計給定區間內有多少個滿足上述要求的整數
數據處理:第一個函數用while循環計算各數之和
while(number!=0){
t=number%10;
sum=sum+t;
number=number/10}
第二個函數計算滿足整數的和
int s=0,c=0,i;
for(i=a;i<=b;i++){
if(is(i)){
c++;
s=s+i;
1.2.2實驗代碼截圖
1.2.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
106 660 | count = 14, sum = 3616 | 代入正確 |
221 230 | 221 is counted.230 is counted.count = 2, sum = 451 | 代入正確 |
1.2.4 PTA提交列表及說明
編譯錯誤:void count_sum( int a, int b )后面多加了“;”。
格式錯誤:printf("count = %d, sum = %d",c,s)忘記打空格
2.代碼互評
同學代碼1
同學代碼2
我的代碼
對比:1.第一位學長的方法非常好,簡單又好,值得我好好學習。
2.第二位同學的也比我好,只輸入了一次字符串,我看完她的代碼,覺得我把問題又復雜化了。
3.學習總結(15分)
3.1 學習進度條(5分)
周/日期 | 這周所花的時間 | 學到的知識點簡介 | 目前比較迷惑的問題 |
---|---|---|---|
第十六周12.15-12.20 | 51 | 各種類型函數的定義、調用和申明 | 還不太了解變量的作用域、生存周期和存儲類型 |
第十五周12.8-12.14 | 45 | 學習break和continue的使用 | 不太清楚兩者區別 |
第十四周12.1-12.7 | 40 | 學習while循環結構 | 對while和for循環的區別使用還不夠熟練 |
第十三周11.23-11.30 | 26 | 學習switch-case結構 | 不太理解if-else和switch-case的區別 |
第十二周 11.11-11.22 | 25 | 調用函數,了解char字符型變量,熟悉if-else分支結構 | if-else的多種分支嵌套不太懂 |
第十一周 11.10-11.14 | 20 | 定義和調用函數 | 不太懂清楚定義函數和調用函數的順序和什么時候該定義函數 |
第十周 11.2-11.8 | 19 | for循環結構 | 不是太熟悉for結構中什么語句應該包含循環 |
第九周 10.26-11.1 | 18 | if-else語句 | 不太理解if-else和else-if多分支結構的區別 |
第八周 10.19-10.25 | 16 | 對C語言的基本認知 | 沒有 |
3.2 累積代碼行和博客字數(5分)
時間 | 博客字數 | 代碼行數 |
---|---|---|
第八周 | 1007 | 15 |
第九周 | 537 | 50 |
第十周 | 1250 | 102 |
第十一周 | 1450 | 160 |
第十二周 | 1521 | 155 |
第十三周 | 1425 | 203 |
第十四周 | 1611 | 256 |
第十五周 | 1704 | 305 |
第十六周 | 1650 | 384 |
3.3 學習內容總結和感悟(5分)
3.3.1 學習內容總結
3.3.2 學習體會
每個人的學習進度條都在進步,自己同時也在努力,我認為現在參考別人的代碼可以對自己有進一步的提升和認識,了解他們的思維思路,對自己也有一定幫助,相互借鑒,相互進步。
還有就是還是要多練習代碼,提高知識熟練度以及鞏固。還有我覺得PTA的作業真的難,我覺得可以降低難度,平均水平一下。