C語言博客做業--一二維數組

1、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
//輸入repeat
for 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提交列表狀況說明

  • 格式錯誤,緣由在於當i等於j時要特殊輸出

題目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時才執行

2、截圖本週題目集的PTA最後排名。

PTA排名

3、同窗代碼結對互評

1.互評同窗名稱

黃澤彬c++

2.個人代碼、互評同窗代碼截圖(此處截圖核心代碼就好,不必定截圖所有代碼,圖上指明是誰的代碼。


3.我和同窗代碼不一樣在哪裏?有哪些各自優點?你更喜歡哪一種代碼風格?若是同窗代碼有錯的也請幫忙指出來哪裏出問題。

個人代碼將插入數做爲數組的最後一位,而他把插入數單獨放在一個變量裏;他比我多用了一個數組,目的是將在把原數組往裏放的同時把插入數一併放好,而後一併輸出;他把數組元素個數爲0、一、大於1時分出來作特殊輸出,而我直接把全部狀況放在一塊兒。
個人優點在於變量少,只使用了一個數組。他的優點在於在n爲0、1的狀況下計算過程會更迅速,可是當n大於1時他的代碼比個人代碼計算過程可能要更多一些。
個人代碼風格。

4、本週學習總結

1.你學會了什麼?

  • gets()函數、puts()函數、%s的使用
  • 用字符數組來解決進制相互轉換問題
  • 字符數組的基本性質,如字符數組存儲個數之類
  • 更深刻了解二維數組在部分情景問題下的使用

1.1 C中如何存儲字符串?

  • 定義字符數組存儲

1.2 字符串的結束標誌是什麼,爲何要結束標誌?

  • 結束標誌是'\0'
  • 使其餘數組元素與這個字符串無關

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 羅列錯題。請在選擇題、填空題、改錯題、編程題分別舉一題說明爲何錯了,怎麼改?

選擇題的第九題

  • 錯在沒有理解&&和||的優先級

填空題第三題

  • 錯在不知道ASCII碼爲65的符號是什麼

改錯題最後一題

  • 錯在判斷是大於等於仍是小於上面

編程題第三題

  • 錯在功能函數裏的變量設置上
  • 仔細檢查一遍

3.3 下半學期要怎麼調整C的學習?

  • 要兼顧c的基礎知識的學習,不能只重於PTA
  • 寫題目前先思考題目要求作什麼,要怎樣作到,和之前作過的哪一個題目較類似,再思考該怎麼下手
  • 嘗試在必定時間裏寫完一道編程題-
相關文章
相關標籤/搜索