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

來源:互聯網
上載者:User

標籤:嵌套   個學生   枚舉   編號   int   整數   空間   簡單   c語言   

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

2. 設計思路
定義cala函數,定義i      for  i=0  to   n  遍曆數組           計算每一個學生的三門課成績的和,存放在sum中定義sort函數,定義結構體變數temp,定義i,j      for  i=0  to   n  外迴圈           for  j=i   to  n    內迴圈           如果p[i].sum<p[j].sum,交換位置
3.代碼

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

第一次編譯錯誤是我只把cala函數貼在了裡面,提示編譯錯誤

題目2:7-1 計算職工工資1. 本題PTA提交列表

2. 設計思路
struct stuff{    char name[11];    float jbpay;    float fdpay;    float pay;    float sfpay;};定義結構體stuff包含姓名,基本工資,浮動工資,支出,實發工資;定義N;定義結構體數組s[N];定義i;   輸入N   for  i=0   to   N        輸入職工的資料,即姓名, 基本工資,浮動工資,支出        計算實發工資,實發工資=基本工資+浮動工資-支出   for  i=0   to   N        輸出職工的姓名和實發工資
3.代碼

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

第一次答案錯誤,我把實發工資定義成結構體外的一個雙精確度浮點型資料,答案錯誤

題目3:7-6 通訊錄的錄入與顯示1. 本題PTA提交列表

2. 設計思路
struct  maillist                    {    char name[11];    char birthday[11];    char sex;          char tel[17];         char mobile[17]; };定義結構體maillist包含姓名,出生日期,性別,固定電話號碼,行動電話號碼;定義N;定義結構體數組mail[N];定義i,k,n[10];   輸入N   for  i=0   to   N        輸入通訊錄中的資料,即姓名,出生日期,性別,固定電話號碼,行動電話號碼   輸入查詢編號的次數k   for  i=0   to   k        輸入的編號存放在數組n中        如果n[i]>=0&&n[i]<N即輸入的編號在0到N範圍內,即找到了,輸出姓名 固話 手機 性別 生日       否則 沒找到,輸出Not Found
3.代碼

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

誤明顯問題

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

三、閱讀代碼四、本周學習總結1.自己總結本周學習內容。
  • 1.結構是C語言中一種新的構造資料類型,它能夠將不同資料的類型匯聚成一個整體;同時,結構又是一個變數的彙總,可以按照對基礎資料型別 (Elementary Data Type)的操作方法單獨使用其成員變數,c語言中,結構體的定義是一條語句,所以要用分號結尾
  • 2.定義嵌套迴圈的結構類型時,必須先定義其成員的結構類型,再定義主結構類型
  • 3.結構體指標可傳遞多個資料的地址,參數傳遞的形式簡單,但效率低
  • 4.結構變數的定義和初始化
    (1)單獨定義、混合定義、無類型名定義
    (2)結構變數的初始化採用初始化表的方法,大括弧內各資料間用逗號隔開,將大括弧內的資料按順序賦給結構變數內每個成員,資料類型要求一致
  • 5.結構變數成員的引用。

    結構變數名.結構體中資料名結構指標->結構體中資料名
    結構體、共用體、枚舉這種構造資料類型特點。
  • 結構體和數組一樣都是構造型資料類型,和數組不同的是,結構體可以處理不同類型的資料。結構體裡還可以有結構體類型、共用體的類型的資料。結構體每一位成員都用來表示一種具體事務的屬性。結構體總空間大小,等於各成員總長度
  • 共用體是一種多變數共用儲存空間的構造類型,它允許幾種不同的變數共用同一儲存空間。共用體成員可以表示多種屬性(同一儲存空間可以儲存不同類型的資料)。共用體空間等於最大成員佔據的空間。共用體不能賦初值。共用體定義union 共用體名稱{ 資料1,資料2......}結構體名稱;struct 結構體名稱{ 資料1,資料2......};
  • 當一個變數有幾個固定的可能取值時,可以將這個變數定義為枚舉類型。枚舉類型是指變數的值可以全部列出,定義一個枚舉變數後,變數的值確定在定義之中。枚舉元素是常量,只能在定義階段賦值。枚舉定義enum 枚舉名稱 {資料1,資料2,...};枚舉變數定義1.先定義枚舉類型,再定義枚舉變數2.定義枚舉類型的同時定義枚舉變數3.省略枚舉名稱,直接定義枚舉變數

    遞迴函式原理
  • 遞迴就是用函數直接調用自己或通過一系列調用語句間接調用自己來描述問題和解決問題的方法。
  • 遞迴通常用來解決=構成原問題的子問題與原問題在結構上相似,可以用類似的方法解決的問題。整個問題的解決,可以分為兩部分:第一部分是一些特殊情況,有直接的解法;第二部分與原問題相似,但比原問題的規模小。
  • 遞迴是把一個不能或不好解決的大問題轉化為一個或幾個小問題,再把這些小問題進一步分解成更小的問題,直至每個小問題都可以直接解決。
  • 遞迴有兩個基本要素(1)邊界條件:確定遞迴到何時終止。(2)遞迴模式:大問題是如何分解為小問題的,也稱為遞迴體。遞迴函式只有具備了這兩個要素,才能在有限次計算後得出結果
  • 在遞迴函式中,調用函數和被調用函數是同一個函數,要注意遞迴函式的調用層次,如果把調用遞迴函式的主函數稱為第0層,進入函數後,首次遞迴調用自身稱為第1層調用;從第i層遞迴調用自身稱為第i+1層。反之,退出第i+1層調用應該返回第i層。
  • 遞迴函式的內部執行過程。一個遞迴函式的調用過程類似於多個函數的嵌套的調用,只不過調用函數和被調用函數是同一個函數。

    2.羅列本周一些錯題。

    線性表用順序實現。請填空寫一個求線性表L 中所有奇數之和的演算法。
    例如:
    L=(1,2,3,4,5) 其和為 9

    #include<stdio.h>#define N 10typedef struct sqlist {   int data[N];   int last;   }LIST; int Total(List list) { return sum;   } void Show(LIST list) {   int i;   for(i=0;i<=list.last;i++)  printf("%3d", list.data[i]);   printf("\n"); }int main() {LIST list;int i,sum;for(i=0;i<=5;i++) list.data[i]=i;list.last=5;Show(list);sum=Total(list);printf("sum=%3d\n",sum);return 0;}

    答案

    int sum=0;for(int i=0;i<=list.last;i++)   if(list.data[i]%2)  sum+=list.data[i];

    程式通過定義學生結構體變數,儲存了學生的學號、姓名和3門課的成績。
    函數fun的功能是將形參a所指結構體變數s中的資料進行修改,並把a中地址作為函數值返回主函數,在主函數中輸出修改後的資料。
    例如:a所指變數s中的學號、姓名、和三門課的成績依次是:
    10001、" ZhangSan "、95、80、88,
    修改後輸出t中的資料應為:10002、"LiSi "、96、81、89。

    #include<stdio.h>#include<string.h>struct student {  long  sno;  char  name[10];  float  score[3];}; ______2__________ Modif(struct student  *p){   int  i;   p->sno = 10002;   strcpy(p->name, "LiSi");   for (i=0; i<3; i++)   ______3_______++;   return _____4________;}void main(){  struct student  s={10001,"ZhangSan", 95, 80, 88},  *t;  int  i;  printf("\n\nThe original data :\n");  printf("\nNo: %ld  Name: %s\nScores:  ",s.sno, s.name);  for (i=0; i<3; i++) printf("%6.2f ", ___1____);  printf("\n");  t = Modif(&s);  printf("\nThe data after modified :\n");  printf("\nNo: %ld  Name: %s\nScores:  ",t->sno, t->name);  for (i=0; i<3; i++)printf("%6.2f ", t->score[i]);  return 0;}

    答案

    s.score[i]struct student *p->score[i]p

    程式改錯題:
    輸入一個正整數n(3<=n<=10),再輸入n個僱員的資訊(如下表所示),輸出每人的姓名和實發工資(基本工資+浮動工資-支出)。
    格式:

    #include<stdio.h>int main(){  struct emp{       char name[10];     float jbg;     float fdg;     float zc; };int i,n;printf(“n=”);scanf(“%d”,&n);for(i=0;i<n;i++)     scanf(“%s%d%d%d”,emp[i].name,emp[i].&jbg,emp[i].&fdg,emp[i],&zc);for(i=0;i<n;i++)     printf(“%5s實發工資:%d\n”, emp[i].name,emp[i].zc);return 0;}

    答案

    #include<stdio.h>int main(){  struct {       char name[10];     float jbg;     float fdg;     float zc; }emp[10];  //1int i,n;printf("n=");scanf("%d",&n);getchar();  //2for(i=0;i<n;i++)    {      scanf("%s%f%f%f",emp[i].name,&emp[i].jbg,&emp[i].fdg,&emp[i].zc);   //3      getchar();} //4for(i=0;i<n;i++)     printf("%5s實發工資:%7.2f\n", emp[i].name,emp[i]. jbg+emp[i]. fdg-emp[i].zc);//5return 0;}

    以下程式的運行結果是 :

    # include <string.h>typedef struct student{                 char name[10];                 long sno;                 float score;              }STU;main( ){  STU  a={“zhangsan”,2001,95},b={“Shangxian”,2002,90},c={“Anhua”,2003,95},d,*p=&d;           d=a;           if(strcmp(a.name,b.name)>0)   d=b;           if(strcmp(c.name,d.name)>0)   d=c;           printf(“%ld%s\n”,d.sno,p->name); }

    答案

    2002Shangxian

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.