C语言课堂练习习题集

发布时间 : 星期三 文章C语言课堂练习习题集更新完毕开始阅读

char s[10]=\,*p=s; 则不能代表字符u的表达式是。

A)s[4] B)s+4 C)*(p+4) D)p+=4,*p; 14. 若有以下定义:

iht a[ ]={1,2,3,4,5,6,7,8,9},*p=a; 则值为5的表达式是。

A)p+=4,*(p++) B)p+=4,*++p C)p+=5,*p++ D)p+=4,++*p

15. 若有以下定义,则对数组元素地址的正确引用是。 int a[5]={1,2,3,4,5},*p,i; i=3;p=a;

A)&p B)a++ C)&(p+1) D)&p[i] 16. 有以下程序片段,执行后a的值为 int a=10,* p,* * pp; p=&a;pp=&p;a=**pp+10;

A)20 B)10 C)30 D)无确定值 17. 设有以下程序片段:

char s[ ]=\;char *p; p=s;

则执行完上面的程序段后,*(p+8)的值为。 A)'!' B)'\\0' C)'m' D)不定值

18. 有以下程序,请问执行后的输出结果是。 #include main()

{ int a[]={1,2,3,4,5,6},*p; p=a;*(p+3)+=2;

printf(\%d,%d\,*p,a[3]); } A)1,4 B)0,4 C)1,6 D)0,6 19. 有以下程序片段:

int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[3],i;for(i=0;i<3;i++) p[i]=&a[i*4];

printf(“%d”,*(p[2]+1)); 则输出结果为

A) 9 B) 5 C) 10 D) 6

填空题

1. 下列程序的输出结果是____。 #include main()

{char a[10]=\,*p; p=&a[4]; puts(p); } 2. 下列程序的输出结果是____。 #include main()

{ char *p[ ]={\,\,\,\;

33

int i;

for(i=3;i>=0;i--,i--)

printf(\%c\,*p[i]);printf(\;}

3. 若有以下定义和语句,则通过指针p对值为8的数组元素的引用的表达式是____ int a[10]={1,2,3,4,5,6,7,8,9},*p; p=&a[1];

4. c语言的数组名是一个____常量,不能对它进行加减和赋值等运算。 5. 以下程序的输出结果是____。 #include main()

{ int a[20],*p[5],i; for(i=0;i<19;++i) a[i]=i; for(i=0;i<5;++i) p[i]=&a[i*4];

for(i=0;i<5;++i)

printf(\%d\,*(p[i]+1)); } 6. 以下程序的输出结果是____。 #include main()

{ char *p[4]={\,\,\,\; char * *pp; int i;pp=p; for(i=1;i<3;++i)

printf(\%s\,*(pp+i));} 34

7. 以下程序片段的输出结果为____。

char *s=\; printf(“%d”,strlen(s)); 第十一章 结构体与共同体 单项选择题

1. 设有如下枚举类型定义:enum color {red=1,black,white=10,green=100,blue};则枚举量blue的值为

A)5 B)3 C)101 D)11 2. 下面程序的输出结果是 struct st

{ int x; int *y; }; int dt[4]={10,20,30,40};

struct st *p,aa[4]={50,&dt[0], 60,&dt[1], 70,&dt[2], 80,&dt[3]}; main()

{ p=aa;

printf(\%d\\n\,++p→x) printf(\%d\\n\→x);

printf(\%d\\n\,++(*p→y)); } A)10 B)50 C)51 D)60 20 60 60 70

20 21 2l 31 3. 下面程序的输出是。 main()

{ struct cmplx{int x;int y;} cnum[2]={1,3,2,7};

printf(\%d\\n\,cnum[0].y/cnum[0]. x*cnum[1].x); } A)0 B)1 C)3 D)6 4. 下面程序的输出是。

typedef union {long x[2]; int y[4]; char z[8]; }MYTYPE; MYTYPE them; main()

{ printf(\%d\\n\,sizeof(them)); }

A)32 B)16 C)8 D)24

5. 以下对C语言中联合体类型数据的叙述正确的是。 A)可以对联合体变量直接赋值

B)一个联合体变量中可以同时存放其所有成员 C)一个联合体变量中不能同时存放其所有成员

D)联合体类型定义中不能同时出现结构体类型的成员 6. 下列表达式中正确的是。 A)struct person

{int age; char name[8]; char sex;

}personl,person2;

B)struct person

{int age; char name[8]; char sex;} person personl,person2; C)struct person

{int age;char name[8];char sex;};personl,person2; D)struct person

{int age;chat name[8]=\;char sex=\; } person1

7. 以下程序的运行结果为。 #include main()

{struct date

{int year,month,day;}today;

printf(\%d\\n\,sizeof(struct date));} A)6 B)8 C)10 D)12

8. 下列语句中可以完成建立2结点的单向链表的功能的选项是。 A)head→next=new; new→next=head;

B)new→next=head;head=new;

35

C)new→next=head;

head=new;new→next=Null; D)head→next=Null;

head→next=new;new→next=NULL;

9. 以下对结构体变量stul中成员age的非法引用是 struct st

{int age;int num;}stul,*p; p=&stul;

A) stul.age B) age C) p→age D) (*p).age 10. 再定义一个结构体变量时,系统分配给它的内存是 A)结构体中第一个成员所需内存量

B)结构体中最后一个成员所需内存量 C)成员中占内存量最大者所需内存量 D)各成员所需内存量的总和

11. 定义一个联合体变量时,系统分配给它的内存是。 A)联合体中第一个成员所需内存量 B)联合体中最后一个成员所需内存量 C)成员中占内存量最大者所需的容量 D)各成员所需内存量的总和

12. 关于联合体,下面叙述不正确的是

A)联合体变量中成员项共用同一存储空间,因此,联合体变量的地址和每一个成员项的地址是同一地址

B)联合体变量中成员项所占存储空间量不同,因此,联合体中每一个成员项的地址不是36

同一地址

C)C语言规定不能对联合体变量赋值;也不能通过直接引用变量名来得到成员项,这与结构体是相同的

D)不允许将联合体变量作为函数参数,也不允许用联合体变量作为函数的返回值 13. 设有以下结构体定义: struct emproyer

{char name[8];int age;char sex;}staff; 则下面的叙述不正确的是

A)struct是结构体类型的关键字

B)struct emproyer是用户定义的结构体类型 C)staff是用户定义的结构体类型名 D)nameage和sex都是结构体成员名 14. 下面程序的运行结果是。 main()

{struct cmplx

{int x;int y;}cnum[2]={l,3,2,7}; printf(\%d\\n\,cnum[0].y/cnum[0].x*cnum[1].x);} A)0 B)1 C)3 D)6

15. 根据下面的定义,能打印出字母“M”的语句是。

struct person

{char name[9];int age;};

struct person class[10]={\,17, \,19,\,18,\,16 };

联系合同范文客服:xxxxx#qq.com(#替换为@)