C语言程序设计习题集

#include main()

{ char *p; int i;

p=(char*)malloc(sizeof(char)*20); strcpy(p,\;

for(i=6;i>=0;i--)putchar(*(p+i)); printf(\; free(p); }

第10章 复杂数据类型

一.选择题 1.有以下程序:

#include main()

{ struct STU{ char name[9]; char sex; double score[2]; }; struct STU a={\,'m',85.0,90.0},b={\,'f',95.0,92.0}; b=a;

printf(\,%c,%2.0f,%2.0f\\n\,b.name,b.sex,b.score[0],b.score[1]); }

程序的运行结果是________。 A)Qian,f,95,92 B)Qian,m,85,90 C)Zhao,f,95,92 D)Zhao,m,85,90

2.以下结构体类型说明和变量定义中正确的是。 A)typedef struct

{int n; char c;}REC; REC t1,t2; B)struct REC;

{int n; char c;}; REC t1,t2;

C)typedef struct REC ;

{int n=0; char c='A';}t1,t2; D)struct

{int n; char c;}REC; REC t1,t2;

3.若有以下语句

typedef struct S

{ int g;char h; }T; 以下叙述中正确的是

A)可用S定义结构体变量 B)可用T定义结构体变量

25

C)S是struct类型的变量 D)T是struct S类型的变量

4.下面结构体的定义语句中,错误的是________。

A)struct ord {int x;int y;int z;};struct ord a; B)struct ord {int x;int y;int z;}struct ord a; C)struct ord {int x;int y;int z;}a; D)struct {int x;int y;int z;}a;

5.有以下程序:

#include struct st

{ int x,y;}data[2]={1,10,2,20}; main()

{ struct st *p=data;

printf(\,\,p->y); printf(\,(++p)->x); }

程序的运行结果是________。 A)10,1 B)20,1 C)10,2 D)20,2

6.设有定义:

struct complex

{int real,unreal;} datal={1,8},data2; 则以下赋值语句中错误的是

A)data2=data1; B)data2=(2,6);

C)data2.rea1=data1.real; D)data2.real=datal.unreal;

7.有以下程序

#include struct ord

{ int x,y;}dt[2]={1,2,3,4}; main() {

struct ord*p=dt;

printf(\;printf(\; }

程序运行后的输出结果是 A)1,2 B)4,l C)3,4 D)2,3

8.有以下程序

#include struct S

26

{ int a, b; }data[2]={10,100,20,200}; main()

{ struct S p=data[1]; printf(\,++(p.a)); }

程序运行后的输出结果是 A)10 B)11 C)20 D)21

9.有以下定义和语句

struct workers

{int num;char name[20];char c; struct

{int day;int month;int year;}s; };

struct workers w,*pw; pw=&w;

能给w中year成员赋1980的语句是

A)*pw.year=1980; B)w.year=1980; C)pw->year=1980; D)w.s.year=1980;

10.假定已建立以下链表结构,且指针p和q已指向如下图所示的结点:

则以下选项中可将q所指结点从链表中删除并释放该结点的语句组是 。 A)(*p).next=(*q).next; free(p); B)p=q->next; free(q); C)p=q; free(q);

D)p->next=q->next; free(q);

二.填空题 1.有以下程序:

#include typedef struct

{ int num;double s;}REC;

void funl(REC x) {x.num=23;x.s=88.5;} main()

{ REC a={16,90.0); fun1(a);

printf(\,a.num); }

程序运行后的输出结果是______。

2.设有定义:

27

struct person

{ int ID;char name[12];}p;

请将scanf(\,_______);语句补充完整,使其能够为结构体变量p的成员ID正确读入数据。

3.下列程序的运行结果为_______。

#include #include struct A

{ int a; char b[10]; double c; }; void f(struct A *t); main()

{ struct A a={1001,\,1098.0);

f(&a);printf(\,%s,%6.1f\\n\,a.a,a.b,a.c); }

void f(struct A *t)

{ strcpy(t->b,\;}

4.以下程序把三个NODETYPE型的变量链接成一个简单的链表,并在while循环中输出链表结点数据域中的数据。请填空。

#include struct node

{ int data;struct node *next;}; typedef struct node NODETYPE; main()

{ NODETYPE a,b,c,*h,*P;

a.data=10;b.data=20;c.data=30;h=&a; a.next=&b;b.next=&c;c.next=′\\0′; p=h;

while(p){printf(\,\,p->data);________;} printf(\; }

第11章 文件

一.选择题

1.下列关于C语言文件的叙述中正确的是________。

A)文件由一系列数据依次排列组成,只能构成二进制文件 B)文件由结构序列组成,可以构成二进制文件或文本文件 C)文件由数据序列组成,可以构成二进制文件或文本文件 D)文件由字符序列组成,其类型只能是文本文件

2.有以下程序:

#include

28

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4