第9章结构体类型与共用体类型习题及答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第九章结构体类型与公用体类型习题及其答案9-3编写程序,使用结构体类型,输出一年十二个月的英文名称及相应天数。

解:#include "stdio.h"

struct date

{

char month[10] ;

int daynumber ;

}

main()

{

int i ;

date a[12]

={{"January",31},{"February",29},{"March",31},{"Aprial",30}, {"May",31},{"June",30},{"july",31},{"August",31},{"September",30} ,{"October",31},{"November",30},{"December",31}} ;

for(i=0;i<12;i++);

printf("%d 月:%s %d\n",i+1,a[i].month,a[i].daynumber) ;

}

思考:如何对结构体变量进行初始化?对结构体变量的引用为何要体现为分量(或成员)的引用?

9-4 编写程序求空间任一点到原点的距离,点用结构体描述。并请考虑求空间中任意两点的距离的程序。

解:#include "stdio.h"

#include "math.h"

struct point

{

float x ;

float y ;

float z ;

}

void main()

{

double d1,d2,d ;

point p1,p2 ;

printf("请输入第一个点的坐标:");

scanf("%f,%f,%f",&p1.x,&p1.y,&p1.z);

printf("请输入第二个点的坐标:");

scanf("%f,%f,%f",&p2.x,&p2.y,&p2.z);

d1=sqrt(p1.x*p1.x+p1.y*p1.y+p1.z*p1.z);

d2=sqrt(p2.x*p2.x+p2.y*p2.y+p2.z*p2.z);

d=sqrt((p2.x-p1.x)*(p2.x-p1.x)+(p2.y-p1.y)*(p2.y-p1.y)+(p2.z-p1.z)*( p2.z-p1.z));

printf("第一个点到原点的距离:%f\n",d1);

printf("第二个点到原点的距离:%f\n",d2);

printf("两点间的距离:%f\n",d);

}

9-5 编写输入、输出10个朋友数据的通讯录程序,每个朋友数据包括姓名、地址、邮编、电话、传呼、手机等数据。

解:#include "stdio.h"

struct AddressBook

{

char name[10] ;

char address[30] ;

char mailnumber[7] ;

char telphone[12] ;

char byphone[16] ;

char movephone[1] ;

}

void main()

{

int i ;

AddressBook fd[10] ;

for(i=0;i<10;i++)

{

printf("请输入第%d个朋友的信息:\n",i+1);

printf("姓名:");

scanf("%s",&fd[i].name) ;

printf("地址:");

scanf("%s",&fd[i].address) ;

printf("邮编:");

scanf("%s",&fd[i].mailnumber) ;

printf("电话:");

scanf("%s",&fd[i].telphone) ;

printf("传呼:");

scanf("%s",&fd[i].byphone) ;

printf("手机:");

scanf("%s",&fd[i].movephone) ;

}

for(i=0;i<10;i++)

{

printf("\n第%d个朋友的信息:\姓名:%s\n 地址:%s\n 邮

编:%s\n 电话:%s\n 传呼:%s\n 手

机:%s\n",i+1,fd[i].name,fd[i].address,fd[i].mailnumber,fd[i].telph

one,fd[i].byphone,fd[i].movephone) ;

}

}

思考:结构体类型变量的分量可以是各种基本数据类型(整型、实型、字符型等)或数组类型,是否可以是另一结构体类型?

9-6 用一个数组存放图书信息,每本图书包含书名、作者、出版年月、出版社、借出数目、库存数目等信息。编写程序输入若干本图书的信息,按出版年月排序后输出。

解:#include "stdio.h"

#include "string.h"

struct Book

{

char booktitle[30] ;

char author[10] ;

char publishday[10] ;

char publishunit[22] ;

char lendno[16] ;

char stockno[11] ;

}

#define N 100 //假设图书数量不超过110册

main()

{

int i,j,k,n;

Book ts[N] ,t;

printf("请输入欲处理的图书数量:");

scanf("%d",&n);

for(i=0;i

{

printf("请输入第%d本书的信息:\n",i+1);

printf("书名:");

scanf("%s",&ts[i].booktitle) ;

printf("作者:");

scanf("%s",&ts[i].author) ;

printf("出版年月:");

scanf("%s",&ts[i].publishday) ;

printf("出版社:");

scanf("%s",&ts[i].publishunit) ;

printf("借出数:");

scanf("%s",&ts[i].lendno) ;

printf("库存数:");

scanf("%s",&ts[i].stockno) ;

}

for(i=0;i

{

k=i;

for(j=i+1;j

if(strcmp(ts[k].publishday,ts[j].publishday)<0) k=j ;

{t=ts[i],ts[i]=ts[j];ts[j]=t;}

}

printf("\n排序后的图书信息:");

for(i=0;i

相关文档
最新文档