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

來源:互聯網
上載者:User

標籤:全面   scan   輸出   clu   條件   優勢   解決方案   函數   for迴圈   

一、PTA實驗作業題目1.出生年1. 本題PTA提交列表
  • 2. 設計思路
  • 1.定義數組r[10],後面用於存放位元
  • 2.如果年份小於10000,接下來使用memset讓r[10]裡的每個元素都為0
  • 3.讓b存放year,i存放年份的個位,再用b存放去除個位的年份,再讓r[i]等於1,迴圈直至b=0結束
  • 4.用一個for迴圈,定義一個整型sum求r[10]裡所有元素的和,也就是求有幾位元不相同
  • 5.如果繼續判斷year是否<1000且year%10!=0,說明這個年份不為10的倍數,最前面補充0被當做不同位,需要sum++;
  • 6.如果sum==n,跳出條件為sum!=n的從2開始的while迴圈結束程式並以%04d的方式輸出,否則year++,count++(count計算與最開始的年份相差多少年份)
  • 補充:%04d是不足4位在該數前補0補到4位

    3.代碼
  • 4.本題調試過程碰到問題及PTA提交列表情況說明
  • 問題:部分正確,錯在這裡:
    這個地方出現問題,比如輸入2013 3 ,2013被當做3位元字不同
  • 解決問題的方法:原先演算法存在錯誤,一開始我是讓2與0,1,3,比較,如果都不相同則讓sum++,再讓0與1,3比較,以此類推
    最後一個3就不判斷,所以最開始sum為0,最後變為3,導致程式錯誤,所以後面改用r[10]數組存放(每次存放前數組裡的元素都為0),
    比如2013為r[2]=1,r[0]=1,r[1]=0,r[3]=1,2011為r[2]=1,r[0]=1,r[1]=1,r[1]=1,有相同位元在數組裡項數是一樣的,最後將r[10]裡所以元素相加,得sum(不同位元)

題目2.判斷上三角矩陣1. 本題PTA提交列表
2.設計思路
  • 1.輸入T為待測矩陣的個數,n為n階方陣,之後輸入二維數組
  • 2.用falg=0作為判斷是否為上三角矩陣的標記,先讓flag=0,之後進入迴圈判斷
  • 3.for(i=0;i
  • 4.最後判斷flag,為0輸出YES,為1輸出NO

    3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明
  • 問題:自己學術不精,認為對角線上有0存在的話就不為對角矩陣,所以特地寫了演算法判斷對角線

發現PTA上是錯誤的

  • 解決方案:發現問題後與同學交流,瞭解對角線上有0也能是上三角矩陣,刪除判斷對角線的演算法,答案正確
題目3.找出不是兩個數組共有的元素1. 本題PTA提交列表
2.設計思路
  • 1.讀取兩行一維數組
  • 2.讓第一行數組裡的每個元素與第二行的每個數組裡的元素進行比較,有相同讓flag=1
    每個數比較完之後,如果flag不等於1,說明該數與第二行數組的數都不相同,存入c[p]數組,p++;
  • 3.同理,第二行數組也是如此,將不相同的數存入c[p]數組,p++,c數組用於存放兩個數組不相同的數
  • 4.遍曆c數組,for(k=0;k<p for(j=0;j
  • 5.輸出:最開始讓mark為0,如果mark不為0,則輸出“ %d”(數前帶空格),如果mark為0(說明為第一次輸出),則輸出“%d”(數前不帶空格),並讓mark=1

    3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明
  • 部分正確:錯在輸出的時候,
    發現最開始多輸出了1個3
  • 解決方案:調試過程中發現輸出第一個數後讓mark=1,這樣也能進入另一種輸出方式,結果輸出兩個3

    所以調換兩個輸出方式的位置
    正確:
    錯誤:
二.本周題目集的PTA最後排名

三、同學代碼結對互評1.互評同學名稱
  • 熊志堅
2.My Code、互評同學代碼
  • My Code:

  • 志堅的代碼:

3.我和同學代碼不同在哪裡?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪裡出問題
  • 不同:志堅同學用了一個二維數組,輸出二維數組條件為for(i=0;i<n;i++) for(j=0;j<=i;j++),輸出數的個數與行數和列數相同,同時還使用了#include

  • 沒有發現錯誤,代碼挺不錯的 ,我說實話我喜歡志堅同學的代碼的風格,確實比我的好

    四、本周學習總結1.你學會了什嗎?1.1 C中如何儲存字串?
  • 字串可以存放在一維字元數組中並以Null 字元‘\0’作為結束標誌
    例如:static char s[6] = {‘H’,‘E’,‘L’,‘L’,‘O’,‘\0’};

    1.2 字串的結束標誌是什麼,為什麼要結束標誌?
  • 結束標誌是‘\0’
  • 因為普通數組元素的個數是確定的,一般用下標控制迴圈,而字串沒有顯示地給出有效字元的個數
    只規定‘\0’之前的字元為有效字元,所以通過判斷字元是否為‘\0’來決定是否要結束迴圈

    1.3 字串輸入有哪幾種方法?
  • 三種種
  • 1.scanf("%s”,s),遇斷行符號或者空格結束,並自動將‘\0‘輸入字串,字串中不能帶空格
  • 2.gets("%s",s),遇斷行符號結束,並自動將‘\0‘輸入字串,字串中能帶空格
  • 3.for(i=0;s!=‘\n‘;i++) scanf(‘%c",&s[i]),迴圈結束後s[i]=‘\0’,字串中能帶空格

    1.4 數字字元怎麼轉整數,寫個虛擬碼
  • 1.先輸入所有數字字元op存入字元數組a
  • 2.再運用演算法(number為int型)number=op-‘0’,再把number存放入普通數組b

    1.5 16進位、二進位字串如何轉10進位?寫虛擬碼?二進位:
  • 1.將字串存放入字元數組a,sum=0;
  • 2.將字串裡的每個字元進行sum=sum*2+a[i]-‘0‘累加累乘求和,直至a[i]=‘\0’結束,輸出sum
    十六進位:
  • 1.將字串存放入字元數組a,sum=0;
    -2. 判斷字串裡的每個元素是否為十六進位數
    if(a[i]>=‘0‘&&a[i]<=‘9‘) sum=sum16+a[i]-‘0‘;
    if(a[i]>=‘a‘&&a[i]<=‘f‘) sum=sum
    16+a[i]-‘a‘+10;
    if(a[i]>=‘A‘&&a[i]<=‘F‘) sum=sum*16+a[i]-‘A‘+10;
    直至a[i]=‘\0’結束,輸出sum

    2.本周的內容,你還不會什嗎?
  • 課堂派字元數組第14題,
    k值為2,n[k]不是超出了定義數組的範圍了嗎? 為什麼還是值是2?
  • 當調用函數時,實參是一個數組名,則向函數傳送的是數組的首地址,不是數組每一個元素的地址。

    3.期中考試小結3.1你認為為什麼沒考好?
  • 1.考前沒有仔細複習
  • 2.基礎知識還是不夠紮實,面對問題需要思考較長時間
  • 3.概念題幾乎全軍覆沒,對概念知識需要全面鞏固
  • 4.粗心

    3.2 羅列錯題
  • 選擇題:第四題

錯因:位元組和數的概念模糊不清
1.位元組通常用英文單詞“bit”來表示,有時也可以寫做“b” 改: bit是位元,Byte才是位元組,也可以寫做B
2.目前廣泛使用的Pentium機其字長為16個位元組 改:為32個位元組
3.電腦中不是所有數的運算均為補碼計算 正確 :邏輯運算就不為補碼計算
4.電腦的字長並不一定是Byte的整數倍 改:一定是Byte的整數倍

  • 填空題:第三題:

錯因:以為之前的代碼中有輸入語句
改:((ch=gerchar())!=‘\n‘)

  • 改錯題:第二題:

錯因:沒看清題,以為之前做過類似的題目直接下手,認為是n++;
改n++為n+=2;

  • 編程題:第三題:從n個不同的數中取r個數的所有選擇的個數。其個數值為:

錯因:定義函數時用傳回值為int型,其他大體對
改正:將傳回值改為double型

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.