C語言作業
一、PTA實驗作業(4分)
題目1: 將數組中的數逆序存放
1. 本題PTA提交列表(要提交列表,不是結果)
2. 設計思路(用代碼表示扣分)
定義n用於存放輸入的數字個數,number[999]用來存放輸入數字,t,i用於討論;
輸入n
for(i=0;i<=n-1;i++){
輸入number[i];
}
如果n%2==0{
定義k
for (k=0;k<=(n/2)-1;k++){
t=number[k];
number[k]=number[n-1-k];
number[n-1-k]=t;
}
定義k
for(k=0;k<=n-1;k++){
輸出number[k];
if(k!=n-1){
輸出空格
}
}
}
否則(也就是n%2不為0) {
for(k=0;k<=n/2;k++){
t=number[k];
number[k]=number[n-1-k];
number[n-1-k]=t;
}
for(int k=0;k<=n-1;k++){
輸出number[k]
if(k!=n-1){
輸出空格
3.代碼截圖(註意,截圖,截圖,截圖。不要粘貼博客上。不用用···語法去渲染)
4.本題調試過程碰到問題及PTA提交列表情況說明。
1.需要再定義一個變量t用於暫存前一個number的值,否則後一個number與前一個交換後還是原來的值
2.在這裏如果是奇數則中間數難以表達,於是我將奇偶分開討論
題目2:簡化的插入排序
1. 本題PTA提交列表(要提交列表,不是結果)
2. 設計思路(用代碼表示扣分)
定義 number[10]用於存放數組十個數; 定義n用於存放輸入數字的個數,a; 輸入n; 當n不為0{ for(int i=0;i<n;i++){ 輸入number[i] } 輸入a if(a<number[0]){ 輸出a的值 } for(int i=0;i<n;i++){ 輸出number[i] if(a>number[i]&&a<number[i+1]) 輸出a } if(a>number[n-1]){ 輸出a; }} else { 輸入a的值; 輸出a的值; }
3.代碼截圖(註意,截圖,截圖,截圖。不要粘貼博客上。不用用···語法去渲染)
4.本題調試過程碰到問題及PTA提交列表情況說明。
1.題目要求每個數字後邊要有空格,當時漏了
2.有負數要插在頭,當時錯
題目3:點贊
1. 本題PTA提交列表(要提交列表,不是結果)
2. 設計思路(用代碼表示扣分)
輸入n 定義數組a[n][10] for(i=0;i<n;i++) 輸入k for(j=0;j<k;j++) 輸入a[i][j]; 遍歷a數組 t=a[i][j] b[t]++ 定義max=b[0];m=0; for(i=1;i<1001;i++){ if(b[i]>=max){ max=b[i]; m=i; } } 輸出m和max的值;
;###3.代碼截圖(註意,截圖,截圖,截圖。不要粘貼博客上。不用用···語法去渲染)
4.本題調試過程碰到問題及PTA提交列表情況說明。
1.全不同, 取到編號邊界值,當時多次輸出
有並列, 取編號最大者,後設計一個max變量解決
二、截圖本周題目集的PTA最後排名。(2分)
PTA排名
三、同學代碼結對互評(1分)
1.互評同學名稱 吳軍霖
2.我的代碼、互評同學代碼截圖
我的:
大佬的:
3.我和同學代碼不同在哪裏?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪裏出問題。
我的代碼:當時沒註意到數組的特殊性,就直接用代入法寫,有點是方便,但是太耍小聰明(當時沒看出來題目要幹啥)
他的代碼:傳統做法,並且排序更加整齊完美,牌面看起來也更舒服
你更喜歡哪種代碼風格? 按牌面講,他的更好看,思路也更清晰,但是考試的時候建議還是用我的寫節約時間
註意:第3項是評分重點,一定要有針對性說出問題,別都說好話,請專業去說他代碼有哪些優勢、哪些劣勢。
四、本周學習總結(3分)
1.你學會了什麽?
1.1 C中如何存儲字符串?
在c語言中存儲一個字符串,一般有兩種方法,一種是字符指針,一種是使用字符數組.
1.2 字符串的結束標誌是什麽,為什麽要結束標誌?
‘\0‘是字符串數組的結束標誌,因為有利於知道字符串的sizeof
1.3 字符串輸入有哪幾種方法?
1.scanf(“%s”,&ch)
2.for(i=0;i<n;i++)
scanf("%c",ch[i])
3.i=0;
while((ch[i]=getchar())!=‘\0‘){i++}
1.4 數字字符怎麽轉整數,寫個偽代碼?
用字符的值減去‘0‘;
定義字符數組char c;
定義整型變量int n;
c = getchar();
n = c-48;/48是0的ascii碼值/
輸出n
1.5 16進制、二進制字符串如何轉10進制?寫偽代碼?
定義字符串b【999】,輸入b
當a不為0
number=number*16+b[i]-‘0‘;
2.本周的內容,你還不會什麽?
1.還不會關於字符數組怎麽從中間插入 刪掉字符(PTA題)
2.約瑟夫環不熟練(PTA猴子當大王)
3.期中考試小結
3.1 你認為為什麽沒考好?
1.基礎不紮實,送分沒拿到
2.大題代碼寫太亂,明明思路全是對的,但閱卷人看到有太低級的錯誤以及沒註釋的卷面就沒心情網細看了
3.2 羅列錯題。
請在選擇題、填空題、改錯題、編程題分別舉一題說明為什麽錯了,怎麽改?
1.選擇題:
6.設變量已經正確定義並賦值,正確C語言語句是
A、x+n=i; B、x=y==5; C、x=n%2 D、x=5=4+1;
答案為B 錯選C 原因:沒看到C後沒分號,感覺對了就選了
2.填空題
無
3.改錯題
第一題只看到語法錯誤,沒註意到是否符合程序要求,對於函數的基礎略差
4.編程題
計算組合數定義組合數計算時用了int,應改成double
3.3 下半學期要怎麽調整C的學習?
不單純的打pta 還要對書本知識有針對性的復習
C語言作業