C语言练习题(谭浩强第四版)..附有答案 下载本文

内容发布更新时间 : 2024/5/19 6:23:51星期一 下面是文章的全部内容请认真阅读。

高级语言程序设计综合练习一 学号: 姓名:

7. C语言规定结构体变量系统分配给它的存储空间是( )

A)该结构体中最后一个成员所需的存储空间 B)该结构体中所有成员所需存储空间的总和。 C)该结构体中第一个成员所需的存储空间

D)该结构体中占用最大存储空间的成员所需的存储空间

8. 当说明一个共用体变量时,系统分配给它的内存是:( )

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

B:共用体中第一个成员所需内存量

C:成员中占内存量最大者所需的内存量 D:共用体中最后一个成员所需内存量

9. 以下对C语言中共用体类型数据的叙述正确的是:( )

A:可以对共用体变量名直接赋值

B:一个共用体变量中可以同时存放所有成员 C:一个共用体变量中不能同时存放其所有成员 D:共用体类型定义中不能出现结构体类型的成员

10. 若有以下定义和语句: union data { int i; char c; float f; }a;

则以下语句正确的是:( )

A:a=5 B:printf(\ C:a={2,'a',1.2};

11. 根据以下定义,能输出字母M的语句是( ) struct person { char name[9];int age;}; struct person class[10]={ “John”,17, “Paul”,19, “Mary”,18, “Adam”,16,}; 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]);

12.有如下定义:

struct date { int y ;

int m ; int d ;}; struct person

{ char name[20];

D:n=a 29

高级语言程序设计综合练习一 学号: 姓名:

char sex;

struct date birthday; }a;

对结构体变量a的出生年份进行赋值时,下面正确的赋值语句是( )。 A y =1958 B birthday.y=1958

C a.birthday.y =1958 D a.y =1958

13.有以下程序段

typedef struct node { int data;

struct node *next; }NODE; NODE *p;

以下叙述正确的是( )

A)NODE *p;语句出错 B)p 是指向struct node 结构体变量的指针的指针

C)p 是struct node 结构体变量 D)p 是指向struct node 结构体变量的指针

14.以下关于typedef 的叙述错误的是( )

A) typedef只是将已存在的类型用一个新的名字来代表 B) 用typedef可以增加新类型

C)用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名 D)用typedef为类型说明一个新名,通常可以增加程序的可读性

15.下面程序的运行结果是( )

union un

{ int a; int b; int c;}; main()

{ union un u;

u.a=1; u.b=2; u.c=3;

printf(“a=%d,b=%d,c=%d\\n”,u.a,u.b,u.c); }

A)a=3,b=3,c=3 B)a=1,b=2,c=3 C)a=1,b=1,c=1 D)a=2,b=2,c=2

(第9章 结构体与联合体)参考答案

一、单选题

答案: 1D 2 B 3 C 4 D 5 D 6 D 7B 8C 9 C 10 B 11 D 12 C 13D 14B 15A

二、程序填空

30

高级语言程序设计综合练习一 学号: 姓名:

已知head 指向一个带头结点的单向链表,链表中每个结点包含数据域(data)和指针域(next),数据域为整型。下面的sum函数是求出链表中所有结点数据域值的和,作为函数值返回。请填空完善程序。

struct link { int data;

struct link *next;} main() { struct link *head; int s; ┆

s=sum(head); /*head 是指向已知单向链表的头结点*/ ┆ }

int sum( 【1】 ) {

struct link *p; int s=0; p=head->next; while(p)

{ s+= 【2】 ; p= 【3】 ; } return(s); }

二、程序填空 答案:【1】struct link *head 【2】 p->data 【3】 p->next

C语言程序设计练习题7

第10章 文 件

一、单选题

1.利用C语言的文件操作,可以把数据永久保存在:( )

A.磁盘 B.内存 C.屏幕 D.键盘

2.若有程序片段 FILE *fp; fp=fopen(“a.txt”,”r”); 则以下说法中正确的是:( )

A.fp指向磁盘文件a.txt的地址

B.fp指向磁盘文件a.txt 所对应的FILE 结构 C.如果fp不为NULL,表示文件打开失败 D.可以利用fp指针对文件a.txt进行写操作

3.fopen函数的作用是:( ) A.将文件的内容读入内存 B.读出文件的大小

C.建立与文件关联的FILE结构体变量并返回该结构体变量的地址 D.向文件写数据

4.已知fp是一个指向已打开文件的指针,ch是一个字符型变量,则ch=fgetc(fp)的作用是:( )

31

高级语言程序设计综合练习一 学号: 姓名:

A.获取键盘输入的字符,并赋值给ch

B.获取fp所指向的文件的第一个字节的内容,并赋值给ch

C.获取fp所指向的文件的当前文件位置指针所指向的一个字节的内容,并赋值给ch

D.将ch的值输出到fp所指向的文件中

6、若执行fopen函数时发生错误,则函数的返回值是________________ 。

A)地址值 B)0 C)1 D)EOF

7、若要用fopen函数打开一个新的二进制文件,该文件要求既能读也能写,则打开方式字符串应是_______。

A)”ab+” B)”wb+” C)”rb+” D)”ab”

8、若以“a+”方式打开一个已存在的文件,则以下叙述正确的是______________。

A)文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作 B)文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作 C)文件打开时,原有文件内容删除,只可作写操作

D)以上各种说法皆不正确

9、当顺利执行了文件关闭操作时,fclose函数的返回值是_______________。

A)-1 )TURE C)0 D)1

10、已知函数的调用形式:fread (buffer,size,count,fp);其中buffer代表的是____________。

A)一个整型变量,代表要读入的数据项总数 B)一个文件指针,指向要读的文件

C)一个指针,指向要读入数据的存放地址

D)一个存储区,存放要读的数据项

11、fscanf函数的正确调用形式是_________________。 A)fscanf (fp,格式字符串,输出表列); B)fscanf(格式字符串,输出表列,fp); C) fscanf(格式字符串,文件指针,输出表列) D)fscanf(文件指针,格式字符串,输入表列)

12、fwrite函数的一般调用形式是______________。 A)fwrite(butter, count, size fp); B) fwrite(fp, size, count, butter);

C) fwrite(fp, count, size, butter); D) fwrite(butter, size, count, fp); 13、fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是____________。 A)只写 B)追加 C)读或读写 D)答案B和C都正确

14、若调用fputc函数输出字符成功,则其返回值是___________。

32