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

來源:互聯網
上載者:User

標籤:getchar   1.5   數字   為我   插入排序   代碼   公約數      get   

一、PTA實驗作業題目1:簡化的插入排序1. 本題PTA提交列表

2.設計思路
int N,i,j,k,number輸入N定義一個長度位為N+1的整形數組輸入數組,將要插入的數放在數組最後一項for i=0 to i<N+1    if a[N]<=a[j]如果要插入的數小於數組中的最小數        number=a[N]        for k=N to k>j            a[k]=a[k-1]數組後移一位        a[j]=number        breakfor i=0 to i<N+1輸出a[i]每個數字後面跟一個空格
3.代碼

4.本題調試過程碰到問題及PTA提交列表情況說明
  • 一開始寫的代碼是這樣的
    要判斷數組是否只有兩位,然後排序,迴圈又多又難以讀懂,導致了錯誤
題目2:判斷上三角矩陣1. 本題PTA提交列表

2.設計思路
int T,n,i,j,k,flag=0;flag為判斷是否為上三角的標誌輸入Tfor k=0 to k<=T    flag=0    輸入n    定義行列都為n的整形二維數組a    for i=0 to i<n        for j=0 j<n j++            輸入a[i][j]    if n不為1        for i=0 to i<n            for j=0 to j<i 上三角                if a[i][j]不為0                    flag=1即不為上三角    else if n為1並且a[0][0]為0        flag=0    if flag為0        輸出Yes並換行    否則        輸出No並換行
3.代碼

4.本題調試過程碰到問題及PTA提交列表情況說明
  • (1)一開始記錯了以為上三角矩陣是對角線一下全都不為0,對角線以上不全為0導致錯誤
  • (2)沒有判斷它為空白矩陣以及為1階矩陣的情況
題目3:裝箱問題1. 本題PTA提交列表

2.設計思路
int n,i,j,number=0,count=1 count為箱子序號,number為裝了幾個箱子輸入n定義一個長度為1000的整形數組afor i=1 to i<=n    輸入a[i]for i=1 to i<=n    forj=1 to j<count        if a[i]+a[j]<=100 即箱子夠裝沒超過100            a[j]=a[i]+a[j] 把a[j]裝到a[i]裡去            輸出a[i]和j即第幾個箱子            break    if j>=count 如果a[i]不夠裝        number++ 箱子數量加1        count++ 箱子的排序加1        輸出a[i]和j輸出number
3.代碼

4.本題調試過程碰到問題及PTA提交列表情況說明
  • 一開始的代碼是這樣的
    在原有的箱子不夠放時,新箱子增加後,沒有把a[i]放入箱子導致錯誤
二、本周題目集的PTA最後排名

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

嚴偉傑

2.My Code、互評同學代碼


3.我和同學代碼不同在哪裡?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪裡出問題
  • 不同點:
    我是用數學規律來判斷它有幾位是不同的,而嚴偉傑同學用到了兩個數組a和b,通過數4個數字中出現的0到10之間數的個數來判斷這個四位元有幾位不同。

  • 各自優勢:
    儘管我的更加簡潔,可是他的代碼更加偏向c語言的知識,而且他的代碼可讀性高,My Code必須要通過一定的計算才能理解,所以我更喜歡他的代碼。

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

定義一個字元數組迴圈輸入字串的每一個字元。

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

結束標誌為‘\0‘ 。因為我們無法知道字串的長度所以需要結束標誌讓它可以在接下來遍曆數組時作為一個迴圈結束的標誌比如 for(i=0;a[i]!=‘\0‘;i++;

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

設a為數組。第一種:gets(a) 可以將輸入的資料和‘\0‘送入數組中,可以吸收空格,遇斷行符號結束。
第二種:scnaf("%s,"a); 可以將輸入的資料和‘\0‘送入數組中,遇斷行符號或空格輸入結束。
第三種:通過迴圈如 while((a[i]=getchar())!=‘\n‘) 的方式輸入。

1.4 數字字元怎麼轉整數,寫個虛擬碼?
char a[10]int number=0,igets(a)輸入字串for i=0 to a[i]!=‘\0‘    number=number*10+a[i]-‘0‘;
1.5 16進位、二進位字串如何轉10進位?寫虛擬碼?

十六進位:

char a[10]int i,number=0gets(a)輸入字串for i=0 to a[i]!=‘0‘遍曆數組    if a[i]為數字字元        number=number*16+a[i]-‘0‘    else if a[i]為a到f的十六進位數        number=number*16+a[i]-‘a‘+10    else if a[i]為A到F的十六進位數        number=number*16+a[i]-‘A‘+10

二進位:

char a[10]int i,number=0gets(a)輸入字串for i=0 to a[i]!=‘0‘遍曆數組    number=number*2+a[i]-‘0‘
2.本周的內容,你還不會什嗎?

pta中字串的冒泡排序不會做,請教了吳軍霖同學並且看了他的代碼以後才會做,對字串的理解不夠。

#include<stdio.h>main(){int i ,j, k,count;char  str1[20],str2[20];printf("zhu chuan:");gets(str1);printf("zi chuan:");gets(str2);【1】;for(i=0;str1[i];i++)for(j=i,k=0;str1[j]==str2[k];j++,k++)if ( 【2】 )count++;printf("chuxian  cishu=%d\n",count);} 

課堂派中的這道題第二個空填錯,寫成str1[j+1]!= str2[k+1],這樣不能遍曆完字串從而判斷母串是否含有字串,答案為 tr2[k+1]==‘\0‘

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

時間安排有問題,編程題沒有時間去做,並且會做的編程題也沒有認真看題目導致了錯誤,時間太趕。而且編程題代碼沒有注釋,導致應得分的點沒有得分,閱卷不仔細。

3.2 羅列錯題

  • 這一題題目要求迴圈輸入計算多個數,而我由於時間緊張而沒看清,導致簡單題出錯。只要在主函數中寫一個while就能改正

  • 我以為float的輸出格式為%lf,所以選了A,其實float輸出格式就是為%f

  • 應該寫getchar()而不是scanf,scanf可能會導致錯誤

  • 這一題沒有把return b改出來,以為r就是最大公約數即為b,其實r在迴圈結束時為0,while的迴圈條件題目給出的是錯誤的,雖然找出來了,但是被幹擾
3.3 下半學期要怎麼調整C的學習?

不能只做pta,書本的基礎內容更要掌握,同時接觸更高的平台,做更有深度的題目讓自己成長。

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.