实验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 }
View Code

图片屏幕截图 2025-12-19 142423

 

 

 

 

 

试验任务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 } 
View Code

捕获

试验任务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 }
View Code

屏幕截图 2025-12-19 183834

 

 

 

 

 

实验任务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 }
View Code

屏幕截图 2025-12-19 182348

 

posted @ 2025-12-19 18:40  空元  阅读(0)  评论(0)    收藏  举报