一、选择题
1~6 C D B B A D
二、填空题
1、2,3
2、&time.hour,&time.minute,&time.second time.second time.minute++
time.hour==24
3、成员 指向
4、23,wang,99,wang
5、10,41,70
6、2
7,3
三、程序设计题
第一题
#include//习题9.1 时间换算 struct time{ int h; int m; int s; }; int main(void) { int n,t; struct time time; printf("输入一个时间:h,m,s:"); scanf("%d%d%d",&time.h,&time.m,&time.s); printf("输入n秒:"); scanf("%d",&n); t=time.s+n; if(t>60){ time.m++; time.s=t-60; if(time.m>60){ time.h++; time.m=time.m-60; } } else{ time.s=t; } printf("过n秒的时间值为 h:%d m:%d s:%d",time.h,time.m,time.s); return 0; }
第二题
#include//习题9.2,计算两个复数之积 struct complex{ double real,imag; }; int main(void) { struct complex c1,c2,product; printf("输入第一个复数;"); scanf("%lf%lf",&c1.real,&c1.imag); printf("输入第二个复数;"); scanf("%lf%lf",&c2.real,&c2.imag); product.real=c1.real*c2.real-c1.imag*c2.imag; product.imag=c1.real*c2.imag+c1.imag*c2.real; printf("两复数的乘积为:%.2lf+%.2lfi",product.real,product.imag); return 0; }
第三题
#include//习题9.3 平面向量的加法 struct ve_add{ double x,y; }; int main(void) { struct ve_add V1,V2,result; printf("输入两个二维平面向量V=(x,y):"); scanf("%lf%lf%lf%lf",&V1.x,&V1.y,&V2.x,&V2.y); result.x=V1.x+V2.x; result.y=V1.y+V2.y; printf("两平面向量的和向量为:(%.2lf,%.2lf)",result.x,result.y); return 0; }
第四题
#include//习题9.4 查找书籍 struct books{ char name[20]; double price; }; int main(void) { int max=0,min=0,i; struct books book[10]; printf("请输入10本书的书名和定价:"); for(i=0;i<10;i++) { scanf("%s",book[i].name); scanf("%lf",&book[i].price); } for(i=0;i<10;i++) { if(book[max].price book[i].price){ min=i; } } printf("定价最高的书:%st%.2lfn定价最低的书:%st%.2lf",book[max].name,book[max].price,book[min].name,book[min].price); return 0; }
第五题
#include//习题9.5 通讯录排序 struct birthday{ int year; int month; int day; }; struct address_book{ char name[11]; struct birthday bir; char phomer[12]; }; int main(void) { int n,i,j,k; struct address_book com[10],t; printf("输入n(n<10)个联系人信息:"); scanf("%d",&n); for(i=0;i 第六题
#include//习题9.6 按等级统计学生成绩 struct student{ int num; char name[11]; double score; char grade; }; char set_grade(double score) { char ch; if(score>=85&&score<=100){ ch='A'; }else if(score>=70){ ch='B'; }else if(score>=60){ ch='C'; }else if(score>=0){ ch='D'; } return ch; } int main(void) { int i,count=0; struct student s[10]; printf("请输入10个学生的信息:n"); for(i=0;i<4;i++) { printf("请输入学号:"); scanf("%d",&s[i].num); printf("请输入姓名;"); scanf("%s",s[i].name); printf("请输入成绩:"); scanf("%lf",&s[i].score); s[i].grade=set_grade(s[i].score); if(s[i].score<60){ count++; } } printf("学号t姓名t成绩t等级n"); for(i=0;i<4;i++) { printf("%dt%st%.2lft%cn",s[i].num,s[i].name,s[i].score,s[i].grade); } printf("不及格学生人数为:%d",count); return 0; }



