《C语言程序设计》形成性考核作业(4) 下载本文

《C语言程序设计》作业4

一、选择题

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

A. struct BOOK * x=malloc(book);

B. struct BOOK x={\C. struct BOOK * x=malloc(sizeof(struct BOOK)); D. struct BOOK **x=&book;

2. 假定有“struct BOOK {char title[40]; float price;} book;”,则正确的语句为 ( )。

A. struct BOOK x=&book; B. struct BOOK * x=&book; C. struct BOOK x=calloc(BOOK); D. struct BOOK *x=BOOK;

3. 表示文件结束符的符号常量为( )。

A. eof

B. Eof

C. EOF

D. feof

4. C语言中的系统函数fopen( )是( )一个数据文件的函数。

A. 读取

B. 写入

C. 关闭

D. 打开

5. 从一个数据文件中读入以换行符结束的一行字符串的函数为( )。

A. gets( )

B. fgets( )

C. getc( )

D. fgetc( )

6. 向一个二进制文件中写入信息的函数fwrite( )带有( )个参数。

A. 1

B. 2

C. 3

D. 4

二、填空题

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

4. 假定要动态分配一个类型为struct Worker的具有n 个元素的数组,并由r指向这个动态数组,则使用的语句表达式为struct Worker * r= 。

5. 假定要访问一个结构x中的由a指针成员所指向的对象,则表示方法为 。

6. 假定要访问一个结构指针p所指对象中的b指针成员所指的对象,则表示方法为 。 7. 与结构成员访问表达式(*fp).score等价的表达式是 。

三、写出下列每个程序运行后的输出结果

1.

#include struct Worker { };

void main( ) {

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

printf(\ %d %6.2f\\n\printf(\ %d %6.2f\\n\

2.

char name[15]; int age; float pay;

// 姓名 // 年龄 // 工资

}

#include #include struct Worker { };

void main( ) {

struct Worker x; char *t=\int d=38; float f=493; strcpy(x.name, t); x.age=d; x.pay=f; char name[15]; int age; float pay;

// 姓名 // 年龄 // 工资

3.

}

x.age++; x.pay*=2;

printf(\ %d %6.2f\\n\

#include struct Worker { };

int Less(struct Worker r1, struct Worker r2) { }

void main( ) { }

struct Worker a[4]={{\

{\

if(r1.age

// 姓名 // 年龄 // 工资

struct Worker x=a[0]; int i;

for(i=1; i<4; i++)

if(Less(x,a[i])) x=a[i];

printf(\ %d %6.2f\\n\

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

1.

void QA(struct Worker a[ ], int n) { }

假定结构类型struct Worker的定义如下: struct Worker {

int i;

for(i=1; i

scanf(\ %d %f\