1. 程式人生 > >C語言數據類型作業

C語言數據類型作業

對稱矩陣 result 中間 空格 一個數 error 如果 排序 截圖

一、PTA實驗作業

題目1:7-4 打印菱形圖案

1. 本題PTA提交列表

技術分享圖片

2. 設計思路

  • 1、定義m,n(用於計算空格數,輸出“* ”數),i,j,k(用於循環)
  • 2、輸入n,並讓m=n(m是在循環中用來改變輸出的空格數)
  • 3、for(i=1;i<=n/2+1;i++) 進行前半部分循環,輸出菱形上半部分
  • 4、for(j=1;j<=m-1;j++) 輸出空格數
  • 5、for(k=1;k<=2i-1;k++) 輸出
  • 6、每一行結束,換行並且m自減2
  • 7、 for(i=n/2;i>0;i--) 菱形下半部分的循環
  • 8、m自增2(菱形對稱)
  • 9、 for(j=1;j<=m+1;j++) 輸出空格數,註意這裏是m+1
  • 10、for(k=1;k<=2i-1;k++) 輸出
  • 11、每一行結束,換行

    3.代碼截圖

    技術分享圖片

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

技術分享圖片

  • 1、剛開始我的想法是上半部分結束後先讓m自增2(因為下一行有空格,用原來的m輸出的話下一行會沒有空格),其他的除了循環行數和m變成自增外基本和上半部分一樣,但是這樣我的輸出下半部分還是沒有空格
  • 2、我仔細看了一下代碼,發現第二步循環不應該是m-1,而是m+1

    題目2:7-7 發紅包

    1. 本題PTA提交列表

    技術分享圖片

2. 設計思路

  • 1、定義紅包金額money,並輸入紅包金額大小
  • 2、定義y100,y50,y20,y10,y5,y2,y1分別為100元張數,50元張數,20元張數,10元張數,5元張數,2元張數,1元張數
  • 3、按題目要求從大到小,將金額從100開始除,計算錢的張數
  • 4、按題目要求輸出所有錢幣的張數

    3.代碼截圖

    技術分享圖片

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

  • 1、一開始我的想法是用循環解決這個問題,但是要麽陷入死循環,要麽答案是錯的
  • 2、後來我看了幾次題目,註意到題目從大到小的要求,發現只需從大到小的將金額與錢幣相除,就能得到相應的輸出要求了
  • 3、還有,輸出格式有一定要求,空格要註意好,我已開始用的是%-3d,是錯的,要用%3d才對

    題目3:7-10 簡單計算器

    1. 本題PTA提交列表

    技術分享圖片

2. 設計思路

  • 1、定義字符op,result(計算每一個步驟結果),number1(存放最終結果),number2(除第一個數以外的所有數由它輸入)
  • 2、先輸入第一個數和字符
  • 3、while(op!=‘=‘) 輸入下一個數
  • 4、如果是除號後面為零的情況,輸出error
  • 5、如果不是上面的情況,那麽對op判斷,是+號進行加法運算,是-號進行減法運算,是*號進行乘法運算,是/號進行除法運算,都不是即為非法字符,輸出error(其中result存放每一步結果)
  • 6、number1=result,number1是最終結果,要輸出的
  • 7、再輸入下一個字符
  • 8、循環結束,輸出結果number1

    3.代碼截圖

    技術分享圖片

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

  • 1、一開始忘了判斷除號後為零的情況了= =
  • 2、剛開始我只用result來計算結果,number1只是用來存放第一個數,但是這樣做只是部分正確,樣例的輸出是錯的

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

    技術分享圖片

三、本周學習總結

1.你學會了什麽?

1.1 一維數組如何定義、初始化?

  • 定義一維數組要明確好數組變量名,類型和大小。要註意數組長度應該是一個常量。

    1.2 一維數組在內存中結構?可畫圖說明。數組名表示什麽?

  • 1、技術分享圖片

從起始地址開始依次累加相應字節數

  • 2、數組名是一個地址常量,是存放數組內存空間的首地址

    1.3 為什麽用數組?

  • 數組有表達簡潔,可讀性好,便於適應循環結構的優點。在需要表達同一類型的大量變量時,用數組更加方便清楚。

    1.4 介紹選擇法、冒泡法、直接插入排序如何排序?偽代碼展示.

  • 1、選擇法:
  • 從第一個數開始for(k=0;k<n-1;k++)
  • 將一個數依次與其他數比較for(i=k+1;i<n;i++)
  • 比較完後把最小的和第一個數交換if(a[i]<a[index])
  • 然後接著下一個數,與後面的數比較,如此循環直到最後一個數
  • 2、冒泡法:
  • for(k=0;k<n-1;k++) max=k
  • for(i=0;i<n-1-i;i++) 第一個數與後面的數依次比較
  • if(a[i]>a[max])交換兩個數,將大的值存放在a[max]中
  • 3、直接插入排序
  • for(k=1;k<n-1;k++) j=k
  • for(i=k;i>0;i--) i必須從k開始
  • if(a[j]<a[i-1]) 交換兩者的值

    1.5 介紹什麽是二分查找法?它和順序查找法區別?

  • 1、二分查找法是將要找的數與該數組中間的數比較,以此不斷縮小邊界直到找到要找的數的位置
  • 2、二分查找法用於有序數組,其優點是查找速度快,而順序查找法速度慢,但是當數組無序時,無法應用二分查找法

    1.6 二維數組如何定義、初始化?

  • 1、二維數組包括數組類型,數組名,數組行列長度
  • 2、分行賦初值,順序賦初值

    1.7 矩陣轉置怎麽實現?方陣中:下三角、上三角、對稱矩陣的行標i列標j的關系?請說明。

  • 1、以主對角線為界,行列互換
    -2、下三角:i>=j,上三角:i<=j,對稱矩陣:i==j

    1.8 二維數組一般應用在哪裏?

  • 主要應用於表示二維表和矩陣

    2.本周的內容,你還不會什麽?

  • 1、對題目理解力不夠,容易犯一些小錯誤
  • 2、對於數組的應用,感覺不是很理解,使用不熟練
  • 3、對於數據排序,不是很明白,了解不夠透徹

C語言數據類型作業