C语言博客作业--结构体
一、PTA實驗作業
題目1:6-4 結構體數組按總分排序
1. 本題PTA提交列表
2. 設計思路
定義cala函數,定義ifor i=0 to n 遍歷數組計算每一個學生的三門課成績的和,存放在sum中 定義sort函數,定義結構體變量temp,定義i,jfor 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;輸入Nfor 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];輸入Nfor i=0 to N輸入通訊錄中的數據,即姓名,出生日期,性別,固定電話號碼,移動電話號碼輸入查詢編號的次數kfor i=0 to k輸入的編號存放在數組n中如果n[i]>=0&&n[i]<N即輸入的編號在0到N范圍內,即找到了,輸出姓名 固話 手機 性別 生日否則 沒找到,輸出Not Found3.代碼截圖
4.本題調試過程碰到問題及PTA提交列表情況說明。
誤明顯問題
二、截圖本周題目集的PTA最后排名。
三、閱讀代碼
四、本周學習總結
1.自己總結本周學習內容。
- 1.結構是C語言中一種新的構造數據類型,它能夠將不同數據的類型匯聚成一個整體;同時,結構又是一個變量的聚合,可以按照對基本數據類型的操作方法單獨使用其成員變量,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
答案
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。
答案
s.score[i] struct student * p->score[i] p程序改錯題:
輸入一個正整數n(3<=n<=10),再輸入n個雇員的信息(如下表所示),輸出每人的姓名和實發工資(基本工資+浮動工資-支出)。
格式:
答案
#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); //3getchar();} //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轉載于:https://www.cnblogs.com/lbhd/p/8099151.html
總結
以上是生活随笔為你收集整理的C语言博客作业--结构体的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Request Header Or Co
- 下一篇: 如何理解java采用Unicode编码