C語言I博客作業11


這個作業屬於那個課程 C語言程序設計II
這個作業要求在哪里 C語言I博客作業11
我在這個課程的目標是 熟練掌握C語言
這個作業在哪個具體方面幫助我實現目標 熟練掌握了各種循環結構,並且學會了自定義函數
參考文獻 Markdown基本語法 集美大學林麗老師

一.PTA實驗作業

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)數據處理

 數據表達:
     用了整形變量x,m;
     用m來找完全平方數的范圍內的整數
     使用了數組

數據處理:偽代碼

  開始

  int IsTheNumber ( const int N );//N是用戶傳入的參數。如果N滿足條件,則該函數必須返回1,否則返回0

  int main()
      {
          int n1, n2, i, cnt;//定義整形變量n1,n2, i, cnt

          scanf("%d %d", &n1, &n2);
          cnt = 0;//cnt初始化為0
          for ( i=n1; i<=n2; i++ ) {//循環n1到n2次
           if ( IsTheNumber(i) )//自定義函數IsTheNumber(i)
                      cnt++;//cnt累加
                  }
           printf("cnt = %d\n", cnt);//輸出cnt

    return 0;//返回值為0
    }

 #include <stdio.h>
 int IsTheNumber ( const int N )
 {
      int x,m;//定義x,m
      x=(int)sqrt(N);//x定義為整形的根號N
      m = x*x;
      if (m == N)//如果m=N
         {
             int num[10]={0};//定義了一個int型的大小為10的數組nums,同時該數組所有的元素均被初始化為0
             int i;
             while(m>0)//當m>0時
                  {
                        for(i = 0;i<=9;i++)//循環9次
                           {
                                if (m%10 == i)//如果m除以10的余數=i
                                   {
                                         num[i]=num[i]+1;//
                                         if (num[i]==2)//如果數組i=2
                                            {
                                                 return 1;//返回值為1
                                            }
                                    }
                            }
                          m=m/10;//m等價於m/10
                    }
              }
   return 0;//返回值為0
   }

(2)實驗代碼截圖


(3)造測試數據

輸入數據 輸出數據 說明
144 225 cnt = 2 有兩個完全平方數
105 500 cnt = 6 有六個完全平方數
100 200 cnt = 3 有三個完全平方數

(4)PTA提交列表及說明

提交列表說明

 編譯錯誤:第9行中0那里沒有加{}
 答案正確:在第9行中加上了{}

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)數據處理

 數據表達:用了整型變量t, s = 0
         運用了自定義函數,for循環結構和if結構
         用sum表示和,count表示符合的個數

數據表達:偽代碼

 開始

 int is( int number );//is自定義函數
 void count_sum( int a, int b );//定義整形變量a,b來接收主函數傳入的值

 int main()
 {
     int a, b;//整形變量a,b

     scanf("%d %d", &a, &b);
     if (is(a)) printf("%d is counted.\n", a);//如果自定義函數is(a)返回來的值不為0
     if (is(b)) printf("%d is counted.\n", b);//輸出b
     count_sum(a, b);

     return 0;//返回值為0
 }

 int is(int number)//is自定義函數
 {
     int t, s = 0;//整形變量t,s
     while (number != 0)//當數值不等於0時
     {
         t = number % 10;//t的值為數值除以10取余
         number = number / 10;//數值等於原數值除以10的商
         s = s + t;//s的值為s和t的和
     }
     if (s == 5)//如果s等於5
     {
         return 1;//返回值為1
     }
     return 0;//返回值為0
 }
 void count_sum(int a, int b)//自定義函數void count_sum(定義整形變量a,b來接收主函數傳入的值)
 {
      int n,count = 0, sum = 0;//定義整形變量n,count=0,sum=0
      scanf("%d%d", &a, &b);
      for (n = a; n <= b; n++)//循環a到b次
         {        
           if (is(n))//自定義函數is(定義整形變量n來接收主函數傳入的值)
             {
                count++;//累加
                sum = sum + n;//sum的值為sum和n的和

              }        
         }
     printf("count = %d, sum = %d\n", count, sum);//輸出count,sum
  }

(2)實驗代碼截圖


(3)造測試數據

輸入數據 輸出數據 說明
104 203 104 is counted.203 is counted. count = 6, sum = 813 符合條件的整數有6個,整數和為813
104 104 104 is counted. count = 1, sum = 104 符合條件的整數有1個,整數和為104
104 999 104 is counted. count = 15, sum = 3720 符合條件的整數有15個,整數和為3720

(4)PTA提交列表及說明

提交列表說明

 1.編譯錯誤:第10行中寫成了=
 2.編譯錯誤:第12行中也寫成了return 0
 3.答案正確:第10行寫成==,第12行寫成return 1

二.代碼互評

同學代碼:

同學代碼:

自己代碼:

比較

 (1)第一份代碼用了自定義函數定義了5個變量,代碼行數38行,用數N的每一位數按1~9數字的個數一個個進行統計,
 (2)第二份代碼先定義一個整型數組,使其初始化,用if語句中一數為另一數的平方數判斷是否為完全平方數,在利用數組的原理判斷是否有兩個相同的數
 (3)第三份代碼定義了4個變量,同時也定義了整型數組,先使用了if語句后使用for語句
周/日期 這周所花的時間 代碼行 學到的知識點簡介 目前比較迷惑的問題
第四周 7小時 100行 在屏幕上顯示Hello World!
第五周 8小時 100行 求華氏溫度對應的攝氏溫度
第六周 21小時 400行 如何用 MinGW-w64 來編譯C程序
第七周 24小時 478行 運用if語句完成各種數學程序 對於&&的用法不了解,現在操作不熟練
第八周 20小時 349行 掌握使用for循環語句實現指定次數的循環程序設計
第九周 23小時 264行 學會使用自定義函數 目前不太熟練
第十周 22小時 167行 熟悉多分支結構、字符型數據類型和邏輯運算符 還沒有完全熟悉
第十一周 18小時 150行 熟悉多分支結構switch語句的使用
第十二周 16小時 130行 熟悉使用while和do-while結構解決問題 目前還不太熟練
第十三周 15小時 120行 熟悉使用for結構,了解並掌握了break語句和continue語句 目前還不太熟練continue語句
第十四周 15小時 180行 熟悉使用循環結構 目前還不太熟練
第十五周 14小時 260行 熟悉函數,學會使用自定義函數 對數組不太了解,對函數不太熟練

2. 累積代碼行和博客字數

時間 博客字數 代碼行數
第四周 525 50
第五周 645 100
第六周 645 400
第七周 2659 478
第八周 3586 597
第九周 4769 698
第十周 5897 787
第十一周 6289 897
第十二周 7594 1056
第十三周 8679 1170
第十四周 9879 1278
第十五周 13547 1456

3 .學習內容總結和感悟

(1)學習內容總結

(2) 學習體會

學習c語言有一段時間了,越是學到后面越難,上周總結了循環結構,並且知道了這兩個語句的區別,增加了一項編碼技巧,這周學習了自定義函數,又學到了新的C語言知識,現在編代碼時沒有以前那么吃力了,但是仍然不太熟練,而且題目也越來越難了,我還欠缺很多的鍛煉,也欠缺很多知識,我以后還需要更努力的去練習,花更多的時間在這里,朝着我的目標前進


免責聲明!

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



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