C语言程序设计答案(黄保和编)第9章
选择题
若已经定义“struct stu {int a, b;} student;”,则下列输入语句中正确的是D)scanf(“%d”,&student.a);
若已有以下结构体定义,则值为2的表达式是A)c[0].y;
struct cmplx{
int x;
int y;
}c[]={1,2,3,4};
设有如下程序段,则vu.a的值为D)A、B、C都不是
union u{
int a;
int b;
float c;
}vu;
vu.a=1; vu.b=2; vu.c=3;
设已经定义“union u{char a; int b;}vu;”在VC中存储char型数据需要1个字节,存储int型数据需要4个字节,则存储变量vu需要B)4个字节
设已经定义“union u{int a; int b}vu={1,2};”,则D)该定义错误
设有定义“enum date{year,month,day}d;”则下列叙述中正确的是A)date是类型、d是变量、year是常量
设有定义“enum date{year,month,day}d;”则正确的表达式是B)d=year
若已经定义了“typedef struct stu{int a,b}student;”则下列叙述中正确的是C)student是结构体类型
下列有关typedef语句的叙述中,正确的是C)typedef语句用于给已定义类型取别名
编程题
设计一个通讯录的结构体类型,并画出该结构体变量在内存中的存储形式
struct {
name 占10个字节
telephone 占20个字节
address 占100个字节
name char[10];
telephone char[20];
address char[100];
c语言中struct};
用结构体变量表示平面上的一个点(横坐标和纵坐标),输入两个点,求两点之间的距离#include
#include
void main()
{
struct Point
{
float 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两点之间的距离为:%f\n", 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", &ar, &h, &date_1.day);
printf("请输入日期2的数据项,年月日间用空格阁开:\n");
scanf("%d%d%d", &ar, &h, &date_2.day);
//数据处理
if( !compear(max=&date_1, min=&date_2) ) //比较日期大小,不需要交换result = funtion(max, min);
else //需要交换
result = funtion(min, max);
//结果
printf("两日期间相差的天数为:%d\n", result);
}
//比较两日期的大小
bool compear(DATE_P max, DATE_P min)
{
//max的日期小于min的日期,日期对调
if((max->year < min->year)) //max的年份小于min return 1;
else if((max->year == min->year)) //max和min的年份相同
{
if((max->month < min->month)) //max的月份小于min return 1;
else if((max->month == min->month)) //max和min的月份相同if((max->day < min->day)) //max的日小于min
return 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->month>2)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论