這個作業屬於哪個課程 |
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逐個輸入到字符串中,然后判斷結束符以結束輸入,再對字符串做處理。這種方法對編程水平要求比前幾種略高,代碼量也更大,但好處是完全自己控制,更加靈活。