C語言第十次部落格作業--結構體

來源:互聯網
上載者:User

標籤:組織   簡潔   post   靈活   答案   自訂資料類型   部落格   處理   code   

一、PTA實驗作業題目1: 結構體數組按總分排序1. 本題PTA提交列表

2. 設計思路
求出每名學生的總分定義i,j迴圈變數for i=0 to n   for j=0 to 3      p[i].sum+=p[i].score[j]將三個成績累加即為總分end總分從高到低排序定義i,j迴圈變數定義結構體中間變數tfor i=0 to 5   for j=0 to 5-i      冒泡排序從高到低end
3.代碼

4.本題調試過程碰到問題及PTA提交列表情況說明。
  • 答案錯誤:交換數值時只交換了總分,前面的都沒被交換,導致答案輸出錯誤。

  • 調試過程:

解決辦法:將中間變數定義成結構體變數,交換時將結構體的內容整體交換

題目2:有理數比較1. 本題PTA提交列表

2. 設計思路
struct y{    int mol;    int den;}n,m;    //定義表示分子分母的結構體         //並同時定義兩個結構體變數m,n定義a,b,c,d存放原始值輸入兩個有理數兩個有理數進行通分比較兩分子大小 並利用a,b,c,d輸出結果
3.代碼

4.本題調試過程碰到問題及PTA提交列表情況說明。
  • 答案錯誤:本題並不難,只用將兩個數通分,再比較分子大小就好了。錯誤在於最後輸出時的值已經被改變,輸出錯誤

  • 調試過程:

解決辦法:定義四個變數放原本的值,最後利用他們輸出。

題目3:時間換算1. 本題PTA提交列表

2. 設計思路
struct time{    int hh;    int mm;    int ss;} now,result;   //定義表示時間分鐘秒鐘的結構體                //並同時定義一個現在時間的和一個結果時間結構體變數定義n為要加的秒數輸入結構體變數now和n利用時間60進位來換算出結果時間(此處運算不太好表述)    result.ss=(now.ss+n)%60;//根據各自與60的進位關係計算    result.mm=(now.mm+(now.ss+n)/60)%60;    result.hh=now.hh+(now.mm+(now.ss+n)/60)/60;if result.hh等於24   令它等於0
3.代碼

4.本題調試過程碰到問題及PTA提交列表情況說明。
  • 部分正確 :最後一秒到0點時輸出的是24點

  • 調試過程:

解決辦法:加入一個條件判斷

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

三、閱讀代碼整數分解為若干項之和

這道題是周三上機的一道題目,當時看了題目有思路,但是一直做不出來。回來以後上網一查,發現原來可以用遞迴的思路來解決這道題,確實簡單很多。
從上面的代碼不難看出他的遞迴出口是累加的總和等於了輸入的 N。但是我覺得遞迴的特點是形式簡單,但是實際上細節繁多。需要注意非常多細節。

#include<stdio.h>int N;int s[31]; // 存放劃分結果 int top = -1; // 數組指標 int count = 0; // 統計輸出的次數 int sum = 0; // 拆分項累加和 void division (int i);int main (){    scanf ("%d", &N);        division (1);        return 0; }void division (int i) {    if (sum == N) {        count ++;        printf("%d=", N);        int k;        for (k=0; k<top; k++) {            printf("%d+", s[k]);        }        if (count%4 == 0 || s[top] == N) {            printf("%d\n", s[top]);        } else {            printf("%d;", s[top]);        }        return;    } // 輸出部分     if (sum > N) {        return;    }    for (int j=i; j<=N; j++) {        s[++top] = j;        sum += j;         division (j);        sum -= j;        top --;    } // 演算法主體 }
時間換算

這是戴潔的代碼,她的方法簡單明了,將所有時間都換成秒數,最後在換算回去。理解上面比我的60進位好很多,而且她最後輸出也利用的時%02d來解決0點的問題,不用像我一樣再加一個if判斷。

四、本周學習總結1.總結本周學習內容結構體、共用體、枚舉這種構造資料類型特點
  • 結構體:

結構體是把不同類型的資料群組合成一個整體的自訂資料類型,它更像是數組的進化版,數組中的元素必須類型相同。

struct student{   int num;   char name;   int grade;};

結構體型別宣告描述結構的組織形式,不分配記憶體。

  • 共用體:

共用體是使幾個不同類型的變數共佔一段記憶體(相互覆蓋)

union 共用體名{    類型標識符   成員名;    類型標識符   成員名;    .........};
  • 結構體與共用體
    區別:儲存方式不同
    聯絡:兩者可相互嵌套

  • 枚舉:

枚舉元素按常量處理,在定義時由程式員指定,之後不能對他們賦值。

遞迴函式原理
  • 遞迴函式就是直接或者間接的調用自己本身的函數。
    缺點:遞迴快速耗記憶體,不方便閱讀和維護,效率低
    優點:簡潔,適合解決階乘、涉及相反順序的編程問題

  • 尾遞迴:最簡單的調用函數,無需返回調用,相當於迴圈。

宏定義:用宏來定義一些符號變數,方便程式的編製。
  • 用途:
    符號常量,如PI,數組定義大小,以增加程式的靈活性
    簡單的函數功能實現
    為程式書寫帶來一些方便
2.羅列本周一些錯題。
  • 這一題的迴圈條件錯了導致最後一個數沒加上

  • 這道題的第二個空確實不會,聽老師講完後才明白為什麼要這樣定義。

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.