《C语言程序设计》习题集 下载本文

《C语言程序设计》习题集

struct NODE *next; };

void main( )

{ struct NODE *p,*q,*r;

int sum=0;

p=(struct NODE *)malloc(sizeof(struct NODE)); q=(struct NODE *)malloc(sizeof(struct NODE)); r=(struct NODE *)malloc(sizeof(struct NODE)); p->num=1;q->num=2;r->num=3; p->next=q;q->next=r;r->next=NULL; sum+=q->next->num;sum+=p->num; printf(“%d\\n”,sum); }

执行后的输出结果是( )。 A) 3 B) 4 C) 5 D) 6

12、有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个连续结点。

struct node { int data

struct node *next ; } *p, *q, *r;

data next ↑p data next ↑q data next ↑r

现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是 A) r->next=q; q->next=r->next; p->next=r; ( )。 B) q->next=r->next; p->next=r; r->next=q; C) p->next=r; q->next=r->next; r->next=q; D) q->next=r->next; r->next=q; p->next=r; 13、有以下程序

void main()

{ union { unsigned int n; unsigned char c; }u1; u1.c=?A?;

printf(\}

执行后输出结果是( )。 A) 产生语法错 B) 随机值 14、以下程序的输出结果是( )。

union myun

- 44 -

C) A D) 65

《C语言程序设计》习题集

{ struct

{ int x, y, z; } u; int k; } a;

void main()

{ a.u.x=4; a.u.y=5; a.u.z=6; a.k=0;

printf(“%d\\n”,a.u.x); } A) 4 B) 5 C) 6 D) 0

15、已知字符0的ASCⅡ码为十六进制的30,下列程序的运行结果是( )。

void main( )

{ union { char ch;

unsigned int k[4]; } x; x.k[0]=0x39; x.k[1]=0x36;

printf(\,x.ch); } A) 6 B) 9 C) 3 D) 0 16、设有如下枚举类型定义:

enum language { English=6,French,Chinese=1,Japanese,Italian}; 则枚举量Italian的值为( )。

A) 10 B) 4 C) 3 D) 5 17、以下对枚举类型名ee的定义中正确的是( )。 A) enum ee {A,B,C,D}; B) enum ee {'A','B','C','D'}; C) enum ee = {A,B,C,D}; D) enum ee = {'A','B','C','D'};

18、下面对typedef的叙述中不正确的是( )。

A) 用typedef不能定义变量名

B) 用typedef可以定义新的数据类型

C) 用typedef只是将已存在的类型用一个新的标识符来代表 D) 使用typedef有利于程序的通用和移植 19、以下程序的运行结果是( )。

typedef union { long a[2]; int b[4]; char c[8]; } EXAM; void main( )

{ printf(\,sizeof(EXAM));} A) 32 B) 16 C) 8 D) 报错 二、填空题

- 45 -

《C语言程序设计》习题集

1、设有以下结构类型说明和变量定义,则变量a在内存所占字节数是___,变量p在内存所

占字节数是 。 struct stud

{ char num[6];

int s[4]; double ave; } a,*p; 2、已有定义如下:

struct node { int data;

struct node *next;| } *p;

以下语句调用malloc函数,使指针p指向一个具有struct node类型的动态存储空间,请填空。

p=(struct node *) malloc( ___ __ ); 3、下面程序的运行结果是: typedef union student { char name[10]; long sno; char sex;

float score[4]; }STU;

void main() { STU a[5];

printf(“%d\\n”,sizeof(a)); }

三、编程题

1、定义一个结构体变量(包括年,月,日)。计算该日在本年中是第几天,注意闰年 问题。

2、编写一个函数printf,打印一个学生的成绩数组,该数组中有5个学生的数据记录 每个记录包括(num,name,score[3],用主函数输入这些记录,用printf函数输出这些记录 3、有10个学生,每个学生的数据包括学号,姓名,3门课的成绩,从键盘输入10个学生的 数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号,姓名,3门课 成绩,平均分数)。

- 46 -

《C语言程序设计》习题集

第十二章 位运算

一、选择题

1、以下程序的功能是进行位运算: void main() { unsigned char a, b; a=7^3; b= ~4 & 3;

printf(\ }

程序运行后的输出结果是( )。 A)4 3 B)7 3 C)7 0

D)4 0

2、设有定义语句:char c1=92,c2=92;,则以下表达式中值为零的是(

)。A) c1^c2 B) c1&c2 C) ~c2 D) c1|c2 3、有以下程序: void main() { unsigned int a; int b=-1; a=b;

printf(\}

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

A) -1 B) 65535

C) 32767

D) -32768

4、有以下程序:

void main( )

{ unsigned char a,b; a=4|3; b=4&3;

printf(“%d %d\\n”,a,b)(; }

执行后输出结果是( )。 A) 7 0 B) 0 7

C) 1 1 D) 43 0

5、有以下程序:

void main()

{ int x=3, y=2,z=1; printf(\}

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

A) 3 B) 2 C) 1 D) 0

6、设char型变量x中的值为10100111,则表达式(2+x)^(~3)的值是( A) 10101001 B) 10101000 C) 11111101 D) 01010101 7、有以下程序:

void main()

{ unsigned char a,b,c;

- 47 -