习题9答案
第5题:
#include
void infoinput(struct student* st,int num); void levelcount(struct student* st,int num);
//定义一个结构student表示学生基本情况 struct student{ char stuno[20]; char stuname[20]; double cgrade; char gradelevel; };
int main(){
struct student ss[100]; //根据题意,一个班学生人数不超过100个 int snum=0;
while (snum<=0||snum>100){
printf(\请输入班级的学生数n<=100:\ scanf(\ }
infoinput(ss,snum); levelcount(ss,snum); return 0; }
//输入基本数据
void infoinput(struct student* st,int num){ int i=0; while(i printf(\请输入学生的学号、姓名、计算机成绩:\ scanf(\ while (st[i].cgrade<0||st[i].cgrade>100){ printf(\请输入学生的计算机成绩[0-100]:\ scanf(\ } if (st[i].cgrade>=90) st[i].gradelevel='A'; else if(st[i].cgrade>=70) st[i].gradelevel='B'; else if(st[i].cgrade>=60) st[i].gradelevel='C'; else st[i].gradelevel='D'; i++; } } //统计等级人数 void levelcount(struct student* st,int num){ int levelA=0,levelB=0,levelC=0,levelD=0; int i; for(i=0;i printf(\统计结果:A:%d人,B:%d人,C:%d人,D:%d人\\n\} 第6题: #include void finit(); void fcreat(); void fdelete(); void fupdate(); void ffind(); //定义日期 struct date{int year;int month;int day;}; //定义一个结构student表示学生基本情况 struct llist{ char name[20]; struct date birthday; char homeno[10]; char mobileno[20]; }; struct llist addlist[50]; //如果不用链表做,假设: //通讯录每个位置记录一个联系人信息 //如果某位置联系人姓名信息为空,表示该位置无联系人 int main(){ int menuno=0; while (1){ printf(\请选择操作功能:\\n\ printf(\新建:\\n\ printf(\删除:\\n\ printf(\修改:\\n\ printf(\查询:\\n\ printf(\退出:\\n\ scanf(\ switch(menuno){ case 1:fcreat();break; case 2:fdelete();break; case 3:fupdate();break; case 4:ffind();break; case 5:return 0; default:printf(\错误选项,请重新选择!\\n\ }; } return 0; } void finit(){ int i; for(i=0;i<50;i++) { strcpy(addlist[i].name,\ addlist[i].birthday.year=0; addlist[i].birthday.month=0; addlist[i].birthday.day=0; strcpy(addlist[i].homeno,\ strcpy(addlist[i].mobileno,\ } } void fcreat(){ int i; char oname[20]; int oyear; int omonth; int oday; char ohomeno[10]; char omobileno[20]; printf(\请输入联系人信息姓名、出生年、月、日、家庭电话、手机号:\\n\ scanf(\ for(i=0;i<50;i++) { if (strlen(addlist[i].name)==0) { strcpy(addlist[i].name,oname); addlist[i].birthday.year=oyear; addlist[i].birthday.month=omonth; addlist[i].birthday.day=oday; strcpy(addlist[i].homeno,ohomeno); strcpy(addlist[i].mobileno,omobileno); printf(\已增加新联系人\\n\ break; } } if (i>=50) printf(\通讯录满,无法增加新联系人\\n\} void fdelete(){ int i; char oname[20]; printf(\请输入联系人姓名:\\n\ scanf(\ for(i=0;i<50;i++) { if (strcmp(addlist[i].name,oname)==0) { strcpy(addlist[i].name,\ addlist[i].birthday.year=0; addlist[i].birthday.month=0; addlist[i].birthday.day=0; strcpy(addlist[i].homeno,\ strcpy(addlist[i].mobileno,\ printf(\已删除该联系人%s\\n\ break; } } if (i>=50) printf(\无该联系人,无法删除\\n\} void fupdate(){ int i; char oname[20]; char nname[20]; int nyear; int nmonth; int nday; char nhomeno[10]; char nmobileno[20]; printf(\请输入联系人姓名:\\n\ scanf(\ printf(\请输入联系人信息姓名、出生年、月、日、家庭电话、手机号:\\n\ scanf(\ for(i=0;i<50;i++) { if (strcmp(addlist[i].name,oname)==0) { strcpy(addlist[i].name,nname); addlist[i].birthday.year=nyear; addlist[i].birthday.month=nmonth; addlist[i].birthday.day=nday; strcpy(addlist[i].homeno,nhomeno); strcpy(addlist[i].mobileno,nmobileno); printf(\已修改联系人%s\\n\ break; } } if (i>=50) printf(\无该联系人,无法修改\\n\