《C语言程序设计》第4版 何钦铭、颜晖主编 课后习题答案 第9章 习题9

一、选择题

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;
}

  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值