C語言1博客作業10


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

一.PTA實驗作業

1. 梅森數

題目內容描述:形如2​的n次方−1的素數稱為梅森數(Mersenne Number)。例如2的2次方−1=3、2​的3次方−1=7都是梅森數。1722年,雙目失明的瑞士數學大師歐拉證明了2的31次方−1=2147483647是一個素數,堪稱當時世界上“已知最大素數”的一個記錄。
本題要求編寫程序,對任一正整數n(n<20),輸出所有不超過2​的n次方−1的梅森數。

輸入格式:
 輸入在一行中給出正整數n(n<20)。

####### 輸出格式:

按從小到大的順序輸出所有不超過2的n次方-1的梅森數,每行一個。如果完全沒有,則輸出“None”。

輸入樣例:
6
輸出樣例:
3
7
31

(1)數據處理

 數據表達:
     用了整形變量,t=0作為變量標記
     當n=1時,輸出None
     外層循環,從2開始,b=pow(2,a)-1
     內層循環,從2開始,如果b%i=0,t=1,跳出循環
     如果t=0,輸出b
     t要重置為0
     返回主函數

數據處理:偽代碼

 #include<stdio.h>
 #include<math.h>
 int main()
 {
     int n,i,a,b=0,t=0;//輸入整形變量n,i,a,b,t
     scanf("%d",&n);
     if(n==1)//當n=1時
     printf("None");//輸出None
     for(a=2;a<=n;a++)//從2開始循環n次
     {
        b=pow(2,a)-1;
        for(i=2;i<b;i++)//從2開始循環b次
            {
                if(b%i==0)//如果b%i=0
                  {
                      t=1;
                        break;//跳出循環
                  }
            }
      if(t==0)//如果t=0
      printf("%d\n",b);//輸出b
      t=0;//t重置為0
      }
  return 0;
  }

(2)實驗代碼截圖

(3)造測試數據

輸入數據 輸出數據 說明
4 3 7 從小到大的順序輸出所有不超過2的n次方−1的梅森數,每行一個有2個
5 3 7 31 從小到大的順序輸出所有不超過2的n次方−1的梅森數,每行一個有3個
6 3 7 31 從小到大的順序輸出所有不超過2的n次方−1的梅森數,每行一個有3個

(4)PTA提交列表及說明

提交列表說明

 答案正確:在編譯器中提前編譯,其中有一次答案錯誤是因為沒有考慮到b%i=0的情況

2.輸出三角形字符陣列

題目內容描述:本題要求編寫程序,輸出n行由大寫字母A開始構成的三角形字符陣列。

輸入格式:
 輸入在一行中給出一個正整數n(1≤n<7)。
輸出格式:
輸出n行由大寫字母A開始構成的三角形字符陣列。格式見輸出樣例,其中每個字母后面都有一個空格。
輸入樣例:
  4
輸出樣例:
  A B C D 
  E F G 
  H I 
  J 

(1)數據處理

 數據表達:用了整型變量n,i,a,b,c
         表達式: b=n-1;c=(1+n)*n/2;循環c次輸出字符
         如果如果i==n-1,則輸出換行n+=b; b--;

數據表達:偽代碼

 #include <stdio.h>
 int main()
 {
     int n,i,a,b,c;//輸入整形變量n,i,a,b,c
     scanf("%d",&n);
      b=n-1;//下一行的數目=上一行的數目-1
     c=(1+n)*n/2;//數目的規律
     for(i=0;i<c;i++)//循環c次
       {
          printf("%c ",'A'+i);//輸出'A'+i
          if(i==n-1)//如果i==n-1
	 {
                printf("\n");//輸出換行
                n+=b;
                 b--;
             }
       }
   }

(2)實驗代碼截圖

(3)造測試數據

輸入數據 輸出數據 說明
1 A 輸出1行由大寫字母A開始構成的三角形字符陣列
2 A B C 輸出2行由大寫字母A開始構成的三角形字符陣列
3 A B C D E F 輸出3行由大寫字母A開始構成的三角形字符陣列

(4)PTA提交列表及說明

提交列表說明

 1.格式錯誤:第13行中沒有輸出換行
 2.答案正確:在第13行中輸出換行

3.同構數

題目內容描述:一個數恰好出現在它的平方數的右端,這個數就稱為同構數。找出1~1000之間的全部同構數。

####### 輸出格式:

在一行中輸出所有滿足條件的同構數,每個數輸出占6列。沒有其它任何附加格式和字符。
輸出樣例:
    1     5     6    25    76   376   625

(1)數據處理

 數據表達:
     用了定義函數fun,用了整形變量
     用了if結構選擇循環,后用了for結構循環

數據處理:偽代碼

 #include<stdio.h>
 int fun(int x)//定義fun函數
     {
  int k;//輸入整形變量k
  k=x*x;
  if((k%10==x)||(k%100==x)||k%1000==x)//如果k滿足(k%10==x)(k%100==x)(k%1000==x)其中一個或者多個

	 return 1;//返回值為1
  else//否則
	 return 0;//返回值為0
      }
 int main(){
 int i=0;//輸入整形變量i
 for(i=1;i<=1000;i++)//從1開始,循環1000次
     {
	if(fun(i)){//如果fun函數i為真函數
         printf("%6d",i);//輸出i
	 }
 }
 return 0;
  }

(2)實驗代碼截圖

(3)造測試數據

輸入數據 輸出數據 說明
1 5 6 25 76 376 625 1~1000之間的全部同構數。

(4)PTA提交列表及說明

提交列表說明

 1.答案錯誤:第5行中少了k%1000==x
 2.編譯錯誤:第13行中寫成了i<1000
 3.答案正確:第5行中加上k%1000==x,在第13行中寫出i<=1000

二.代碼互評

同學代碼:

自己代碼:

比較

 (1)第一份代碼用了char op字符型變量,結構上該同學的更加整潔美觀,也更容易懂。
 (2)我的代碼直接定義整形變量,后面變為字符型輸出
 (3)這位同學的比我的更簡單,更容易懂

同學代碼:

自己代碼:

比較

 (1)第一份代碼用了自定義函數,然后先進行了for循環然后進行while結構,最后進行if判斷,結構上該同學的整潔美觀。
 (2)我的代碼用了定義fun函數,先進行了if選擇,后進行for循環,最后輸出i

1.學習進度條

周/日期 這周所花的時間 代碼行 學到的知識點簡介 目前比較迷惑的問題
第四周 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行 熟悉使用循環結構 目前還不太熟練

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

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

3 .學習內容總結和感悟

(1)學習內容總結

(2) 學習體會

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


免責聲明!

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



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