標籤:儲存 gets 虛擬碼 ima red code 字串 字串輸入 sum
一、PTA實驗作業題目1:求整數序列中出現次數最多的數1. 本題PTA提交列表
2. 設計思路
定義大小為1000的數組a,b,整型變數N,i,j,max,maxnum; 輸入N; for i=0 to N-1 input a[i]; for i=0 to N-1 b[i]=0; for i=0 to N-1 for j=0 to N-1 if a[i]==a[j] b[i] 自增; max=0; for i=0 to N-1 { if b[i]大於max then{ max=b[i]; maxnum=i; } } output a[maxnum],max;
3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明。這是之前嘗試過的兩個代碼
第一次打出的代碼,我把它限制為只出現數字1~10,所以錯誤,後來改寫代碼,又因為計數的問題卡了很久,經過多次修改才成功。題目2:簡化的插入排序1. 本題PTA提交列表
2. 設計思路
定義整型變數i,j,N,x; input N; 定義整型數組a[N]; for (i =0 to N-1) input a[i]; input x; for i=0 to N{ if x<=a[i] { for i=N+1 to i a[j]=a[j-1]; } a[i]=k; break; } for(i=0 to N) output a[i];
3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明。
一直都是這個測試點錯誤,嘗試用不同的方法輸入不同的數字,仍然找不到錯誤。題目3:判斷上三角矩陣1. 本題PTA提交列表
2. 設計思路
定義整型變數T,i,n,p,q,flag; input T; for(i=1 to T) { flag=1; input n; 定義整型數組 a[n][n]; for(p=0 to n) for(q=0 to p) input a[p][q]; for(p=0 to n) for(q=0 to p) if a[p][q]!= 0; flag = 0; if flag -> 1 output YES else output NO
3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明。這題沒有太大問題,但是因為寫代碼過程中行列弄錯,所以寫進來做個記錄。二、本周題目集的PTA最後排名。
三、同學代碼結對互評1.互評同學名稱曾文慧2.My Code、互評同學代碼My Code
曾文惠的代碼
3.我和同學代碼不同在哪裡?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪裡出問題。My Code在進入迴圈後,先判斷某個數在它所在行是否為最大,再判斷找出該數所在列最小的數與這個數是否相同,否則改變行再次判斷;曾文惠同學與我不同的是在迴圈外多判斷一次只有一個數時的情況。我怕更喜歡My Code,比曾文惠同學少判斷一次,但是結果是相同的。四、本周學習總結1.你學會了什嗎?1.1 C中如何儲存字串?字元數組初始化(1)char s[5]={‘h‘,‘a‘,‘p‘,‘p‘,‘y‘} (2)char str[80]={"happy"}(2)中只對前6個元素賦初值,其他元素的值不確定,str[5]為‘\0‘。1.2 字串的結束標誌是什麼,為什麼要結束標誌?(1)字串的結束標誌是‘\0’;(2)在字串遍曆數組時,由於字串並沒有明確地給出有效字元的個數,只規定在字串結束符‘\0’之前的字元都是有效字元,一般用字串結束符‘\0’來控制迴圈。1.3 字串輸入有哪幾種方法?第一種:採用賦值的方式:
例如:char a[80]="welcome";
第二種:用scanf函數,字串的格式控制說明為%s
例如:scanf("%s",s);
第三種:用gets函數
例如:gets(s); scanf與gets不同之處在於:scanf遇到斷行符號或空格就結束輸入,而gets可以輸入空格,遇到斷行符號結束輸入。但在結束輸入時都會自動將輸入的資料和<span style="color:red">‘\0’</span>送入數組中。
1.4 數字字元怎麼轉整數,寫個虛擬碼?
定義字元型變數c;定義整型變數num; input c; num=c-‘0‘; output num;
1.5 16進位、二進位字串如何轉10進位?寫虛擬碼?16進位字串轉10進位
定義字元型數組c[1000];定義整型數組a[1000]={0}; 定義整型變數i,j; gets(c); for i=2 當c[i]!=0 時 i++ { if c[i]>=‘0‘&&c[i]<=‘9‘ then a[i]=c[i]-‘0‘; if c[i]>=‘a‘&&c[i]<=‘z‘ then a[i]=c[i]-87; if c[i]>=‘A‘&&c[i]<=‘Z‘ then a[i]=c[i]-55; } a[i]=-1; 定義整型變數sum=0; for p=2 當a[p]!=-1時 p++ for j=i-4 to j>=0 { b[p]=pow(16,j-4); sum=sum+b[p]; } output sum;
二進位字串如何轉10進位也是類似於上面的方法2.本周的內容,你還不會什嗎?本周PTA題目的第四題和第六題第六題有一個測試點錯誤,但是還沒找出來
3.期中考試小結3.1 你認為為什麼沒考好?課本中零散的知識點沒有進行總結,沒有認真複習課堂派中的練習,考試時注意力不集中,總是寫錯。3.2 羅列錯題。一、16.
解:((y=3)&&(x<=4))中“y=3”為“真”,那麼只要“x<=4”條件滿足,迴圈就會執行,所以迴圈總共執行5次。
三、8.
解:7.(ch=getchar()) 8.(ch>=‘a‘&&ch<=‘z‘)||(ch>=‘A‘&&ch<=‘Z‘) 考試時忘記了怎麼寫。。
四、1.
解:。
五、1.
解:忘記怎麼產生隨機數,具體改正看圖。
3.3 下半學期要怎麼調整C的學習?(1)每次上完課複習課上學習的內容,把課堂上的練習再做一遍,總結小點;(2)每天做一些PTA題目,不堆積作業;(3)學習新知識的同時複習之前的內容,解決自己不會的地方。
C語言部落格作業--一二維數組