《C语言程序设计基础》单元总结与练习题及答案 下载本文

《C语言程序设计基础》课程单元总结与单元练习 答案

else }

void main( ) { int i;

char string[20],str[3][20]; for(i=0;i<3;i++)

gets(str[i]);

strcpy(string,scmp(str[0],str[1])); strcpy(string,scmp(string,str[2])); printf(\}

return(s2);

*******************************************************************************

习题答案:

一.选择题

1.D

2.D

3.C

4.C

5.A

二.填空题

1.12,10,10,12

2.*p>*a 3.15

4.*p p-str 5.abba

*******************************************************************************

《C语言程序设计基础》课程单元总结与单元练习 答案

单元九 结构类型的使用

单元总结提升

在本单元中,结构类型数据的含义、结构类型的描述方法、结构类型数据的基本操作是核心内容。通过本单元的学习,我们应该知道:

1.结构类型数据使用的基本步骤为 结构类型说明、 结构类型变量定义 和 结构变量使用 。

2.结构类型说明的关键字为 struct 。结构类型变量所占用内存字节数为结构变量所包含的各个成员变量所占字节数之和 。

3.若定义了一个结构变量和一个指向结构变量的指针,则可以用以下三种形式访问结构成员:

(1)利用结构变量与成员运算符相结合,基本格式为: 结构变量.成员名 。 (2)利用结构指针与成员运算符相结合,基本格式为: (*结构指针).成员名 。 (3)利用结构指针与指向运算符相结合,基本格式为: 结构指针->成员名 。

4. 结构变量不能作为一个整体进行输入和输出,但结构变量作为一个整体可以被复制、赋值、传递参数,以及作为函数返回值。当用结构变量作函数参数进行整体传送时,要将全部成员逐个传送,特别是成员为数组时,将会使传送的时间和空间开销很大,所以一般不将结构变量作为函数参数,而用结构指针变量作函数参数。这时由实参向形参传递的只是地址,从而减少了时间和空间的开销。

通过本单元的学习,应明确结构类型的数据特点,掌握结构类型数据描述和操作的基本步骤和方法。

单元练习

一.选择题

1.以下描述正确的是( )。 A.结构类型中的成员可以是结构类型 B.结构类型的成员不能是指针类型 C.结构类型中各成员共享同一个内存单元 D.在结构类型说明后就立即分配内存空间

《C语言程序设计基础》课程单元总结与单元练习 答案

2.已知如下定义的结构类型变量,若有p=&data,则对data中的成员a的正确引用是

( )。

struct sk {

int a; float b;

}data,*p;

A.(*p).data.a B.(*p).a C.p->data D.p.data.a

3.若有如下定义,则下列输入语句正确的是( )。

struct stu {

int a; int b;

}student;

A.scanf(“%d”,&a); B.scanf(“%d”,&student); D.scanf(“%d”,&student.a);

C.scanf(“%d”,&stu.a);

4.有如下结构类型说明和变量定义,则操作语句正确的是( )。

struct worker { int num; char name[10]; char sex; int age; } s1,s2,t;

A.if(s1.age>s2.age) {t=s1; s1=s2; s2=t; } B.s1={1101,”zhangsan”,’f’,28}; C.gets(&s1.name);

D.printf(“%d,%s,%c,%d”,s1.num,s1.name,s1->sex,s1->age); 5.以下叙述正确的是( )。

A.结构类型说明与结构变量的含义一样,都可以用来存放数据。

B.对于不同类型的数据,若想形成一个有机的整体,可以使用结构类型。 C.可以使用“==”或“!=”对同一个结构类型的两个变量进行整体比较。 D.同一结构类型中的成员变量名称可以相同。

二.填空题

1.若有如下定义:

struct student {

int num; char name[12]; double score;

《C语言程序设计基础》课程单元总结与单元练习 答案

}stu;

则结构类型的关键字是 ,用户定义的结构类型名是 ,用户定义的结构变量是 。 2.若有如下定义:

struct worker {

int num; char name[12]; char sex; int age; }s,*p;

则sizeof(struct worker)的值是 ,变量s所占内存字节数是 ,变量p所占内存字节数是 。 3.若有如下定义:

struct num {

int a; int b; float f;

}n={1,3,5.0}; struct num *pn=&n;

则表达式pn->b/n.a*pn->b的值是 ,表达式(*pn).a+pn->f的值是 。

4.结构数组中存有三个人的姓名和年龄,要输出年龄最大的人的姓名和年龄。将程序补充完整。

#include struct man {

char name[20]; int age;

}person[ ]={\void main( ) {

struct man *p,*q; int old=0;

for(p=person;p ;p++) }

if(oldage) {q=p; ; } printf(\

5. 下面程序的功能是从键盘上输入5个人的年龄、姓名和性别,然后输出。将程序补充完

整。

#include

《C语言程序设计基础》课程单元总结与单元练习 答案

struct man {

char name[20]; int age; char sex[4]; };

void data_in(struct man *p,int n) {

struct man *q= ; for( ;p

void data_out(struct man *p,int n) {

struct man *q= ; for( ;p

void main( ) {

struct man person[5]; data_in(person,5); data_out(person,5); }

printf(\printf(\

scanf(\ , , );

*******************************************************************************

习题答案:

一.选择题

1.A

2.B

3.D

4.A

5.B

二.填空题

1.struct student stu

2.21 21 1 (上机测试) 3.9 6.000000

4.page;

5.p+n p->name,&(p->age),p->sex p+n

*******************************************************************************