您好,欢迎访问三七文档
1C语言考试题一、单选题。(共12题,每题1.5分,共18分)1.以下不能定义为用户标识符是(d)a、Mainb、_0c、_intd、sizeof2.有以下程序#inlcudestdio.hintmain(){intm=12,n=34;printf(%d%d,m++,++n);printf(%d%d\n,n++,++m);return0;}程序运行后的输出结果是(a)a、12353514b、12353513c、12343514d、123435133.有以下语句:intb;charc[10];则正确的输入语句是(b)a、scanf(%d%s,&b,&c);b、scanf(%d%s,&b,c);c、scanf(%d%s,b,c);d、scanf(%d%s,b,&c);4.有以下程序#inlcudestdio.hintmain(){intm,n,p;scanf(m=%dn=%dp=%d,&m,&n,&p);printf(%d%d%d\n,m,n,p);return0;}若想从键盘上输入数据,使变量M中的值为123,N中的值为456,P中的值为789,则正确的输入是(a)a、m=123n=456p=789b、m=123n=456p=789c、m=123,n=456,p=789d、1234567895.有以下程序#inlcudestdio.hintmain(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf(%d,%d\n,a,b);return0;}程序运行后的输出结果是(b)2a、6,1b、2,1c、6,0d、2,06.有以下程序#inlcudestdio.hintmain(){inti=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf(%d%d%d\n,i,j,k);return0;}程序运行后的输出结果是(d)a、123b、234c、223d、2337.有以下程序#inlcudestdio.hintmain(){chara[7]=a0\0a0\0;inti,j;i=sizeof(a);j=strlen(a);printf(%d%d\n,i,j);return0;}程序运行后的输出结果是(c)a、22b、76c、72d、628.已有定义:chara[]=xyz,b[]={’x’,’y’,’z’};,以下叙述中正确的是(c)a、数组a和b的长度不同b、a数组长度小于b数组长度c、a数组长度大于b数组长度d、上述说法都不对9.以下叙述中正确的是(d)a、预处理命令行必须位于源文件的开头b、在源文件的一行上可以有多条预处理命令c、宏名必须用大写字母表示d、宏替换不占用程序的运行时间10.以下语句或语句组中,能正确进行字符串赋值的是(d)a、char*sp;*sp=right!;b、chars[10];s=right!;c、chars[10];*s=right!;d、char*sp=right!;11.设有如下说明typedefstructST{longa;intb;charc[2];}NEW;则下面叙述中正确的是(c)3a、以上说明形式非法b、ST是一个结构体类型c、NEW是一个结构体类型d、NEW是一个结构体变量12.程序中若有如下说明和定义语句char*fun(char*);intmain(){char*s=one,a[5]={0};charch;}以下选项中对函数fun的正确调用语句是(d)a、(*fun)(a);b、ch=*fun(*s);c、fun(&a);d、ch=*fun(s);二、简答题。(共13题,1-10每题4分,11-13每题2分,共46分)1.程序的局部变量存在于栈(堆栈)中,全局变量存在于_全局数据区全局/静态区中,动态申请数据存在于堆中。调用malloc分配的空间在堆中。2.有以下程序#includestdio.h#defineP3intF(intx){return(P*x*x);}intmain(){printf(%d\n,F(3+5));return0;}程序运行后的输出结果是1923.有以下程序#includestdio.hvoidf(int*x,int*y){intt;t=*x;*x=*y;*y=t;}intmain(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(pq){f(p,q);p++;q--;4}for(i=0;i8;i++)printf(%d,,a[i]);return0;}程序运行后的输出结果是8,7,6,5,4,3,2,14.以下程序运行后的输出结果是010111212#includestdio.hintFun(inta){intb=0;staticc=3;b++;c++;return(a+b+c);}intmain(){inti,a=5;for(i=0;i3;i++){printf(“%d%d”,i,Fun(a));}}5.unsignedchar*p1;unsignedlong*p2;p1=(unsignedchar*)0x801000;p2=(unsignedlong*)0x810000;请问p1+5=0x801005;p2+5=0x810014;6.有以下程序#includestdio.hvoidpoint(char*p){p+=3;}intmain(){charb[4]={’a’,’b’,’c’,’d’},*p=b;point(p);printf(%c\n,*p);5return0;}程序运行后的输出结果是(b)7.函数DelChar原型为:voidDelChar(chars[],charc),其功能是删除字符串s中值为c的字符。#includestdio.hvoidDelChar(chars[],charc){inti,x,len;len=strlen(s);for(i=0;ilen;i++){if(s[i]==c){for(x=i;s[x]!='\0';x++)s[x]=s[x+1];len--;}}}8.有以下程序#includestdio.hintmain(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i9;i++)p[i]=i;for(i=0;i3;i++)printf(%d,a[1][i]);return0;}程序运行后的输出结果是(345)9.有以下程序#includestdio.hintmain(){inta=1,b;for(b=1;b=10;b++)6{if(a=8)break;if(a%2==1){a+=5;continue;}a-=3;}printf(%d\n,b);return0;}程序运行后的输出结果是410.以下程序运行后的输出结果是13431structNODE{intk;structNODE*link;};intmain(){structNODEm[5],*p=m,*q=m+4;inti=0;while(p!=q){p-k=++i;p++;q-k=i++;q--;}q-k=i;for(i=0;i5;i++)printf(%d,m[i].k);}11.如何引用一个已经定义过的全局变量?答:可以用引用文件的方式;也可以用extern关键字。12.do……while和while……do有什么区别?7答:do……while先执行循环体,后判断条件是否为真,循环体至少执行一次;while……do先判断条件是否为真,后执行语句块。13.语句for(;1;)有什么问题?它是什么意思?答:与while(1)相同,表达式2结果永远为true;死循环。三、问答题。(共5题,第一题2分,第二题5分,第三题4分,第四题2分,编程题23分,共36分)1.指出程序中的错误。voidfun(){staticintcount=0;coutcount++endl;}intmain(){intcount=10;for(inti=0;i3;i++){fun();}return0;}答:main函数里的count没有定义2.说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”找出程序中的错误。1、#includestring.h2、#includestdio.h3、intmain()4、{5、char*src=hello,world;86、char*dest=NULL;7、intlen=strlen(src);8、dest=(char*)malloc(len);9、char*d=dest;10、char*s=src[len];11、while(len--!=0)12、d++=s--;13、printf(%s,dest);14、return0;15、}答:7、intlen=strlen(src+1);10、char*s=&src[len-1];12、(*d++)=(*s--);最后还有在末尾加上\0*d='\0';3.static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?答:static全局变量不能被其他文件extern,普通全局变量可通过extern被其他文件引用;static局部变量存储在全局数据区,普通局部变量存储在栈上;(两者作用域相同)static函数不能被其他文件extern,而普通全局函数可以;4.局部变量能否和全局变量重名?答:可以5.判断一个字符串是否回文。当字符串是回文时,函数返回字符串:yes!,否则9函数返回字符串:no。所谓回文即正向与反向的拼写都一样,例如:adgda答:#includestdio.hchar*huiwen(constchar*str){inti=0;intlength=strlen(str);char*first=str;char*last=str+length-1;/*while(first=last&&*first++==*last--){i++;}*/for(i=0;ilength/2;i++){if(*first++!=*last--)returnno;}returnyes;//if(i=length/2)returnyes;//returnno;}intmain(){chara[20];printf(input:\n);scanf(%s,a);printf(%s\n,huiwen(a));return0;}
本文标题:C语言考试题答案
链接地址:https://www.777doc.com/doc-2908489 .html