《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 -
。
)