超级经典c语言陷阱考试题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

若有定义:inta[2][3],则对a数组的第i行j列元素地址的正确引用为___d___.a)*(a[i]+j)b)(a+i)c)*(a+j)d)a[i]+j以下正确的程序段是_________.a)charstr[20];b)char*p;scanf(%s,&str);scanf(%s,p);c)charstr[20];d)charstr[20],*p=str;scanf(%s,&str[2]);scanf(%s,p[2]);下面程序的运行结果是_______.#includestdio.h#includestring.hfun(char*w,intn){chart,*s1,*s2;s1=w;s2=w+n-1;while(s1s2){t=*s1++;*s1=*s2--;*s2=t;}}main(){charp[]=“1234567”;fun(p,strlen(p));puts(p);}a)7654321b)1714171c)1711717d)7177171下面程序段的运行结果是__hELLO!______.chars[80],*sp=HELLO!;sp=strcpy(s,sp);s[0]='h';puts(sp);.下面程序段的运行结果是__ef_____.charstr[]=abc\0def\0ghi,*p=str;printf(%s,p+5);设有如下定义:intx=1,y=-1;,则语句:printf(“%d\n”,(x--&++y));的输出结果是:BA.1B.0C.-1D.2设有如下定义:inta,b;,则语句:printf(%d,(a=5)&&(b=-1));的输出结果是:AE.1F.5G.-1H.不确定程序执行后的输出结果是:n=3inti,n=0;for(i=2;i7;i++){do{if(i%3){continue;}--n;}while(!i);n++;}printf(n=%d\n,n);1.以下代码,哪一句是非法的?____最后一句s.p[0]=2;____structpo_s{inti;int*p;};intmain(void){structpo_ss;int*p;p=&s.i;p[0]=4;p[1]=3;s.p=p;s.p[1]=1;s.p[0]=2;return0;2.以下代码,输出什么?____a3,BB(注意大小写)____inta[5]={0x1a,0xa3,0xd3,0xe4,0xbb};int*ptr;ptr=(int*)(&a+1);printf(%x,%X,*(a+1),*(ptr-1));3.下面的代码输出是什么,为什么?voidfoo(void){unsignedinta=0x10;intb=-20;(a+b6)?puts(6):puts(=6);}输出6因为表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。4.说明以下两个语句的作用,哪个更好?为什么?#definePSstructpo_s*typedefstructpo_s*PS_t;这两个语句是将PS和PS_t作为一个指向结构po_s指针。typedef更好。因为如下代码PSp1,p2;PS_tp3,p4;p1为一个指向结构的指,p2为一个实际的结构,这也许不是你想要的。第二个例子正确地定义了p3和p4两个指针。5.下面两段代码一样吗?为什么?intsquare(volatileint*ptr){inta,b;a=*ptr;b=*ptr;returna*b;}intsquare(volatileint*ptr){inta;a=*ptr;returna*a;}由于*ptr的值可能被意想不到地该变,因此a和b可能是不同的。第一段段代码返回的可能不是你所期望的平方值。#includestaticjmp_bufbuf;main(b){volatileintb;b=3;if(setjmp(buf)!=0){printf(%d,b);exit(0);}b=5;longjmp(buf,1);}请问,这段程序的输出是(a)3(b)5(c)0(d)以上均不是考查多维数组与指针voidfoo(int[][3]);main(){inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};foo(a);printf(%d,a[2][1]);}voidfoo(intb[][3]){++b;b[1][1]=9;}这段程序的输出是:b(a)8(b)9(c)7(d)以上均不对考查自减操作(--)voide(int);main(){inta;a=3;e(a);}voide(intn){if(n0){e(--n);printf(%d,n);e(--n);}}voidf(char**);main(){char*argv[]={ab,cd,ef,gh,ij,kl};f(argv);}voidf(char**p){char*t;t=(p+=sizeof(int))[-1];printf(%s,t);}这段程序的输出是:b(a)ab(b)cd(c)ef(d)gh

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功