C语言程序设计答案(黄保和编)第9章_第1页
C语言程序设计答案(黄保和编)第9章_第2页
C语言程序设计答案(黄保和编)第9章_第3页
C语言程序设计答案(黄保和编)第9章_第4页
C语言程序设计答案(黄保和编)第9章_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.选择题若已经定义“struct stu int a, b; student;”,则下列输入语句中正确的是D)scanf(“%d”,&student.a);若已有以下结构体定义,则值为2的表达式是A)c0.y;struct cmplxint x;int y;c=1,2,3,4;设有如下程序段,则vu.a的值为D)A、B、C都不是union uint a;int b;float c;vu;vu.a=1; vu.b=2; vu.c=3;设已经定义“union uchar a; int b;vu;”在VC中存储char型数据需要1个字节,存储int型数据需要4个字节,则存储变量vu需要B)4个字节设已经定义“union uint a; int bvu=1,2;”,则D)该定义错误设有定义“enum dateyear,month,dayd;”则下列叙述中正确的是A)date是类型、d是变量、year是常量设有定义“enum dateyear,month,dayd;”则正确的表达式是B)d=year若已经定义了“typedef struct stuint a,bstudent;”则下列叙述中正确的是C)student是结构体类型下列有关typedef语句的叙述中,正确的是C)typedef语句用于给已定义类型取别名编程题设计一个通讯录的结构体类型,并画出该结构体变量在内存中的存储形式struct name 占10个字节telephone 占20个字节address 占100个字节name char10;telephone char20;address char100; 用结构体变量表示平面上的一个点(横坐标和纵坐标),输入两个点,求两点之间的距离#include #include void main()struct Pointfloat x;float y;a,b;printf(输入点a的横坐标:n);scanf(%f, &a.x);printf(输入点a的纵坐标:n);scanf(%f, &a.y);printf(输入点b的横坐标:n);scanf(%f, &b.x);printf(输入点b的纵坐标:n);scanf(%f, &b.y);printf(a、b两点之间的距离为:%fn, sqrt( (a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y) );用结构体变量表示日期(年、月、日),任意输入两个日期,求它们之间相差的天数#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, &date_1.year, &date_1.month, &date_1.day);printf(请输入日期2的数据项,年月日间用空格阁开:n); scanf(%d%d%d, &date_2.year, &date_2.month, &date_2.day); /数据处理 if( !compear(max=&date_1, min=&date_2) ) /比较日期大小,不需要交换result = funtion(max, min); else /需要交换result = funtion(min, max); /结果 printf(两日期间相差的天数为:%dn, 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); /计算日期函数if( leap_year(max-year) ) /如果为闰年if( (max-month=2 & max-day=29) | max-month2)max-day_of_year +;/计算小日期min-day_of_year = titoal(min);if( leap_year(min-year) ) /如果为闰年if( (min-month=2 & min-day=29) | min-month2)min-day_of_year +;/返回相差天数return max-day_of_year - min-day_of_year; /年份不同,相差天数为max、min剩余天数和之间年的天数总和 int max_year, min_year, other_year=0; /计算大日期 max-day_of_year = titoal(max); if( leap_year(max-year) ) /如果为闰年 if( (max-month=2 & max-day=29) | max-month2) max-day_of_year +; max_year = max-day_of_year; /计算小日期min-day_of_year = titoal(min);if( leap_year(min-year) ) /如果为闰年if( (min-month=2 & min-day=29) | min-month2)min-day_of_year +; min_year = DAY_OF_YEAR - min-day_of_year; /剩余的天数 if( leap_year(min-year) ) /如果为闰年天数加1 min_year +; /计算之间的日期 int year; for(year=min-year+1 ; yearyear ; year+) other_year+=DAY_OF_YEAR+leap_year(year);/一年的天数, 并考虑是否为闰年 /返回总天数 return max_year + min_year + other_year;/计算某日该年的第几天, 闰年也按平年处理int titoal(DATE_P date) int result=0; /最后结果 int i; /标记月份 for(i=1 ; imonth ; i+) /计算以过月份的天数 switch(i) case 1: case 3: case 5: case 7: case 8: case 10:result += 31;break;/大月31天,注:12月不会出现,所以忽略不写case 4:case 6:case 9: case 11:result += 30;break;/小月31天default:result += 28; /2月28天 return result += date-day; /加上本月天数既为最后结果/判断某年是否为闰年,若是返回1,否则返回0bool leap_year(const int year) if( (!(year%4) & year%100) | !(year%400) ) return 1; return 0; 用结构体变量表示复数(实部和虚部),输入两个复数,求两复数之积#include struct comint real;int im;void main()struct com a,b,c;struct com cmult(struct com creal,struct com cim);int i,j;printf(输入两个复数的实部和虚部:);scanf(%d%d%d%d,&a.real,&a.im,&b.real,&b.im);c=cmult(a,b);printf(乘积为:%d+%di,c.real,c.im);struct com cmult(struct com creal,struct com cim) /*求乘积的函数*/struct com a;a.real=creal.real*cim.real-creal.im*cim.im; a.im=creal.real*cim.im+creal.im*cim.real;return(a);/* 设复数为 a+bi 和 c+di ,那么 和为:(a+c)+(b+d)i, 乘积为 :(ac-bd)+(ad+bc)i 。*/有20个学生,每个学生的数据包括学号(num)、姓名(name)、性别(sex)、5门课程成绩(score5)。要求编写一个程序,输入学生数据,计算并输出每个学生的总分和平均分。#include #define N 2void main()struct studentint num;char name10;char sex10;int score5;int sum;float average;struct student stuN,s;int i,j;for(i=0;iN;i+)stui.sum=0;stui.average=0;printf(please scanf num name sex score(1) score(2) score(3) score(4) score(5)n);scanf(%d%s%s,&stui.num,,stui.sex);for(j=0;j5;j+)scanf(%d,&stui.scorej);stui.sum+=stui.scorej;stui.average=stui.sum/5.0;for(i=0;iN;i+)printf(num name sex score(1) score(2) score(3) score(4) score(5) sum averagen);printf(%d %s %s , stui.num, , stui.sex);for(j=0;j5;j+)printf(%d ,stui.scorej);printf(%d , stui.sum);printf(%f , stui.average);printf(n);箱子中有若干个红、黄、白3中颜色的小球,每次从中取出2个,求得到两种不同颜色的小球的可能情况,并输出每种颜色组合(使用枚举类型)#include #include void main()enum ColorRed, Yellow, White;enum Color i, j;for(i = Red; i = White; i = (Color)(i + 1)for(j = i;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论