《C语言程序设计A》课程形成性考核作业四参考答案 下载本文

一、 选择题

1. 假定有“struct BOOK{char title[40];float price;};struct BOOK *book;”,则不正确的语句为

(A)。

A.struct BOOK *x=malloc(book); B.struct BOOK x={“C++ Programming”,27.0}; C.struct BOOK *x=malloc(sizeof(BOOK)); D.struct BOOK **x=&book; 2. 假定有“struct BOOK{char title[40];float price;} book;”,则正确的语句为(B)。 A.struct BOOK x=&book; B.struct BOOK *x=&book; C.struct BOOK x=calloc(BOOK); D.struct BOOK *x=BOOK; 3.表示文件结束的符号常量为(C)。

A.eof B.Eof C.EOF D.feof

4.C语言中系统函数fopen()是(D)一个数据文件的函数。 A.读取 B.写入 C.关闭 D.打开

5.从一个数据文件中读入以换行符结束的一行字符串的函数为(B)。 A.gets() B.fgets() C.getc() D.fgetc()

6.向一个二进制文件写入信息的函数fwrite()带有(D)参数。 A.1 B.2 C.3 D.4

二、填空题

1.假定一个结构类型的定义为“struct A{int a,b;A*c;};”,则该类型的大小为___12_______字节。 2.假定一个结构类型的定义为“struct B{int a[5],char *b;};”,则该类型的大小为___24_______字节。

3.假定一个结构类型的定义为“struct D{int a;union{int b;double c;};struct D* d[2];};”,则该类型的大小为___20_______字节。

4.假定要动态分配一个类型为struct Worker的具有n个元素的数组,并由r指向这个动态数组,则使用语句的表达式为struct Worker* r=__(Worker*)malloc(n*sizeof(Worker));_____。 5.假定要访问一个结构x中的由a指针成员所指向的对象,则表示方法为__x.(*a)___。 6.假定要访问一个结构指针p所指向对象中的b指针成员所指的对象,则表示方法为_____ *(p->b)___

7.与结构成员访问表达式(*fp).score等价的表达式是__fp->score______。

三、写出下列每个程序运行后的输出结果 1. #include struct Worker{ char name[15]; //姓名 int age; //年龄 float pay; //工资 };

void main(){

struct Worker x={\ struct Worker y,*p; y=x;p=&x; printf(\ printf(\}

输出结果为:

wanghua 52 23.50 wanghua 52 23.50

Press any key to continue

2. #include #include struct Worker{ char name[15]; //姓名 int age; //年龄 float pay; //工资 };

void main(){ struct Worker x; char *t=\ int d=38;float f=493; strcpy(x.name,t); x.age=d;x.pay=f; x.age++;x.pay*=2; printf(\}

输出结果为: louting 39 986.00

Press any key to continue

3. #include #include struct Worker{ char name[15]; //姓名 int age; //年龄 float pay; //工资 };

int Less(struct Worker r1,struct Worker r2){ if(r1.age

void main(){ struct Worker a[4]={{\ struct Worker x=a[0]; int i; for(i=1;i<4;i++) if(Less(x,a[i]))x=a[i]; printf(\}

输出结果为: def 58 638.00

Press any key to continue

四、写出下列每个函数的功能 1.

void QA(struct Worker a[],int n){ int i; for(i=0;i

假定结构struct Worker的定义如下: #include #include #include struct Worker{ char name[15]; //姓名 int age; //年龄 float pay; //工资 };

函数功能为:

输入struct Worker 类型的对象a[n]的各个元素的值

2. struct StrNode *QB(int n){ StrNode * f,*p; if(n==0)return NULL; f=(StrNode*)malloc(sizeof(struct StrNode)); scanf(\ p=f; while(--n){ p=p->next=(StrNode*)malloc(sizeof(struct StrNode)); scanf(\