這個做業屬於哪一個課程 | 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數據處理c++
**數據表達:定義整形變量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提交列表及說明
git
###提交列表說明: **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=三、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.代碼互評 ###同窗的代碼 ###本身的代碼
3d
**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語句,對字符進行輸出**
###同窗的代碼 ###本身的代碼
code
**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.有空就多多練習練習
**補充:** 1、輸入數字能夠用scanf輸入。 若是輸入的是整型數據,能夠用 int a; scanf("%d",&a); 實現把輸入的數字賦值給a的效果。 相似的,若是是float, double,short,long等類型的數據,那麼就要把變量定義成對應的類型,而後使用各自的格式字符%f,%lf,%hd,%ld等進行輸入。 2、輸入單個字符。 輸入單個字符能夠用如下兩種函數。 定義char c; 1 scanf("%c", &c); 這種方法和輸入數字是相似的,%c僅讀入一個字符,並賦值給c。 2 c = getchar(); getchar函數的功能就是讀入一個字符,並以返回值形式返回。 3、輸入一串字符(以空白字符分隔)。 能夠用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等進行輸入。 2、輸入單個字符。 輸入單個字符能夠用如下兩種函數。 定義char c; 1 scanf("%c", &c); 這種方法和輸入數字是相似的,%c僅讀入一個字符,並賦值給c。 2 c = getchar(); getchar函數的功能就是讀入一個字符,並以返回值形式返回。 3、輸入一串字符(以空白字符分隔)。 能夠用scanf的%s格式。 char str[100];//空間要定義足夠大 scanf("%s", str);//將字符串讀入並存在str中 四,讀入一行數據。 能夠用gets函數。gets的功能就是讀入一整行數據,以換行符爲結束。 char str[100];//一樣要足夠大的空間 gets(str); 補充,不管哪一種形式的輸入,均可以用getchar逐個輸入到字符串中,而後判斷結束符以結束輸入,再對字符串作處理。這種方法對編程水平要求比前幾種略高,代碼量也更大,但好處是徹底本身控制,更加靈活。