任务4:
源代码:
#include <stdio.h> #define N 10 typedef struct { char isbn[20]; // isbn号 char name[80]; // 书名 char author[80]; // 作者 double sales_price; // 售价 int sales_count; // 销售册数 } Book; void output(Book x[], int n); void sort(Book s[], int n); double sales_amount(Book s[], 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; } // 待补足:函数output()实现 // ××× void output(Book x[],int n) { printf("%-30s","ISBN"),printf("%-30s","书名"),printf("%-20s","作者"),printf("%-20s","售价"),printf("%-20s","销售册数"); printf("\n"); int i; for(i=0;i<n;i++) { printf("%-30s%-30s%-20s%-20d%-20d",x[i].isbn,x[i].name,x[i].author,x[i].sales_price,x[i].sales_count); printf("\n"); } } // 待补足:函数sort()实现 // ××× void sort(Book s[],int n) { Book temp; int i,j; for(i=0;i<n;i++) for(j=0;j<n-i-1;j++) if(s[i].sales_count>s[i+1].sales_count) { temp=s[i]; s[i]=s[i+1]; s[i+1]=temp; } } // 待补足:函数sales_count()实现 // ××× double sales_amount(Book s[],int n) { int i; double much=0; for(i=0;i<n;i++) much+=s[i].sales_price*s[i].sales_count; return much; }
运行结果:
任务5:
源代码:
# include<stdio.h> typedef struct{ int year; int month; int day; } Date; void input(Date *pd); int day_of_year(Date d); int compre_dates(Date d1,Date d2); void test1() { Date d; int i; printf("输入日期:(以形如2024-12-16这样的形式输入)\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的出生日期:(以形如2024-12-16这样的形式输入)\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("测试一:输入日期,打印输出这是一年中的第多少天\n"); test1(); printf("\n测试二:两个人年龄大小\n"); test2(); } void input(Date*pd) { scanf("%d-%d-%d",&(pd->year),&(pd->month),&(pd->day)); } int day_of_year(Date d) { int s; if(d.month==1) return d.day; else if(d.month==2) return 31+d.day; else if(d.month==3) s=31+28+d.day; else if(d.month==4) s=31*2+28+d.day; else if(d.month==5) s=31*2+30+28+d.day; else if(d.month==6) s=31*3+30+28+d.day; else if(d.month==7) s=31*3+30*2+28+d.day; else if(d.month==8) s=31*4+30*2+28+d.day; else if(d.month==9) s=31*5+30*2+28+d.day; else if(d.month==10) s=31*5+30*3+28+d.day; else if(d.month==11) s=31*6+30*3+28+d.day; else s=31*6+30*4+28+d.day; if(d.year==d.year/100*100&&d.year%400==0) return s+1; else if(d.year%4==0&&d.year%100!=0) return s+1; else return s; } int compare_dates(Date d1,Date d2) { if(d1.year<d2.year) return -1; else if(d1.year>d2.year) return 1; else { if(day_of_year(d1)<day_of_year(d2)) return -1; else if(day_of_year(d1)>day_of_year(d2)) return 1; else return 0; } }
运行结果:
任务六:
源代码:
# 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,len,m; char s[3][10]={"admin","student","teacher"}; for(i=0;i<n;i++) { len=strlen(x[i].password); printf("%-20s",x[i].username); for(j=0;j<len;j++) printf("*"); for(j=0;j<20-len;j++) printf(" "); printf("%s",s[x[i].type]); printf("\n"); } }
运行结果:
任务七:
源代码:
# 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); 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); 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) { Contact temp; int m; int i,j=0; for(i=0;i<n;i++) { if(x[i].vip==1) { temp=x[i]; x[i]=x[j]; x[j]=temp; j++; } m=j; } for(i=0;i<n-1-m;i++) for(j=m;j<n-1-i;j++) { if(strcmp(x[j].name,x[j+1].name)>0) { 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"); } }
运行结果:
标签:int,void,month,实验,printf,else,day From: https://www.cnblogs.com/hshnbnb666/p/18615975