標籤:檢查 不執行 c++ ascii碼 而且 一個 閱讀 find 優勢
一、PTA實驗作業題目1(7-6)(1).本題PTA提交列表
(2)設計思路
//天數n;數組下標i;小時數h,分鐘數m;對應書號的標籤數組flag[1001]//總閱讀時間sum初始化為0,借書次數k初始化為0//E或S的標誌ch;//定義a[1001]來放每本書的借出時間while (1) if n等於0 //跳出迴圈 //輸入數組下標i;E或S的標誌ch;小時數h;分鐘數m; if i等於0 //n自減 if k等於0 sum=0; else sum=sum與k的商 //輸出 //k、sum歸0; //進入下一個迴圈 if ch的值為S a[i]=小時數h乘上60再加上m; flag[i]=1; else if flag[i]等於1 flag[i]=0; sum+=歸還時間減去借出時間再轉換成分鐘數; k++;
(3)代碼
(4)本題調試過程碰到問題及PTA提交列表情況說明
- 當用邊界時間進行測試時,發現a[i]並沒有記入時間;而且,當一本書被多次借出時,只記入最後一次借出時的時間,因此出現了錯誤
- 把let數組改成flag數組,記錄每一本書的狀態,當對應的flag值為1時不執行借出,消去可不要的變數
題目2(7-8)(1).本題PTA提交列表
(2)設計思路
//外迴圈次數repeat,迴圈變數i,j;矩陣階數n//輸入repeatfor repeat to 0 //輸入n //定義n階矩陣a[n][n]; a[0][0]=2;//先使第一個元素為2 for i=0 to n-1 (n-1可取到) for j=0 to i a[i][j]=a[0][0]+i+j;//給矩陣賦值 //以規定格式輸出+ for i=0 to n //輸出第一列 if i 等於n //輸出佔一列的數 else //輸出佔四列的數 //輸出分行符號 for i=0 to n-1 //輸出每列開頭的數 for j=0 to i if i與j相等 //輸出佔一列的數 else //輸出佔四列的數 //輸出分行符號
(3)代碼
(4)本題調試過程碰到問題及PTA提交列表情況說明
題目3 (7-12)(1).本題PTA提交列表
(2)設計思路
//自訂的功能函數 void find(int a[],int b[],int n,int m) //迴圈變數i,j;能存入a數組和b數組所有元素的數組c[n+m];標誌變數flag;計數變數cnt=0;for i=0 to n-1 flag=0;//初始化 for j=0 to m-1 if a[i]等於b[j] flag++; if flag等於0 c[cnt++]=a[i]//找出a數組對於b數組不相同的數,並存放在c數組中;for i=0 to m-1 flag=0;//初始化 for j=0 to n-1 if b[i]等於a[j] flag++; if flag等於0 c[cnt++]=b[i]//找出b數組對於a數組不相同的數,並存放在c數組中;for i=0 to cnt-1 flag=0; if i等於0 //輸出佔一列的c[i] //進入下一次迴圈 else for j=0 to i-1 if c[i]等於c[j] flag++; if flag等於且i大於0 //輸出前有空格的c[i] else if flag等於0且i等於0 //輸出佔一列的c[i]//主函數//a數組中元素個數n;b數組中元素個數m;迴圈變數i;//輸入n、m//定義a[n]、b[m]//輸入a[n]、b[m]//調用功能函數
(3)代碼
(4)本題調試過程碰到問題及PTA提交列表情況說明
- 發現有重複的數輸出,並且某些數之間沒有空格隔開
- 在if (i==0)處加入輸出語句和進入下次迴圈語句;在else處添加條件當flag等於0時才執行
二、本周題目集的PTA最後排名。PTA排名
三、同學代碼結對互評1.互評同學名稱
黃澤彬
2.My Code、互評同學代碼(此處核心代碼就好,不一定全部代碼,圖上指明是誰的代碼。
3.我和同學代碼不同在哪裡?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪裡出問題。
My Code將插入數作為數組的最後一位,而他把插入數單獨放在一個變數裡;他比我多用了一個數組,目的是將在把原數組往裡放的同時把插入數一併放好,然後一併輸出;他把數組元素個數為0、1、大於1時分出來做特殊輸出,而我直接把所有情況放在一起。我的優勢在於變數少,只使用了一個數組。他的優勢在於在n為0、1的情況下計算過程會更迅速,但是當n大於1時他的代碼比My Code計算過程可能要更多一些。My Code風格。
四、本周學習總結1.你學會了什嗎?
- gets()函數、puts()函數、%s的使用
- 用字元數組來解決進位相互轉換問題
- 字元數組的基本性質,如字元數組儲存個數之類
- 更深入瞭解二維數組在部分情景問題下的使用
1.1 C中如何儲存字串?
1.2 字串的結束標誌是什麼,為什麼要結束標誌?
1.3 字串輸入有哪幾種方法?
- 用gets()輸入,或迴圈後將最後一個賦值為‘\0‘
1.4 數字字元怎麼轉整數,寫個虛擬碼?
char i=‘9‘;int j;j=i-‘0‘;
1.5 16進位、二進位字串如何轉10進位?寫虛擬碼?16進位字串轉10進位
int i,sum=0,n;//輸入n;char a[n];//一串16進位字串gets (a);for i=0 to i<n if a[i]大於等於‘0‘小於等於‘9‘ sum+=a[i]乘上16的i次方; else if a[i]大於等於‘a‘小於等於‘f‘ sum+=(a[i]-‘a‘)乘上16的i次方; else if a[i]大於等於‘A‘小於等於‘F‘ sum+=(a[i]-‘A‘)乘上16的i次方;//輸出sum的值
二進位字串轉10進位
int i,sum=0,n;//輸入n;char a[n];//一串二進位字串gets (a);for i=0 to i<n sum+=(a[i]-‘0‘)乘上2的i次方;//輸出sum的值
2.本周的內容,你還不會什嗎?詳細羅列不明白地方,包括課堂派錯題、PTA錯題。
- 題目中的哪些可以使用二維數組來表示還不是很明白
- 字元數組的輸入函數getchar()的用法,
- 有時要輸入一串數字存在整型數組時的辦法
3.期中考試小結3.1 你認為為什麼沒考好?
- 沒有用太多的時間去複習
- 平時學習的知識掌握的不是很牢
- 各個題型的時間分配並不好
- 有些依賴於devc++的調試功能,寫代碼偶爾會漏了符號
- 沒有想清楚就開始寫
3.2 羅列錯題。請在選擇題、填空題、改錯題、編程題分別舉一題說明為什麼錯了,怎麼改?選擇題的第九題
填空題第三題
改錯題最後一題
編程題第三題
3.3 下半學期要怎麼調整C的學習?
- 要兼顧c的基礎知識的學習,不能只重於PTA
- 寫題目前先思考題目要求做什麼,要怎樣做到,和以前做過的哪個題目較相似,再思考該怎麼下手
- 嘗試在一定時間裡寫完一道編程題-
C語言部落格作業--一二維數組