C語言I博客作業10


這個作業屬於哪個課程 C語言程序設計II
這個作業要求在哪里 C語言I作業10
我在這個課程的目標是 學會編程,運用編程制作有趣的東西
這個作業在那個具體方面幫助我實現目標 多了解c語言的一些知識
參考文獻 C語言程序設計I,百度

1.PTA作業

1.PTA實驗作業

1.1輸出三角形字符陣列

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

1.1.1數據處理

**數據表達:定義整形變量i,j,n,定義字符變量ch,令ch=‘A’,i,j為循環條件,n為輸入的數。**
**數據處理:偽代碼**
定義整形變量和字符變量
輸入n
for(i=0;i<n;i++)
{
    for(j=0;j<n-i;j++)for循環
        {
        printf("%c ",ch);輸出字符
        ch++;字符累加
        }
        printf("\n")輸出回車
  end

1.1.2實驗代碼截圖

1.1.3造測試數據

輸入數據 輸出數據 說明
2 1-7之間
3 1-7之間
4 1-7之間
6 1-7之間

1.1.4PTA提交列表及說明

###提交列表說明:
**1.答案錯誤:我沒有使用循環嵌套,輸出不了多個行,字母沒有出來,后經改正運用循環嵌套**
**2.答案錯誤:我寫的是“i=1;i<=n和j=1;j<=n-i"顯示答案錯誤后改為i=0;i<n;j=0;j<=n-i**

1.2梅森數

**內容:**形如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.2.1數據處理

**數據表達:定義整形變量i,j,sum,n,count=0 ,n為輸入的數 ,sum為輸出梅森數,i,j為循環條件 **
**數據處理:偽代碼**
輸入n 
if n>=2&&n<20 then 
     for i=2 to n
 把2的m次方減1賦值給sum
 for j=2 to i-1 
 if i%j==0 then 
 count累加 
if x==0 then 
   輸出i和換行
   count=0;
else輸出None

1.2.2實驗代碼截圖


1.2.3造測試數據

輸入數據 輸出數據 說明
0 沒有素數
8 范圍內的隨機數
12 范圍內的隨機數
19 最大的數

1.2.4PTA提交列表及說明

**提交列表說明:**
**1.部分正確:在0的那種情況,答案錯誤,詢問大佬后,在23行中添加count=0**
**2.編譯錯誤是自己在devc++上出現的“;”忘記打,或者是將“;”輸入為“,”**
**3.不知道怎樣一個順序,后詢問同學,借鑒后完成**

1.3同構數

**內容:**一個數恰好出現在它的平方數的右端,這個數就稱為同構數。找出1~1000之間的全部同構數。
輸出格式:
在一行中輸出所有滿足條件的同構數,每個數輸出占6列。沒有其它任何附加格式和字符。
輸出樣例:
     1     5     6    25    76   376   625

1.3.1數據處理

**數據表達:定義一個變量i,為循環條件。**
**數據處理:偽代碼**
定義變量
for i<-1;i<=1000;i++)
位數有個,十,百。
if(0<=i&&i<=9)個位數,即一位數
if(i==(i*i)%10)表示這些位數
輸出i
if(10<=i&&i<=99)十位數,即兩位數 
if(i==(i*i)%100)
輸出i
if(100<=i&&i<=999)百位數,即三位數
if(i==(i*i)%1000)
輸出i
if(i==1000)
當i為1000時,顯然不是同構數,故不作判定

1.3.2實驗代碼截圖

1.3.3造測試數據

輸入數據 輸出數據 說明
同構數

1.3.4PTA提交列表及說明

**提交列表說明:**
**1.格式錯誤:我將%d后面加了6個空格,在devc++上運行是正確的,比較懵,就將空格打在%d前面**
**2.格式錯誤:詢問同學,最終將%d改為了%6d,答案正確**

2.代碼互評

同學的代碼

自己的代碼

**1.1.她定義了整形變量n,i,a,b,c b=n-1;c=(1+n)*n/2;循環c次輸出字符 ,如果i==n-1,則輸出換行n+=b; b--;**
**1.2.我的定義整形變量i,j,n,定義字符變量ch,令ch=‘A’,i,j為循環條件,n為輸入的數。**   
**2.1.她在for循環中輸入字符‘A’循環嵌套中為for與if兩種語句**
**2.2.我運用char ch字符變量,運用兩個for語句,對字符進行輸出**

同學的代碼

自己的代碼

**1.1.她用了整形變量i,y,digit,sum; i用來控制循環次數,即用戶給出的找同構數的范圍, y和n,digit用來判斷數i的位數,sum用來保存i的平方。**
**1.2.我只定義一個變量i,為循環條件。**
**2.1. 她運用for循環語句對digit初始化為0 ,將i的平方賦值給sum ,將i賦值給n , 將整形變量n/10賦值給y ,將整形變量n/10賦值給n ,digit累加,用 switch語句,分別判斷位數不同的數是否符合同構數的條件,如果符合則輸出該數,然后跳出循環。** 
**2.2.我是對1000以內的數字進行分段求,有百位數,個位數等,整體感覺我的要簡潔些**

3.學習總結

3.1學習進度條

周/日期 這周所花的時間 代碼行 學到的知識點簡介 目前比較迷惑的問題
第四周 8h 20 簡單輸出
第五周 10h 40 學習輸入
第六周 20h 60 用WinGW-w64來編譯C程序 文檔真的打不開,可能是電腦原因
第七周 10h 90 關系運算,if-else語句,格式化輸入語句scanf() 有的數學邏輯問題不太懂
第八周 8.5h 80 for的循環語句,指定次數的循環程序設計 不太會文字與數學的轉換
第九周 8h 100 函數的調用和定義的初步認識 自定義函數不熟悉
第十周 10h 170 多分支結構、字符型數據類型和邏輯運算符 多個數據輸出不熟練
第十一周 11h 110 熟悉多分支結構switch語句的使用 邏輯思維能力差
第十二周 9h 200 熟悉whlie和do-whlie結構 字符那方面不熟
第十三周 8h 180 熟悉嵌套循環,break和continue的用法 當運用到真題方面還是會不太會
第十四周 8h 110 選擇合適的算法、合理的循環結構,熟練的編寫程序 最大的問題是不懂題意

3.2累積代碼行和博客字數

時間 博客字數 代碼行數
第四周 441 20
第五周 441 20
第六周 1112 150
第七周 1800 190
第八周 2300 220
第九周 3100 220
第十周 4000 400
第十二周 4900 620
第十三周 6700 910
第十四周 7600 1020

3.3學習內容總結和感悟

3.3.1學習內容總結

3.3.2學習體會

1.感覺還是挺難得,剛開始題目都看不懂
2.學習之旅長路漫漫,還得慢慢來,不會的就要搞懂
3.期末也快要到了,努力復習,抓緊時間
4.有空就多多練習練習

**補充:**
     一、輸入數字可以用scanf輸入。
如果輸入的是整型數據,可以用
int a;
scanf("%d",&a);
實現把輸入的數字賦值給a的效果。
類似的,如果是float, double,short,long等類型的數據,那么就要把變量定義成對應的類型,然后使用各自的格式字符%f,%lf,%hd,%ld等進行輸入。
二、輸入單個字符。
輸入單個字符可以用以下兩種函數。
定義char c;
1 scanf("%c", &c);
這種方法和輸入數字是類似的,%c僅讀入一個字符,並賦值給c。
2 c = getchar();
getchar函數的功能就是讀入一個字符,並以返回值形式返回。
三、輸入一串字符(以空白字符分隔)。
可以用scanf的%s格式。
char str[100];//空間要定義足夠大
scanf("%s", str);//將字符串讀入並存在str中
四,讀入一行數據。
可以用gets函數。gets的功能就是讀入一整行數據,以換行符為結束。
char str[100];//同樣要足夠大的空間
gets(str);
補充,無論哪種形式的輸入,都可以用getchar逐個輸入到字符串中,然后判斷結束符以結束輸入,再對字符串做處理。這種方法對編程水平要求比前幾種略高,代碼量也更大,但好處是完全自己控制,更加靈活。、輸入數字可以用scanf輸入。
如果輸入的是整型數據,可以用
int a;
scanf("%d",&a);
實現把輸入的數字賦值給a的效果。
類似的,如果是float, double,short,long等類型的數據,那么就要把變量定義成對應的類型,然后使用各自的格式字符%f,%lf,%hd,%ld等進行輸入。
二、輸入單個字符。
輸入單個字符可以用以下兩種函數。
定義char c;
1 scanf("%c", &c);
這種方法和輸入數字是類似的,%c僅讀入一個字符,並賦值給c。
2 c = getchar();
getchar函數的功能就是讀入一個字符,並以返回值形式返回。
三、輸入一串字符(以空白字符分隔)。
可以用scanf的%s格式。
char str[100];//空間要定義足夠大
scanf("%s", str);//將字符串讀入並存在str中
四,讀入一行數據。
可以用gets函數。gets的功能就是讀入一整行數據,以換行符為結束。
char str[100];//同樣要足夠大的空間
gets(str);
補充,無論哪種形式的輸入,都可以用getchar逐個輸入到字符串中,然后判斷結束符以結束輸入,再對字符串做處理。這種方法對編程水平要求比前幾種略高,代碼量也更大,但好處是完全自己控制,更加靈活。


免責聲明!

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



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