C語言部落格作業--一二維數組

來源:互聯網
上載者:User

標籤:判斷   16進位   遊戲   char   1.0   程式   put   and   字元型   

一、PTA實驗作業題目1:7-7 找鞍點1. 本題PTA提交列表

2. 設計思路
{       定義變數n,j,i,flag1,flag2    輸入階數n    定義n階二維數組a[n][n]    for i=0 ;i<n ; i++{         for j=0 ;j< n; j++            輸入資料a[i][j];            }     for i=0 ;i<n ; i++{         for j=0 ;j< n; j++            初始化判斷flag1=0;flag2=0;             for k=0 ;k<n ;k++{                if 該行中有比a[i][j]更大的資料                    flag1=1;                if 該列中有比a[i][j]更小的資料                    flag2=1;            }            if flag1=flag2=0 {                 輸出鞍點位置 i ,j                結束程式            }    }    if flag1,flag2不全為0{        輸出 NONE        結束程式    }} 
3.代碼

4.本題調試過程碰到問題及PTA提交列表情況說明。

碰到的問題:最開始值顧著找鞍點,忘了考慮鞍點不存在的情況,沒有用flag判斷,引用flag判斷後找到鞍點後沒有結束程式導致又輸出了NONE

解決辦法:在輸出鞍點所在位置後直接結束程式

題目2:7-8 加法口訣表1. 本題PTA提交列表

2. 設計思路
{    定義變數repeat,number,n,i,j,flag    定義二維數組a[10][10]    輸入總次數repeat    for  ;repeat>0 ;repeat-- {        輸入最大加數n;        初始化資料number=1        輸出加號‘+‘;        for i=1 ;i<n ;i++{            賦值讓第一行第一列都為 1 2 3 ... n        }        for i=1 ;i<n;i++ {            for j=1;j<=i;j++                計算下上角的數值,等於該元素所在行的第一個數加所在列的第一個數        }        for i=0,j=1;i<n;i++            輸出第一行除加號外身剩下的資料,最後一個輸出後換行         for i=1; i<n;i++{             for j=0; j<i;j++                輸出下三角的資料,在輸出對角線資料時換行          }  } 
3.代碼

4.本題調試過程碰到問題及PTA提交列表情況說明。

碰到的問題:每次迴圈開始時沒有初始化number的值,導致下一輪迴圈時出現錯誤

解決辦法:每次迴圈開始時令number=1

題目3:7-10 楊輝三角1. 本題PTA提交列表

2. 設計思路
{    定義數組n[100][100]    定義變數n ,i,j    輸入n    for i=0 ;i<n ;i++{        for j=0 ;j<n ;j++            初始化資料n[i][j]=0    }    for i=0 ;i<n ;i++        賦值第一列全為1 n[0][i]=1     if n>0&&n<10{        for i=1;i<n;i++{            for j=1;j<n;j++            /*每個資料等於該資料上一行資料加上左上方的資料 */            a[i][j]=a[i-1][j]+a[i-1][j-1];        }        for i=0;i<n;i++{            for j=0;j<=i;j++                輸出資料n[i][j]            換行 putchar(‘\n‘);         }    }    return 0; } 
3.代碼

4.本題調試過程碰到問題及PTA提交列表情況說明。

碰到問題:只令a[0][0]=1;迴圈中從j=0開始,雖然輸出沒有問題,但是迴圈過程中有a[i][j-1]導致數組越界

解決辦法:讓第一列都為1,這樣就能從j=1開始計算而不會導致數組越界

二、本周題目集的PTA最後排名

三、同學代碼結對互評(1分)1.互評同學名稱

朱傑偉

2.My Code、互評同學代碼(此處核心代碼就好,不一定全部代碼,圖上指明是誰的代碼。)

My Code:

同學代碼:

3.我和同學代碼不同在哪裡?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪裡出問題。

不同:My Code用了一個二維數組,而朱同學用了兩個以為數組;我在計算下三角的數值時,直接用了a[i][j]=a[i-1][j]+a[i-1][j-1],而朱同學通過對j,i的判斷得出相應的數值
各自的優勢:My Code更簡潔,直接計算除第一列外的每一個數組,朱同學的代碼用了分支判斷對每種情況進行計算
更喜歡哪種代碼風格:更喜歡My Code風格,My Code較為簡單,判斷和計算過程也較少

四、本周學習總結(3分)1.你學會了什嗎?1.1 C中如何儲存字串?

定義字元型數組存放

1.2 字串的結束標誌是什麼,為什麼要結束標誌?

結束的標誌位 ‘\0‘;當不知道輸入的字串的長度是可用‘\0‘判斷字串是否結束

1.3 字串輸入有哪幾種方法?

三種。
- scanf("%s",a),輸入以空格結束的字串
- scanf("%c",&a[i])/(a[i]=getchar()),利用迴圈輸入每一個字元
- gets(a),輸入以斷行符號結束的字串

1.4 數字字元怎麼轉整數,寫個虛擬碼?
{    ...    初始化sum=0;    for i=0 ;a[i];i++{        if a[i]為數字字元            sum=sum*10+(a[i]-‘0‘);     }    輸出printf("%d",sum); } 
1.5 16進位、二進位字串如何轉10進位?寫虛擬碼?

16進位轉10進位:

{    ...    初始化sum=0;    for i=0 ;a[i];i++{        if a[i]為0到9             sum=sum*16+(a[i]-‘0‘);        if a[i]為a到f             sum=sum*16+(a[i]-‘a‘+10);        if a[i]為A到F             sum=sum*16+(a[i]-‘A‘+10);    }    輸出printf("%d",sum); } 

二進位轉十進位:

{    ...    初始化sum=0;    for i=0 ;a[i];i++{        if a[i]為‘0‘或‘1‘             sum=sum*2+(a[i]-‘0‘);    }    輸出printf("%d",sum); } 
2.本周的內容,你還不會什嗎?

課堂派錯題:


本題對題目的意思沒有理解清楚,以為判斷的是子串與母串相同字母的個數,當str2[k]!=0的時候,count++

3.期中考試小結3.1 你認為為什麼沒考好?

這次考試沒考好,不是因為題有多難,而是因為自身的一些原因:

  • 對這次考試不夠重視,認為會做PTA就能考好這種想法數錯誤的
  • 基礎知識不夠紮實 ,選擇題丟分太多,對選項的分析不夠到位
  • 平時代碼有問題太依賴調試工具,一看答案不對就開始調試,不能通過閱讀代碼找到錯誤
  • 在考試前沒有深入複習,只是簡單的做了一下去年的卷子,簡單的翻了一遍書,對於很多重點沒有複習到,也有一些知識點沒有弄清,例如位元運算。
  • 對題目的閱讀不夠仔細,有些題目本來能拿到分數,但因為讀題不夠仔細,導致做錯
  • 做題的時候有點急躁,特別是編程題,一看到題目就開始直接寫,應該先打一個簡單的草稿,把架構寫好
3.2 羅列錯題

選擇題:
16.以下for迴圈的執行次數是多少? for(x=0,y=0l(y=3)&&(x<=4);x++,y++)
這題正確答案是5次。因為我沒注意到y=3中只有一個‘=‘,這是一個指派陳述式是恒真的,就想多了,去考慮迴圈的內容,選了不確定多少次。

填空題:
9.正確答案:1.0/(i*i),我寫錯了變數,寫成1.0/pow(t,2)

改錯題:
x=MaxcommonFactor(int a,int b);改為 x=MaxcommonFactor(a,b);
對於函數的傳參不夠熟悉,這個錯沒有改出來

編程題:
猜數遊戲:
本題錯誤點:對於隨機數的產生不會寫;題目要求的“直到操作者想停止時才結束”沒有寫到。
加入產生隨機數的語句 :srand(time9NULL));rand()%100+1;
應用do-while 迴圈,當輸入0時結束。

3.3 下半學期要怎麼調整C的學習?
  • 首先我要改掉考試不細心讀題目的壞習慣。有時候我往往看著題目前面就順手把後面的問題寫上了,但是卻錯了很多。這也許也和答題技巧有關係。以後無論是在課堂派還是PTA又或者考試中都要認真審題,自習讀題,把題目看準、看好。時間允許的時候要多檢查幾遍,絕對不允許自己再犯類似於這樣的無謂的錯誤
  • 預習時對於書本的內容一定要認真的閱讀,對一些重點的東西要標出,對於不明白的例題可以自己去敲一遍,調試查看運行過程
  • 複習很重要。不過不必天天複習,畢竟我們也沒有那麼多的時間,但每次課後一定要認真複習。也可以把學的知識積累下來,利用周末的時間複習
  • 以後寫代碼出現錯誤是盡量先自己找,多用printf查錯,實在看不出來再去調試

C語言部落格作業--一二維數組

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.