C語言I博客作業11


一、本周教學內容&目標

第5章 函數 要求學生掌握各種類型函數的定義、調用和申明,熟悉變量的作用域、生存周期和存儲類型。

二、本周作業頭

這個作業屬於那個課程 C語言程序設計II
這個作業要求在哪里 <C語言I作業011>
我在這個課程的目標是 <復習所學相關知識,准備期末考試>
這個作業在那個具體方面幫助我實現目標 <在PTA中多次使用嵌套循環,熟練運用>
參考文獻 <<集美大學林麗老師>> C語言程序設計(第三版);百度

三、本周作業

1.PTA實驗作業
2.代碼互評
3.學習總結

四、作業格式

1.PTA實驗作業(20分/題)

請再此處列出自己的排名圖片

從PTA題目集中選出2個你最滿意的題目完成以下內容,選擇題目難度越大,分值越高,每題20分(每項5分),內容要求如下:

1.1 題目名1 (6-1 統計某類完全平方數 (20分))

本題要求實現一個函數,判斷任一給定整數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數據處理

介紹實現本題過程中,你的數據表達、數據處理是怎么做的。注意:請務必按照以下方式書寫。

數據表達:使用了整型變量a,m,n;使用了數組表達
數據處理:
表達式:if(tmp*tmp==N)
結構式:用了for循環語句以及使用嵌套內循環

偽代碼:

開始
定義四個整型變量,n1和n2:完全平方數的范圍,i:for循環內的控制循環變量,cnt:[n1,n2]范圍內的完全平方數的數量;
   輸入:n1,n2;
   令cut=0;
   for循環判斷n1到n2內的數是否為完全平方數;
   自定義函數:IsTheNumber
   定義四個整型變量tmp、flag、i,令tmp*tmp==N;flag用於判斷是否運行正確,做標記;tmp用於表示用戶輸入數的平 
   方;i用於控制for循環
   當tmp==N時
   則運用數組a[10]={0}
   外循環while:當n大於零時執行內循環
   若yes→a[i]=a[i]+1;
    num=num/10
   for循環輸入i=1-10,判斷n%10是否等於i
   繼續判斷若a[i]=>2
   則返回flag=1;
   退出內循環
   返回flag;
   結束
  
   

1.1.2實驗代碼截圖

貼圖展示代碼,不要復制。請給出名字標識。

1.1.3 造測試數據

輸出你的程序面向各種測試數據結果,除了題目給出的測試數據,可以自己再造其他臨界數據,越多越好,並加上必要說明

輸入數據 輸出數據 說明
105 500 cnt = 6 有6個數滿足條件
100 500 cnt = 7 有7個數滿足條件
200 880 cnt = 5 有5個數滿足條件
500 1000 cut=2 有2個數滿足條件

1.1.4 PTA提交列表及說明

根據PTA提交列表,簡要描述調試程序碰到的問題及解決辦法

1.部分正確:返回值寫成0,應該為flag。

1.2 題目2(6-2 統計各位數字之和是5的數 (20分)

本題要求實現兩個函數:一個函數判斷給定正整數的各位數字之和是否等於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 數據處理

介紹實現本題過程中,你的數據表達、數據處理是怎么做的。注意:請務必按照以下方式書寫。

數據表達:int is(int number)函數內,定義了兩個整型變量和sum和flag分別代表輸入的數的每一位數字和每一位數字加起來的和;在void count_sum( int a, int b )函數內,定義了三個整型變量i,count,sum分別代表滿足is函數的數和滿足is函數的數的個數,i用於控制循環。

數據結構:

結構式:函數int is(int number)使用了while循環結構和if語句;函數void count_sum( int a, int b )使用了for循環語句和if語句的嵌套結構。

偽代碼

開始 ;
  定義sum,flag兩個整型變量,
  若滿足is函數則相應的輸出數據;
  自定義int is( int number )函數;
  定義t和s分別代表輸入的數的每一位數字和每一位數字的和;
  若該數不等於零
  則循環將該數的每一位數字拿出且求和;
  若是所求的和等於五
  則返回1;
  否返回0;
  自定義void count_sum( int a, int b )函數
  定義三個整型變量i,count,sum
  使用for循環輸入[a,b]間的每一個數
  如果輸入的數滿足is函數
  則計數器+1;
  且求滿足is函數的數的和;
  結束 ;

1.2.2 實驗代碼截圖

1.2.3 造測試數據

輸入數據 輸出數據 說明
100 500 count = 15, sum = 3720 滿足條件的整數有15個,整數和為3720
104 999 104 is counted. count = 15, sum = 3720 滿足條件的整數有15個,整數和為3720
50 100 count = 1, sum = 50 滿足條件的整數有1個,整數和為50
200 800 count = 6, sum = 2244) 滿足條件的整數有10個,整數和為3100

1.2.4 PTA提交列表及說明

根據PTA提交列表,簡要描述調試程序碰到的問題及解決辦法

1.答案錯誤: printf("count = %d, sum = %d\n",count,sum);寫成了printf("count = %d, sum = %d\n",count,sum);

第一張 (6-1 統計某類完全平方數 )

同學代碼截圖 |<C語言I作業11 sun-夢 >|

自己代碼截圖

答:我和同學的代碼有很大的不同
1.我用的代碼是先利用while循環語句再用for循環語句判斷並且進行循環,同學則是利用多個多個for循環以及利用pow函數求解。

第二張 (6-2 統計各位數字之和是5的數 )

同學代碼截圖 |<C語言I作業11 sun-夢 >|

自己代碼截圖

答:第二個同學
1.同學是先把void count_sum(int a, int b)函數下的情況先解決在解決int is(int number)的情況,而我剛好相反。

3.學習總結(15分)

$3.1 學習進度條(5分)

|周/日期 |這周所花的時間| |代碼行 |學到的知識點簡介 |目前比較迷惑的問題|
|-|-|-|-|-|
|第六周| 8小時 |300行 |常用的數學函數,if-else語句,for語句,自定義函數 |不會用自定義函數|
|第七周 |7小時 |400行 |二分支結構和用char輸入字符 |對於字符型的代碼有點看不懂|
|第八周| 10小時 |420行 |多分支結構,switch語句 |switch語句用得有點混亂|
|第九周 |13小時 |450行 |自定義函數的用法,怎樣用一個算法來運算多個式子 |if語句的嵌套不明白是怎樣分支的|
|第十周| 18小時 |500行 |多分支結構、字符型數據類型和邏輯運算符 |目前不太熟練並且字符型還沒熟悉|
|第十一周|12小時|600行|熟悉多分支結構switch語句的使用|switch后的表達式是否有要求|
|第十二周|8小時 |620 |do-while語句和while,for語句的區別 |continue不知道怎么去用|
|第十三周|10小時|650|break、continue的用法以及它們之間的關系|為什么在for循環前都要m=1;|
|第十四周|10|600|學習了窮舉算法(在一定限定范圍內可以先運算所有的可能)|對於窮舉算法的源程序2還是不太懂|
|第十五周|16|650|怎樣判斷素數,熟悉循環的嵌套|對數步數很不了解,對指針完全不了解,對於函數題沒什么思路|

3.2 累積代碼行和博客字數(5分)

時間 博客字數 代碼行數
第4周 585 300
第6周 1366 400
第五周 2551 200
第7周 2821 420
第8周 4100 400
第9周 6212 500
第10周 8133 550
第11周 10510 600
第12周 13031 620
第13周 15899 630
第14周 17000 600
第15周 19571 650

3.3 學習內容總結和感悟(5分)

3.3.1 學習內容總結

3.3.2 學習體會

請回顧自己的本周的學習過程,描述學習感受,也可以提出你不理解的地方、對教師教學建議等。如果你有新的想法或者新的方法,請及時記錄下來。

1.這周的pta作業難題感覺又變難了,做的時候老是沒思路,就算在devc++上敲了代碼。在PTA上還是會出現一些小毛病
2.pta上的練習大部分其實就是一些數學題,自己可以用數學思維解決他們,卻老是一下子不知道怎么用代碼的形式表示他們。
4.百度是個好東西,尤其是對於初學者來說!


免責聲明!

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



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