C语言程序设计答案黄保和编,C语言程序设计答案(黄保和编)第9章

41528d3028836879cd698677c3999917.gifC语言程序设计答案(黄保和编)第9章

厦门大学本科生公共课 《C 程序设计基础》 教材习题答案 第 9 章 结构体、共用体和枚举类型第 1 页/共 8 页一、选择题1、 若已经定义“struct stu {int a, b;} student;”,则下列输入语句中正确的是 D)scanf(“%d”,2、 若已有以下结构体定义,则值为 2 的表达式是 A)c[0].y;struct cmplx{int x;int y;}c[]={1,2,3,4};3、 设有如下程序段,则 vu.a 的值为 D)A 、B 、C 都不是union u{int a;int b;float c;}vu;vu.a=1; vu.b=2; vu.c=3;4、 设已经定义“union u{char a; int b;}vu;”在 VC 中存储 char 型数据需要 1 个字节,存储int 型数据需要 4 个字节,则存储变量 vu 需要 B)4 个字节5、 设已经定义“union u{int a; int b}vu={1,2}; ”,则 D)该定义错误6、 设有定义“enum date{year,month,day}d;”则下列叙述中正确的是 A)date 是类型、d 是变量、year 是常量7、 设有定义“enum date{year,month,day}d;”则正确的表达式是 B)d=year8、 若已经定义了“typedef struct stu{int a,b}student;”则下列叙述中正确的是 C)student 是结构体类型9、 下列有关 typedef 语句的叙述中,正确的是 C)typedef 语句用于给已定义类型取别名二、编程题1、 设计一个通讯录的结构体类型,并画出该结构体变量在内存中的存储形式struct {name char[10];telephone char[20];address char[100];}; 2、 用结构体变量表示平面上的一个点(横坐标和纵坐标) ,输入两个点,求两点之间的距离#include #include void main(){struct Point{float x;float y;}a,b;printf(“输入点 a 的横坐标 :\n“);name 占 10 个字节telephone 占 20 个字节address 占 100 个字节厦门大学本科生公共课 《C 程序设计基础》 教材习题答案 第 9 章 结构体、共用体和枚举类型第 2 页/共 8 页scanf(“%f“, printf(“输入点 a 的纵坐标 :\n“);scanf(“%f“, printf(“输入点 b 的横坐标:\n“);scanf(“%f“, printf(“输入点 b 的纵坐标:\n“);scanf(“%f“, printf(“a、 b 两点之间的距离为:%f\n“, sqrt( (a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y) ));}3、 用结构体变量表示日期(年、月、日) ,任意输入两个日期,求它们之间相差的天数#include #include using namespace std;#define DAY_OF_YEAR 365 //一年的天数,当为闰年时需要另外操作//日期结构体typedef struct date {int year;int month;int day;int day_of_year; //该日为该年的第几天}DATE, *DATE_P;//函数声明bool compear(DATE_P max, DATE_P min);int titoal(DATE_P date);bool leap_year(const int year);int funtion(DATE_P max , DATE_P min);//主函数void main(){DATE date_1, date_2; //输入的两个日期DATE_P max, min; //max 指向大日期,min 指向小日期int result;//数据输入printf(“请输入日期 1 的数据项,年月日间用空格阁开:\n“);scanf(“%d%d%d“, printf(“请输入日期 2 的数据项,年月日间用空格阁开:\n“);scanf(“%d%d%d“, 厦门大学本科生公共课 《C 程序设计基础》 教材习题答案 第 9 章 结构体、共用体和枚举类型第 3 页/共 8 页//数据处理if( !compear(max= else //需要交换result = funtion(min, max); //结果printf(“两日期间相差的天数为:%d\n“, result);}//比较两日期的大小bool compear(DATE_P max, DATE_P min){//max 的日期小于 min 的日期,日期对调if((max->year year)) //max 的年份小于 minreturn 1;else if((max->year == min->year)) //max 和 min 的年份相同{if((max->month month)) //max 的月份小于 minreturn 1;else if((max->month == min->month)) //max 和 min 的月份相同if((max->day day)) //max 的日小于 minreturn 1;}//其他情况满足 max 的日期大于(等于)min,日期保持不变return 0;}//计算相差天数int funtion(DATE_P max , DATE_P min){//年份相同,相差天数为大日期减小日期if(max->year == min->year){//计算大日期max->day_of_year = titoal(max); //计算日期函数厦门大学本科生公共课 《C 程序设计基础》 教材习题答案 第 9 章 结构体、共用体和枚举类型第 4 页/共 8 页if( leap_year(max->year) ) //如果为闰年if( (max->month==2 //计算小日期min->day_of_year = titoal(min);if( leap_year(min->year) ) //如果为闰年if( (min->month==2 //返回相差天数return max->day_of_year - min->day_of_year;}//年份不同,相差天数为 max、min 剩余天数和之间年的天数总和int max_year, min_year, other_year=0; //计算大日期

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值