C语言课堂练习习题集(7)

2019-08-30 21:34

{ int m=2,n=4;

printf(\%d\,SELECT(m,n)); }

3. 下面程序的运行结果是____。

#define PR(ar) printf(\%d\,ar) main()

{ int j,a[]={1,3,5,7,9,11,13,15},i=5; for(j=3;j;j- -) {switch(j) { case 1:

case 2:PR(a[i++]);break; case 3:PR(a[- -i]); } } } 4. 以下程序的运行结果是____

#define A 4

#define B(x) A*x/2 main()

{ float c,a=4.5; c=B(a);

printf(“%5.1f”,c); } 第十章 指针 单项选择题

1. 下面各语句行中,能正确进行赋字符串操作的是

A) char st[4][5]={“ABCDE”};

B) char s[5]={‘A’,’B’,’C’,’D’,’E’}; C) char *s;s=”ABCDE”; D) char *s;scanf(“%s”,s); 2. 设有说明:char *str[10];则标识符str的意义是。 A)str是一个指向有10个元素的数组的指针

B)str是一个有10个元素的数组,数组元素的数据类型是指向char型的指针型 C)str是一个指向char型函数的指针

D)str是具有10个指针元素的?维指针数组,每个元素都只能指向整型变量 3. 设有以下程序:

#include main()

{int a[9]={1,2,3,4,5,6,7,8,9},*p; p=a;

printf(\%d\,p);

printf(\%x\,p+5); }

执行此程序,如果第一个printf语句输出值是200,则第二个printf语句的输出是 A)210 B)205 C)D2 D)195

4. 若有以下说明和语句,则对a数组元素的正确引用的选项是。 int a[4][5],(*p)[5]; p=a;

A)p+1 B) *(p+3) C) *(p+1)+3 D) *(*p+2) 5. 若有下面的程序片段:

int a[12]={0},*p[3],* *pp,i; for(i=0;i<3;i++) p[i]=&a[i*4];

31

pp=p;

则对数组元素的错误引用是。

A)pp[0][11] B)a[10] C)p[3][1] D)*(*(p+2))+2)

6. 以下程序段的功能是给数组所有的元素输入数据,则应在程序横线填上的选项是。 #include main()

{ int a[10],i=0;

while(i<10) scanf(\%d\; }

A)a+(i++) B)&a[i+1] C)a+i D)&a[++i] 7. 请读程序:

#include #include main()

{ char *s1=\,*s2=\; s1++;s2++; printf(\%d\\n\,strcmp(s1,s2));} 上面程序的输出结果是

A)正数 B)负数 C)零 D)不确定的数 8. 设有以下程序片段:

char a[ ]=\,*p;

p=a;printf(\%d\,*(p+5));

执行上面的程序片段后的结果为

A) 111 B) 0 C) 104 D) 不确定的值 9. 设有以下程序: 32

#inlude main()

{int * *k,*j,i=100;

j=&i;k=&j;

printf(“%d”, * *k);} 上述程序的输出结果是

A)运行错误 B)100 C) i的地址 D)j的地址

10. 若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元,则应填入。 int *p;

p=____malloe(sizeof(int));

A)int B)int * C)(*int) D)(int *) 11. 下面程序的输出结果是 void prtv(int *x)

{printf(\%d\\n\,++*x); } main()

{ int a=25; prtv(&a); } A)23 B)24 C)25 D)26

12. 若有以下程序片段,请问执行后的输出结果是。 int * * pp,*p,a=10; p=&a;pp=&p;

printf(\%d',* *pp);

A)10 B)P的地址 C)a的地址 D)pp的地址 13. 若有以下定义:

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语言课堂练习习题集(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:吉林大学组合数学习题解答

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: