C語言部落格作業--資料類型

來源:互聯網
上載者:User

標籤:alt   ken   如何排序   練習   int   tchar   過程   一個   for   

一、PTA實驗作業題目1:倒順數字串1.本題PTA提交列表
2.設計思路
  • 1.定義i,j用於迴圈
  • 2.輸入n
  • 3.for(i=1;i<=n;i++),讓數字順序從小到大後面帶空格順序輸出,如果i等於n,則不帶空格輸出
  • 4.for(j=n-1;j>=1;j--),從最大數(不包括最大數)開始倒序前面帶空格輸出
3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明
  • 格式錯誤:輸出最大數6時後面仍帶空格,與後面最大數倒序前面帶空格輸出發生矛盾
  • 解決方案:特殊情況i=n時,輸出的最大數不帶任何空格

題目2. 發紅包1.本題PTA提交列表
  • 2.設計思路
  • 思路:用全域變數定義函數解決此題
  • 1.聲明函數void money(int m),定義整型全域變數a存放扣除相應面額後剩餘的金額,m存放剩餘金額,
    n存放紙幣面額,f存放總金額
  • 2.定義函數,藉助整型變數b存放相應紙幣面額的張數,先a=m%n; 再運算b=m/n; 最後m=a;
  • 3.m最開始讓它等於f總金額,再使用函數,因為m為全域變數,所以上一個函數結束,其值能繼續為下一個函數所用
  • 4.money(100);
    money(50);
    money(20);
    money(10);
    money(5);
    money(2);
    money(1);
  • 5.printf("%3d元:%3d張\n",n,b);按前面寬度為3輸出並換行

3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明
  • 格式錯誤:最後輸出沒有按照個位對齊的格式輸出

  • 解決方案:最後輸出語句從printf("%d元:%d張\n",n,b);改為printf("%3d元:%3d張\n",n,b);

題目3.切分運算式——寫個tokenizer吧1.本題PTA提交列表
2.設計思路
  • 1.定義字元型變數a存放當前字元,b存放a前面一個字元
  • 2.輸入字元a,讓b=a
  • 3.while迴圈語句之前判斷第一個字元:如果第一個字元a>=‘(‘&&a<=‘/‘&&a!=‘-‘&&a!=‘+‘,換行輸出
    如果第一個字元a==‘-‘||a==‘+‘,不換行輸出
    如果第一個字元a>=‘0‘&&a<=‘9‘,不換行輸出
  • 4.while語句,條件為a不等於‘/n’(換行),讓b=a存放上一個字元,a=getchar()擷取下一個新字元
  • 5.如果當前字元a為數字字元,不換行輸出,continue語句開始新的迴圈
    如果上一個字元b為數字字元,當前a為字元‘.‘ ,則不換行輸出,continue語句開始新的迴圈
    如果前一個字元b為數字字元,當前字元a為運算數,先換行再輸出再換行,continue語句開始新的迴圈
    如果上一個字元b為‘(‘,當前字元a為‘-‘,肯定為負數,‘-‘不換行輸出,continue語句開始新的迴圈
    如果當前字元a為除‘-‘外的運算子,都要輸出換行,continue語句開始新的迴圈
    根據讀取的新字元判斷while迴圈條件
3.代碼

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


這兩個地方答案錯誤,

解決方案:對第一個讀取的字元特性判斷:如果第一個字元為‘+’或者‘-’,不換行輸出 ,後面的字元交給後面的程式判斷

二、本周題目集的PTA最後排名
三、本周學習總結1.你學會了什嗎?1.1 一維數組如何定義、初始化?
  • 定義:數群組類型+數組名+[數組長度] 初始化:資料類型+ 數組名+[整型常量運算式]={初值1,初值2,……}

    1.2一維數組在記憶體中結構?可畫圖說明。數組名表示什嗎?

  • 數組名是一個地址常量,存放數組記憶體空間的首地址

    1.3為什麼用數組?
  • 數組是一組相同類型資料的有序集合,在程式中能重複表格達和使用,且表達簡潔,可讀性好,便於使用迴圈結構

    1.4介紹選擇法、冒泡法、直接插入排序如何排序?虛擬碼展示
  • 選擇法:

          1.將輸入數依次賦給數組a的n個元素a[0]~a[n-1]      2.對n個數排序,for(k=0;k<n-1;k++) min=k min存放最小值所在下標      3.for(i=k+1;i<n;i++) 讓i從後一項開始,如果a[i]<a[min],令a[i]與a[min]值互相交換      4.輸出n個數組元素的值 
  • 冒泡法:

          1.將輸入數依次賦給數組a的n個元素a[0]—a[n-1]      2.對n個數排序,for(k=0;k<n-1;k++) max=k ,max存放最大值所在下標      3.for(i=0;i<n-1-i;i++) 讓i從0開始,因為每次迴圈最後一項為最大數,故下次迴圈不需要再與上一次迴圈的最大項比較,所以每次少一項為n-i-1,如果a[i]>a[max],令a[i]與a[max]值互相交換      4.輸出n個數組元素的值
  • 直接插入排序:

           1.將輸入數依次賦給數組a的n個元素a[0]—a[n-1]       2.對n個數排序,for(k=1;k<n-1;k++) j=k       3.執行for(i=k;i>0;i--) 讓i從k開始,再與之前的數組進行大小比較,如果比前一項小就互換兩值,如果a[j]<a[i-1],令a[i]與a[i-1]值互相交換,j=i-1       4.輸出n個數組元素的值 
1.5介紹什麼是二分尋找法?它和順序尋找法區別?
  • 二分尋找法: 定義一個數組a,首先尋找的數與數組a的中位元比較,若小,則取中位元左半部分,(若大,則取中位元右半部分),在去左半部分的中位元依次比較重複此步驟,直至找到,否則當左界low>右界high,則輸出無
    區別:如果數組a無序,且在資料量小的情況下 ,順序尋找優於二分尋找,但是當資料量特別大,且數組a有序的情況下,二分尋找法方便快捷,運算量遠遠小於順序尋找,尋找關鍵詞所用時間少。

    1.6二維數組如何定義、初始化?
  • 定義:類型名+數組名+[行長度]+[列長度]
  • 初始化:分行賦初值:int a [3] [3] ={ { 1,2,3} , {4,5,6} ,{7,8,9} } 順序賦初值: int a [3] [3] = {1,2,3,4,5,6,7,8,9}

    1.7 矩陣轉置怎麼實現?方陣中:下三角、上三角、對稱矩陣的行標i列標j的關係?請說明
  • 以主對角線為界,行列互換
  • 下三角:i>=j
    上三角:i<=j
    對稱矩陣:i==j

    1.8 二維數組一般應用在哪裡?
  • 主要用於表示二維表和矩陣

2.本周的內容,你還不會什嗎?
  • 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.