实验六
实验1:
1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 #define N 3 5 typedef struct student{ 6 int id; 7 char name[20]; 8 char subject[20]; 9 double perf; 10 double mid; 11 double final; 12 double total; 13 char level[10]; 14 }STU; 15 void input(STU[],int); 16 void output(STU[],int); 17 void calc(STU[],int); 18 int fail(STU[],STU[],int); 19 void sort(STU[],int); 20 int main(){ 21 STU st[N],fst[N]; 22 int k; 23 printf("录入学生成绩信息:\n"); 24 input(st,N); 25 printf("\n成绩处理...\n"); 26 calc(st,N); 27 k=fail(st,fst,N); 28 sort(st,N); 29 printf("\n学生排名情况:\n"); 30 output(st,N); 31 printf("\n不及格学生信息:\n"); 32 output(fst,k); 33 system("pause"); 34 return 0; 35 } 36 void input(STU s[],int n){ 37 int i; 38 for(i=0;i<n;i++) 39 scanf("%d %s %s %lf %lf %lf",&s[i].id,s[i].name,s[i].subject,&s[i].perf,&s[i].mid,&s[i].final); 40 } 41 void output(STU s[],int n){ 42 int i; 43 printf("----------\n"); 44 printf("学号 姓名 科目 平时 期中 期末 总评 等级\n"); 45 for(i=0;i<n;i++){ 46 printf("%d %-6s %-4s %-4.0f %-4.0f %-4.0f %-4.1f %s\n",s[i].id,s[i].name,s[i].subject,s[i].perf,s[i].mid,s[i].final,s[i].total,s[i].level); 47 } 48 49 } 50 void calc(STU s[],int n){ 51 int i; 52 for(i=0;i<n;i++){ 53 s[i].total=s[i].perf*0.2+s[i].mid*0.2+s[i].final*0.6; 54 if(s[i].total>=90) 55 strcpy(s[i].level,"优"); 56 else if(s[i].total>=80) 57 strcpy(s[i].level,"良"); 58 else if(s[i].total>=70) 59 strcpy(s[i].level,"中"); 60 else if(s[i].total>=60) 61 strcpy(s[i].level,"及格"); 62 else 63 strcpy(s[i].level,"不及格"); 64 65 } 66 67 } 68 int fail(STU s[],STU t[],int n){ 69 int i,cnt=0; 70 for(i=0;i<n;i++) 71 if(s[i].total<60) 72 t[cnt++]=s[i]; 73 return cnt; 74 } 75 void sort(STU s[],int n){ 76 int i,j; 77 STU t; 78 for(i=0;i<n-1;i++) 79 for(j=0;j<n-1-i;j++) 80 if(s[j].total<s[j+1].total){ 81 t=s[j]; 82 s[j]=s[j+1]; 83 s[j+1]=t; 84 } 85 }

实验4:
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 #define N 10 4 typedef struct { 5 char isbn[20]; 6 char name[80]; 7 char author[80]; 8 double sales_price; 9 int sales_count; 10 }Book; 11 void output(Book[], int n); 12 void sort(Book[], int n); 13 double sales_amount(Book[], int n); 14 int main() { 15 Book x[N]= { {"978-7-5327-6082-4", "门将之死", "罗纳德.伦", 42, 51}, 16 {"978-7-308-17047-5", "自由与爱之地:入以色列记", "云也退", 49 , 30}, 17 {"978-7-5404-9344-8", "伦敦人", "克莱格泰勒", 68, 27}, 18 {"978-7-5447-5246-6", "软件体的生命周期", "特德姜", 35, 90}, 19 {"978-7-5722-5475-8", "芯片简史", "汪波", 74.9, 49}, 20 {"978-7-5133-5750-0", "主机战争", "布莱克.J.哈里斯", 128, 42}, 21 {"978-7-2011-4617-1", "世界尽头的咖啡馆", "约翰·史崔勒基", 22.5, 44}, 22 {"978-7-5133-5109-6", "你好外星人", "英国未来出版集团", 118, 42}, 23 {"978-7-1155-0509-5", "无穷的开始:世界进步的本源", "戴维·多伊奇", 37.5, 24 55}, 25 {"978-7-229-14156-1", "源泉", "安.兰德", 84, 59} }; 26 printf("图书销量排名(按销售册数):\n"); 27 sort(x, N); 28 output(x, N); 29 printf("\n图书销售总额:%.2lf\n", sales_amount(x, N)); 30 return 0; 31 } 32 void output(Book x[], int n) { 33 printf("ISBN号 书名 作者 售价 销售册数\n"); 34 int i; 35 for (i = 0; i < N; i++) 36 printf("%-30s %-30s %-30s %-30.1lf %d\n", x[i].isbn, x[i].name, x[i].author, x[i].sales_price, x[i].sales_count); 37 } 38 void sort(Book x[], int n) { 39 int i, j; 40 Book t; 41 for(i=0;i<n-1;i++) 42 for(j=0;j<n-1-i;j++) 43 if (x[j].sales_count < x[j + 1].sales_count) { 44 t = x[j]; 45 x[j] = x[j + 1]; 46 x[j + 1]= t; 47 } 48 } 49 double sales_amount(Book x[], int n) { 50 double s = 0; 51 int i; 52 for (i = 0; i < n; i++) 53 s += x[i].sales_price * x[i].sales_count; 54 return s; 55 }

实验5:
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 typedef struct { 4 int year; 5 int month; 6 int day; 7 }Date; 8 void input(Date* pd); 9 int day_of_year(Date d); 10 int comare_dates(Date d1, Date d2); 11 void test1() { 12 Date d; 13 int i; 14 printf("请输入日期:(以形如2025-12-19这样的形式输入)\n"); 15 for (i = 0; i < 3; ++i) { 16 input(&d); 17 printf("%d-%02d-%02d是这一年中第%d天\n\n", d.year, d.month, d.day, day_of_year(d)); 18 } 19 } 20 void test2() { 21 Date Alice_birth, Bob_birth; 22 int i; 23 int ans; 24 printf("输入Alice和Bob出生日期:(以形如2025-12-19这样的形式输入)\n"); 25 for (i = 0; i < 3; ++i) { 26 input(&Alice_birth); 27 input(&Bob_birth); 28 ans = comare_dates(Alice_birth, Bob_birth); 29 if (ans == 0) 30 printf("Alice和Bob一样大\n\n"); 31 else if (ans == -1) 32 printf("Alice比Bob大\n\n"); 33 else 34 printf("Alice比Bob小\n\n"); 35 } 36 } 37 int main() { 38 printf("测试1:输入日期,打印输出这是一年中第多少天\n"); 39 test1(); 40 printf("\n测试2:两人年龄大小关系\n"); 41 test2(); 42 } 43 void input(Date* pd) { 44 scanf("%d-%d-%d", &pd->year, &pd->month, &pd->day); 45 } 46 int day_of_year(Date d) { 47 int n = d.month; 48 int m = d.year; 49 int k = d.day; 50 int i; 51 int x[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; 52 int s = 0; 53 if (m % 4 == 0 && m % 100 != 0 || m % 400 == 0) { 54 x[2] = 29; 55 for (i = 0; i < n; i++) 56 s = s + x[i]; 57 s = s + k; 58 } 59 else { 60 x[2] = 28; 61 for (i = 0; i < n; i++) 62 s = s + x[i]; 63 s = s + k; 64 } 65 return s; 66 } 67 int comare_dates(Date d1, Date d2) { 68 if (d1.year < d2.year) 69 return -1; 70 else if (d1.year > d2.year) 71 return 1; 72 else { 73 if (d1.month < d2.month) 74 return -1; 75 else if (d1.month > d2.month) 76 return 1; 77 else { 78 if (d1.day > d2.day) 79 return 1; 80 else if (d1.day < d2.day) 81 return -1; 82 else 83 return 0; 84 } 85 } 86 }

实验6:
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include<string.h> 4 enum Role{admin,student,teacher}; 5 typedef struct { 6 char username[20]; 7 char password[20]; 8 enum Role type; 9 }Account; 10 void output(Account x[], int n); 11 int main() { 12 Account x[] = { {"A1001", "123456", student}, 13 {"A1002", "123abcdef", student}, 14 {"A1009", "xyz12121", student}, 15 {"X1009", "9213071x", admin}, 16 {"C11553", "129dfg32k", teacher}, 17 {"X3005", "921kfmg917", student} }; 18 int n; 19 n = sizeof(x) / sizeof(Account); 20 output(x, n); 21 return 0; 22 } 23 void output(Account x[], int n) { 24 int i,j; 25 int m; 26 for (i = 0; i < n; i++) { 27 m = strlen(x[i].password); 28 for (j = 0; j < m; j++) { 29 if (x[i].password[j] != '\0') 30 x[i].password[j] = '*'; 31 } 32 printf("%-20s%-20s", x[i].username, x[i].password); 33 switch (x[i].type) { 34 case 0:printf("admin\n"); break; 35 case 1:printf("student\n"); break; 36 case 2:printf("teacher\n"); break; 37 } 38 } 39 40 41 42 43 }

实验7:
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include<string.h> 4 typedef struct { 5 char name[20]; 6 char phone[12]; 7 int vip; 8 }Contact; 9 void set_vip_contact(Contact x[], int n, char name[]); 10 void output(Contact x[], int n); 11 void display(Contact x[], int n); 12 #define N 10 13 int main() { 14 Contact list[N] = { {"刘一", "15510846604", 0},{"陈二", "18038747351", 0}, 15 {"张三", "18853253914", 0}, 16 {"李四", "13230584477", 0}, 17 {"王五", "15547571923", 0}, 18 {"赵六", "18856659351", 0}, 19 {"周七", "17705843215", 0}, 20 {"孙八", "15552933732", 0}, 21 {"吴九", "18077702405", 0}, 22 {"郑十", "18820725036", 0} }; 23 int vip_cnt, i; 24 char name[20]; 25 printf("显示原始通讯录信息:\n"); 26 output(list, N); 27 printf("\n输入要设置的紧急联系人个数:"); 28 scanf("%d", &vip_cnt); 29 printf("输入%d个联系人姓名:\n", vip_cnt); 30 for(i=0;i<vip_cnt;++i){ 31 scanf("%s", name); 32 set_vip_contact(list, N, name); 33 } 34 printf("\n显示通讯录列表:(按姓名字典序升序排列,紧急联系人最先显示)\n"); 35 display(list, N); 36 return 0; 37 } 38 void output(Contact x[], int n) { 39 int i; 40 for (i = 0; i < n; ++i) { 41 printf("%-10s%-15s", x[i].name, x[i].phone); 42 if (x[i].vip) 43 printf("%5s", "*"); 44 printf("\n"); 45 } 46 } 47 void display(Contact x[], int n) { 48 int i,j=0; 49 Contact t; 50 int k=0; 51 Contact a[N]; 52 int m = 0; 53 for(i=0;i<n;i++) 54 if (x[i].vip == 1) { 55 a[k++] = x[i]; 56 } 57 for (i = 0; i < n; i++) 58 if (x[i].vip == 0) 59 x[m++] = x[i]; 60 for(i=0;i<m-1;i++) 61 for(j=0;j<m-i-1;j++) 62 if (strcmp(x[j].name, x[j + 1].name) > 0) { 63 t = x[j]; 64 x[j] = x[j + 1]; 65 x[j + 1] = t; 66 } 67 for (i = 0; i < m; i++) 68 a[k+i] = x[i]; 69 output(a, n); 70 } 71 void set_vip_contact(Contact x[], int n, char name[]) { 72 int i, j; 73 for (i = 0; i < n; i++) { 74 if (strcmp(x[i].name, name) == 0) 75 x[i].vip = 1; 76 77 } 78 }


浙公网安备 33010602011771号