8-1课后练习参考答案

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

实验8-1 结构体

【实验目的】

1.掌握结构体类型的定义

2.掌握结构体变量的定义。

3.掌握结构体数据的操作。

【课后练习】

一、选择题

(1)已知学生记录描述如下,设置变量s中的“生日”应是“1984年11月11日”,下列

对“生日”的正确赋值方式是________。

A. year = 1984; month = 11; day = 11;

B. birth.year = 1984; birth.month = 11; birth.day = 11;

C. s.year = 1984; s.month = 11; s.day = 11;

D. s.birth.year = 1984; s.birth.month = 11; s.birth.day = 11;

(2)设有以下说明语句,则下面的叙述不正确的是:________

A. struct是结构体类型的关键字

B. struct stu是用户定义的结构体类型

C. stutype是用户定义的结构体类型名

D. a和b都是结构体成员名

(3)根据下面的定义,能打印出字母M的语句是________。

A. printf(“%c\n”, class[3].name);

B. printf(“%c\n”, class[3].name[1]);

C. printf(“%c\n”, class[2].name[1]);

D. printf(“%c\n”, class[2].name[0]);

(4)当说明一个结构体变量时系统分配给它的内存是________。

A. 各成员所需内存量的总和。

B. 结构中第一个成员所需内存量。

C. 成员中占内存量最大者所需的容量。

D. 结构中最后一个成员所需内存量。

二、填空题

(1)定义结构体类型的关键字是__struct______

(2)有这样一个结构体定义和变量声明:

Struct abc

{char x;

int y[2];

char z[20];

}value={…Y‟,10,20,”just a test. ”};

用printf语句输出结构体变量value的各个成员值:

Printf(“%c %d %d %s”,value.y[0],value.y[1],z);

将字符串”hello”存入结构体value的字符数组中

Strcpy(value.z,”hello”);

三、以下程序的运行结果是___10, x_____。

四、以下程序的运行结果是__2,3______。

五、设有三人的姓名和年龄存在结构数组中,以下程序输出三人中年龄居中者的姓名和年

龄,请在________中填入正确内容。

3个填空答案分别为:

max=person[i].age;

min=person[i].age;

&&

六、

#include

#include "string.h"

#define N 3

struct man

{char name[20];

int age;

}person[]={"li-ming",18,"wanghua",19,"zhang-ping",20};

void SortByAge(struct man *person,int n);

int main()

{ int i;

SortByAge(person,N);

printf("%12s%12s\n","姓名","年龄");

for(i=0;i

{ printf("%12s%12d\n",person[i].name,person[i].age);

}

}

//利用递归函数,实现结构体中的按照年龄排序

void SortByAge(struct man *person,int n)

{ int index=n-1; //保存最大年龄的结构体的序号,先假定为最后一个struct man t;

if(n==1)return; //递归结束条件:如果只有一个人,无须排序,直接返回for(int i=n-2;i>=0;i--)

if(person[index].age

if(index!=n-1) //如果最大年龄不是最后一个

{ //把最大年龄的结构体,交换到末尾

t=person[index];

person[index]=person[n-1];

person[n-1]=t;

}

SortByAge(person,n-1); // 递归调用,余下的事,留给递归函数去自动完成}

七、

#include

#include "string.h"

#define N 3

struct man

{char name[20];

int age;

}person[]={"li-ming",18,"wanghua",19,"zhang-ping",20};

void SortByName(struct man *person,int n);

int main()

{ int i;

SortByName(person,N);

printf("%12s%12s\n","姓名","年龄");

for(i=0;i

{ printf("%12s%12d\n",person[i].name,person[i].age);

}

}

//利用递归函数,实现结构体中的按照姓名值排序

void SortByName(struct man *person,int n)

{ int index=n-1; //保存最大姓名值的结构体的序号,先假定为最后一个struct man t;

if(n==1)return; //递归结束条件:如果只有一个人,无须排序,直接返回

for(int i=n-2;i>=0;i--)

if(strcmp(person[index].name,person[i].name)<0)index=i;

if(index!=n-1) //如果最大姓名值不是最后一个

{ //把最大姓名值的结构体,交换到末尾

t=person[index];

person[index]=person[n-1];

person[n-1]=t;

}

SortByName(person,n-1); // 递归调用,余下的事,留给递归函数去自动完成}

相关文档
最新文档