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

实验5:
源码:
1 #include<stdio.h> 2 #include<stdlib.h> 3 4 typedef struct{ 5 int year; 6 int month; 7 int day; 8 }Date; 9 10 void input(Date *pd); 11 int day_of_year(Date d); 12 int compare_dates(Date d1, Date d2); 13 14 void test1(){ 15 Date d; 16 int i; 17 18 printf("输入日期:(以形如2024-12-16这样的形式输出)\n"); 19 for(i=0;i<3;i++){ 20 input(&d); 21 printf("%d-%02d-%02d是这一年中的第%d天\n\n",d.year,d.month,d.day,day_of_year(d)); 22 } 23 } 24 25 void test2(){ 26 Date Alice_birth,Bob_birth; 27 int i; 28 int ans; 29 30 printf("输入Alice和Bob的出生日期:(以形如2024-12-16这样的形式输入)\n"); 31 for(i=0;i<3;i++){ 32 input(&Alice_birth); 33 input(&Bob_birth); 34 ans=compare_dates(Alice_birth,Bob_birth); 35 36 if(ans==0) 37 printf("Alice和Bob一样大\n\n"); 38 else if(ans == -1) 39 printf("Alice比Bob大\n\n"); 40 else 41 printf("Alice比Bob小\n\n"); 42 } 43 } 44 45 int main(){ 46 printf("测试1: 输入日期, 打印输出这是一年中第多少天\n"); 47 test1(); 48 49 printf("\n测试2: 两个人年龄大小关系\n"); 50 test2(); 51 system("pause"); 52 return 0; 53 } 54 55 void input(Date *pd){ 56 scanf("%d-%d-%d",&pd->year,&pd->month,&pd->day); 57 } 58 59 int day_of_year (Date d){ 60 int sum=0; 61 if((d.year%4==0&&d.year%100!=0)||(d.year%400==0)){ 62 switch(d.month){ 63 case 12: 64 sum+=335;break; 65 case 11: 66 sum+=305;break; 67 case 10: 68 sum+=274;break; 69 case 9: 70 sum+=244;break; 71 case 8: 72 sum+=213;break; 73 case 7: 74 sum+=182;break; 75 case 6: 76 sum+=152;break; 77 case 5: 78 sum+=121;break; 79 case 4: 80 sum+=91;break; 81 case 3: 82 sum+=60;break; 83 case 2: 84 sum+=31;break; 85 } 86 } 87 else{ 88 switch(d.month){ 89 case 12: 90 sum+=334;break; 91 case 11: 92 sum+=304;break; 93 case 10: 94 sum+=273;break; 95 case 9: 96 sum+=243;break; 97 case 8: 98 sum+=212;break; 99 case 7: 100 sum+=181;break; 101 case 6: 102 sum+=151;break; 103 case 5: 104 sum+=120;break; 105 case 4: 106 sum+=90;break; 107 case 3: 108 sum+=59;break; 109 case 2: 110 sum+=31;break; 111 } 112 } 113 return sum+d.day; 114 } 115 116 int compare_dates(Date d1,Date d2){ 117 if(d1.year>d2.year) 118 return 1; 119 else if(d1.year<d2.year) 120 return -1; 121 else{ 122 if(d1.month>d2.month) 123 return 1; 124 else if(d1.month<d2.month) 125 return -1; 126 else{ 127 if(d1.day>d2.day) 128 return 1; 129 if(d1.day<d2.day) 130 return -1; 131 else 132 return 0; 133 } 134 } 135 }
截图:

实验6:
源码:
#include<stdio.h> #include<string.h> #include<stdlib.h> enum Role{admin,student,teacher}; typedef struct{ char username[20]; char password[20]; enum Role type; }Account; void output(Account x[],int n); int main(){ Account x[]={{"A1001", "123456", student}, {"A1002", "123abcdef", student}, {"A1009", "xyz12121", student}, {"X1009", "9213071x", admin}, {"C11553", "129dfg32k", teacher}, {"X3005", "921kfmg917", student}}; int n; n=sizeof(x)/sizeof(Account); output(x,n); system("pause"); return 0; } void output(Account x[],int n){ int i,j; for(i=0;i<n;i++){ for(j=0;j<strlen(x[i].password);){ x[i].password[j++]='*'; } } for(i=0;i<n;i++){ printf("%-20s",x[i].username); printf("%-20s",x[i].password); if(x[i].type==admin) printf("admin\n"); else if(x[i].type==student) printf("student\n"); else printf("teacher\n"); } }
截图:

实验7:
源码:
#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct{ char name[20]; char phone[12]; int vip; }Contact; void set_vip_contact(Contact x[],int n,char name[]); void output(Contact x[],int n); void display(Contact x[],int n); #define N 10 int main(){ Contact list[N]={{"刘一", "15510846604", 0}, {"陈二", "18038747351", 0}, {"张三", "18853253914", 0}, {"李四", "13230584477", 0}, {"王五", "15547571923", 0}, {"赵六", "18856659351", 0}, {"周七", "17705843215", 0}, {"孙八", "15552933732", 0}, {"吴九", "18077702405", 0}, {"郑十", "18820725036", 0}}; int vip_cnt,i; char name[20]; printf("显示原始通讯录信息:\n"); output(list,N); printf("\n输入要设置的紧急联系人个数: "); scanf("%d",&vip_cnt); printf("输入%d个紧急联系人姓名:\n", vip_cnt); for(i=0;i<vip_cnt;i++){ scanf("%s",name); set_vip_contact(list,N,name); } printf("\n显示通讯录列表:(按姓名字典序升序排列,紧急联系人最先显示)\n"); display(list, N); system("pause"); return 0; } void set_vip_contact(Contact x[],int n,char name[]){ int i; for(i=0;i<n;i++) if(strcmp(x[i].name,name)==0) x[i].vip=1; } void display(Contact x[],int n){ int i,j,m,count=0; Contact t; for(i=0;i<n;i++) if(x[i].vip==1){ t=x[i]; x[i]=x[count]; x[count++]=t; } for(i=0;i<count-1;i++) for(j=0;j<count-1-i;j++) if(strcmp(x[j].name,x[j+1].name)>0){ t=x[j]; x[j]=x[j+1]; x[j+1]=t; } for(i=count;i<n-1;i++) for(j=count;j<n-i-1+count;j++) if(strcmp(x[j].name,x[j+1].name)>0){ t=x[j]; x[j]=x[j+1]; x[j+1]=t; } output(x,n); } void output(Contact x[],int n){ int i; for(i=0;i<n;i++){ printf("%-10s %15s",x[i].name,x[i].phone); if(x[i].vip) printf("%5s","*"); printf("\n"); } }
截图:

浙公网安备 33010602011771号