Part1:結(jié)構(gòu)體類(lèi)型及編程應(yīng)用
#include <stdio.h> const int N=5; // 定義結(jié)構(gòu)體類(lèi)型struct student,并定義STU為其別名 typedef struct student { long no; char name[20]; int score; }STU; // 函數(shù)聲明 void input(STU s[], int n); int findMinlist(STU s[], STU t[], int n); void output(STU s[], int n); int main() { STU stu[N], minlist[N]; int count; printf("錄入%d個(gè)學(xué)生信息\n", N); input(stu, N); printf("\n統(tǒng)計(jì)最低分人數(shù)和學(xué)生信息...\n"); count = findMinlist(stu, minlist, N); printf("\n一共有%d個(gè)最低分,信息如下:\n", count); output(minlist, count); return 0; } // 輸入n個(gè)學(xué)生信息,存放在結(jié)構(gòu)體數(shù)組s中 void input(STU s[], int n) { int i; for(i=0; i<n; i++) scanf("%ld %s %d", &s[i].no, s[i].name, &s[i].score); } // 輸出結(jié)構(gòu)體s中n個(gè)元素信息 void output(STU s[], int n) { int i; for(i=0; i<n; i++) printf("%ld %s %d\n", s[i].no, s[i].name, s[i].score); } // 在結(jié)構(gòu)體數(shù)組s中,查找最低分學(xué)生的記錄,將其存入結(jié)構(gòu)體數(shù)組s中 // 形參n是結(jié)構(gòu)體數(shù)組s中元素個(gè)數(shù) // 函數(shù)返回最低分的學(xué)生人數(shù) int findMinlist(STU s[], STU t[], int n) { int i,k=0,min; min=s[0].score; for(i=1;i<n;i++) if(s[i].score<min) min=s[i].score; for(i=0;i<n;i++) if(s[i].score==min) t[k++]=s[i]; return k; }

#include <stdio.h> #include <string.h> const int N = 10; // 定義結(jié)構(gòu)體類(lèi)型struct student,并定義其別名為STU typedef struct student { long int id; char name[20]; float objective; /*客觀題得分*/ float subjective; /*操作題得分*/ float sum; char level[10]; }STU; // 函數(shù)聲明 void input(STU s[], int n); void output(STU s[], int n); void process(STU s[], int n); int main() { STU stu[N]; printf("錄入%d個(gè)考生信息: 準(zhǔn)考證號(hào),姓名,客觀題得分(<=40),操作題得分(<=60)\n", N); input(stu, N); printf("\n對(duì)考生信息進(jìn)行處理: 計(jì)算總分,確定等級(jí)\n"); process(stu, N); printf("\n打印考生完整信息: 準(zhǔn)考證號(hào),姓名,客觀題得分,操作題得分,總分,等級(jí)\n"); output(stu, N); return 0; } // 錄入考生信息:準(zhǔn)考證號(hào),姓名,客觀題得分,操作題得分 void input(STU s[], int n) { int i; for(i=0;i<n;i++) scanf("%ld%s%f%f",&s[i].id,s[i].name,&s[i].objective,&s[i].subjective); } //輸出考生完整信息: 準(zhǔn)考證號(hào),姓名,客觀題得分,操作題得分,總分,等級(jí) void output(STU s[], int n) { int i; printf("準(zhǔn)考證號(hào) 姓名 客觀題得分 操作題得分 總分 等級(jí)\n"); for(i=0;i<n;i++) printf(" %-9ld%-10s%-13.2f%-10.2f%-7.2f%-8s\n", s[i].id,s[i].name,s[i].objective,s[i].subjective,s[i].sum,s[i].level); } // 對(duì)考生信息進(jìn)行處理:計(jì)算總分,排序,確定等級(jí) void process(STU s[], int n) { int i,j,k; int a1,a2; //用來(lái)表示10%和50%兩個(gè)分界點(diǎn) a1=(int)(N*0.1),a2=(int)(N*0.5); STU temp; for(i=0;i<n;i++) s[i].sum=s[i].objective+s[i].subjective; for(j=0;j<n-1;j++) for(k=0;k<n-j-1;k++) if(s[k].sum<s[k+1].sum) { temp=s[k]; s[k]=s[k+1]; } for(i=0;i<a1;i++) strcpy(s[i].level,"優(yōu)秀"); for(i=a1;i<a2;i++) strcpy(s[i].level,"合格"); for(i=a2;i<n;i++) strcpy(s[i].level,"不合格"); }

Part2: 共用體類(lèi)型及編程示例
小結(jié):結(jié)構(gòu)體, 是一組數(shù)據(jù)的合集. 每個(gè)結(jié)構(gòu)體成員擁有自己的獨(dú)立內(nèi)存.
Part3: 枚舉類(lèi)型及編程示例
小結(jié):1、枚舉是一系列命名的整型常量
2、枚舉類(lèi)型不能直接輸入、輸出枚舉值,枚舉類(lèi)型可以隱含轉(zhuǎn)換為整型,但整型轉(zhuǎn)換為枚舉類(lèi)型,必須顯式轉(zhuǎn)換。
浙公網(wǎng)安備 33010602011771號(hào)