实验6
试验任务4
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 #include<string.h> 4 #define N 10 5 typedef struct { 6 char isbn[20]; 7 char name[80]; 8 char author[80]; 9 double price; 10 int count; 11 }Book; 12 void output(Book x[], int n) { 13 printf("ISBN号\t\t\t\t书名\t\t\t\t作者\t\t\t售价\t销售册数\n"); 14 for (int i = 0; i < n; i++) { 15 printf("%-32s", x[i].isbn); 16 printf("%-32s", x[i].name); 17 printf("%-25s", x[i].author); 18 printf("%g\t%d\n", x[i].price, x[i].count); 19 20 21 } 22 } 23 void sort(Book x[], int n) { 24 int t; char m[80]; double a; char h[80]; char k[80]; 25 for (int i = 0; i < N; i++) { 26 for (int j = 0; j <=i; j++) { 27 if (x[i].count > x[j].count) { 28 t = x[i].count; 29 x[i].count = x[j].count; 30 x[j].count = t; 31 a = x[i].price; 32 x[i].price = x[j].price; 33 x[j].price = a; 34 strcpy(m, x[i].isbn); 35 strcpy(x[i].isbn, x[j].isbn); 36 strcpy(x[j].isbn,m); 37 strcpy(h, x[i].name); 38 strcpy(x[i].name, x[j].name); 39 strcpy(x[j].name, h); 40 strcpy(k, x[i].author); 41 strcpy(x[i].author, x[j].author); 42 strcpy(x[j].author, k); 43 44 45 46 } 47 } 48 } 49 } 50 double amount(Book x[], int n) { 51 double m = 0; 52 for (int i = 0; i < N; i++) 53 m += x[i].price * x[i].count; 54 return m; 55 } 56 int main() { 57 Book x[N] = { {"978-7-5327-6082-4", "门将之死", "罗纳德.伦", 42, 51}, 58 {"978-7-308-17047-5", "自由与爱之地:入以色列记", "云也退", 49 , 30}, 59 {"978-7-5404-9344-8", "伦敦人", "克莱格泰勒", 68, 27}, 60 {"978-7-5447-5246-6", "软件体的生命周期", "特德姜", 35, 90}, 61 {"978-7-5722-5475-8", "芯片简史", "汪波", 74.9, 49}, 62 {"978-7-5133-5750-0", "主机战争", "布莱克.J.哈里斯", 128, 42}, 63 {"978-7-2011-4617-1", "世界尽头的咖啡馆", "约翰·史崔勒基", 22.5, 44}, 64 {"978-7-5133-5109-6", "你好外星人", "英国未来出版集团", 118, 42}, 65 {"978-7-1155-0509-5", "无穷的开始:世界进步的本源", "戴维·多伊奇", 37.5, 55}, 66 {"978-7-229-14156-1", "源泉", "安.兰德", 84, 59} }; 67 printf("图书销量排名:\n"); 68 sort(x, N); 69 output(x, N); 70 printf("\n图书销量总额:%.2f\n", amount(x, N)); 71 72 return 0; 73 }
图片
试验任务5:
1 #include<stdio.h> 2 typedef struct{ 3 int year; 4 int month; 5 int day; 6 }Date; 7 void input(Date*pd){ 8 scanf("%d-%d-%d",&pd->year,&pd->month,&pd->day); 9 } 10 int dayofyear(Date d){ 11 int n=0; 12 switch(d.month){ 13 case 1:n=0;break; 14 case 2:n=31;break; 15 case 3:n=31+28;break; 16 case 4:n=31*2+28;break; 17 case 5:n=31*2+28+30;break; 18 case 6:n=31*3+28+30;break; 19 case 7:n=31*3+28+30*2;break; 20 case 8:n=31*4+28+30*2;break; 21 case 9:n=31*5+28+30*2;break; 22 case 10:n=31*5+28+30*3;break; 23 case 11:n=31*6+28+30*3;break; 24 case 12:n=31*6+28+30*4;break; 25 } 26 int t=0; 27 if(d.year%400==0) 28 t=1; 29 else if(d.year%4==0&&d.year%100!=0) 30 t=1; 31 else 32 t=0; 33 if(t==1&&d.month>2) 34 n=n+1+d.day; 35 else 36 n=n+d.day; 37 return n; 38 } 39 int compare(Date d1,Date d2){ 40 if(d1.year>d2.year) 41 return 1; 42 else if(d1.year<d2.year) 43 return -1; 44 else{ 45 if(d1.month<d2.month) 46 return -1; 47 else if(d1.month>d2.month) 48 return 1; 49 else{ 50 if(d1.day<d2.day) 51 return -1; 52 else if(d1.day>d2.day) 53 return 1; 54 else return 0; 55 } } 56 57 } 58 59 void test1(){ 60 Date d; 61 int i; 62 printf("输入日期\n"); 63 for(i=0;i<3;i++){ 64 input(&d); 65 printf("%d-%02d-%02d是一年的第%d天\n\n",d.year,d.month,d.day,dayofyear(d)); 66 67 } 68 } 69 void test2(){ 70 Date Alice,Bob; 71 int i;int ans; 72 printf("输入Alice和Bob的出生日期\n"); 73 for(i=0;i<3;i++){ 74 input(&Alice); 75 input(&Bob); 76 ans=compare(Alice,Bob); 77 if(ans == 0) 78 printf("Alice和Bob一样大\n\n"); 79 else if(ans == -1) 80 printf("Alice比Bob大\n\n"); 81 else 82 printf("Alice比Bob小\n\n"); 83 84 } 85 } 86 int main(){ 87 printf("测试1: 输入日期, 打印输出这是一年中第多少天\n"); 88 test1(); 89 90 printf("\n测试2: 两个人年龄大小关系\n"); 91 test2(); 92 93 }

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

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

浙公网安备 33010602011771号