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

实验任务5
#include<stdio.h> typedef struct{ int year; int month; int day; }Date; void input(Date *pd); int day_of_year(Date d); int compare_dates(Date d1,Date d2); void test1(){ Date d; int i; printf("输入日期:(以形如2025-12-19这样的方式输入)\n"); for(i=0;i<3;++i){ input(&d); printf("%d-%02d-%02d是这一年中的第%d天\n\n",d.year,d.month,d.day,day_of_year(d)); } } void test2(){ Date Alice_birth,Bob_birth; int i; int ans; printf("输入Alice和Bob的出生日期:(以形如2025-12-19这样的方式输入)\n"); for(i=0;i<3;i++){ input(&Alice_birth); input(&Bob_birth); ans=compare_dates(Alice_birth,Bob_birth); if(ans==0) printf("Alice和Bob一样大\n\n"); else if(ans==-1) printf("Alice比Bob大\n\n"); else printf("Alice比Bob小\n\n"); } } int main(){ printf("测试1:输入日期,打印输出这是一年第多少天\n"); test1(); printf("\n测试2:两个人年龄大小关系\n"); test2(); } void input(Date *pd){ scanf("%d-%02d-%02d",&pd->year,&pd->month,&pd->day); } int day_of_year(Date d){ int count=0; int i; int x1[12]={31,29,31,30,31,30,31,31,30,31,30,31}; int x2[12]={31,28,31,30,31,30,31,31,30,31,30,31}; if((d.year%100!=0&&d.year%4==0)||(d.year%400==0)){ for(i=0;i<d.month-1;i++){ count+=x1[i]; } count+=d.day; } if((d.year%4!=0)||(d.year%100==0&&d.year%400!=0)){ for(i=0;i<d.month-1;i++){ count+=x2[i]; } count+=d.day; } return count; } int compare_dates(Date d1,Date d2){ if(d1.year<d2.year){ return -1; } else if(d1.year>d2.year){ return 1; } else{ if(d1.month<d2.month){ return -1; } else if(d1.month>d2.month){ return 1; } else{ if(d1.day<d2.day){ return -1; } else if(d1.day>d2.day){ return 1; } } } return 0; }

实验任务6
#include<stdio.h> #include<string.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); return 0; } void output(Account x[],int n){ int i,j; int size[n]={0}; for(i=0;i<n;i++){ size[i]=strlen(x[i].password); } for(i=0;i<n;i++){ for(j=0;j<size[i];j++){ x[i].password[j]='*'; } printf("%-20s%-20s",x[i].username,x[i].password); switch(x[i].type){ case 0:printf("admin\n");break; case 1:printf("student\n");break; case 2:printf("teacher\n");break; default:break; } } }

实验任务7
#include<stdio.h> #include<string.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); for(i=0;i<vip_cnt;++i){ scanf("%s",name); set_vip_contact(list,N,name); } printf("\n显示通讯录列表:(按姓名字典序升序排列,紧急联系人最先显示)\n"); display(list,N); 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; Contact temp; for(i=0;i<n-1;i++){ for(j=0;j<n-1-i;j++){ if(((strcmp(x[j].name,x[j+1].name)>0)&&(x[j].vip==x[j+1].vip))||x[j].vip<x[j+1].vip){ temp=x[j]; x[j]=x[j+1]; x[j+1]=temp; } } } 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号