一、选择题
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<stdio.h>//习题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<stdio.h>//习题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<stdio.h>//习题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<stdio.h>//习题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){
max=i;
}
if(book[min].price>book[i].price){
min=i;
}
}
printf("定价最高的书:%s\t%.2lf\n定价最低的书:%s\t%.2lf",book[max].name,book[max].price,book[min].name,book[min].price);
return 0;
}
第五题
#include<stdio.h>//习题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<n;i++)
{
printf("请输入姓名:");
scanf("%s",com[i].name);
printf("请输入出生年:");
scanf("%d",&com[i].bir.year);
printf("请输入出生月:");
scanf("%d",&com[i].bir.month);
printf("请输入出生日:");
scanf("%d",&com[i].bir.day);
printf("请输入电话号码:");
scanf("%s",com[i].phomer);
}
/*选择排序*/
for(i=0;i<n-1;i++)//从大到小
{
k=i;
for(j=i+1;j<n;j++)
{
if(com[j].bir.year<com[k].bir.year){//年份小,年龄大
k=j;
}
}
t=com[k];
com[k]=com[i];
com[i]=t;
}
/*冒泡排序*/
for(i=1;i<n;i++)
{
for(j=0;j<n-1;j++)
{
if(com[j+1].bir.year<com[j].bir.year){
t=com[j+1];
com[j+1]=com[j];
com[j]=t;
}
}
}
printf("按年龄大小选择排序为;\n");
printf("姓名\t年—月—日\t电话号码\n");
for(i=0;i<n;i++)
{
printf("%s\t%d-%d-%d\t%s\n",com[i].name,com[i].bir.year,com[i].bir.month,com[i].bir.day,com[i].phomer);
}
return 0;
}
第六题
#include<stdio.h>//习题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("%d\t%s\t%.2lf\t%c\n",s[i].num,s[i].name,s[i].score,s[i].grade);
}
printf("不及格学生人数为:%d",count);
return 0;
}
更多推荐
《C语言程序设计》第4版 何钦铭、颜晖主编 课后习题答案 第9章 习题9
发布评论