c语言笔试题带答案_第1页
c语言笔试题带答案_第2页
c语言笔试题带答案_第3页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、c语言笔试题带答案【篇一:c语言的面试题_带答案-中软国际整理】pclass=txt1)限制变量的作用域2)设置变量的存储域(堆,主动分配内存也是堆)1) 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。4. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在栈6.堆栈溢出一般是

2、由什么原因导致的?堆栈溢出一般是循环的递归调用导致的,如果使用的大数据结构的局部变量,也可能导致堆栈溢出。没有回收垃圾资源导致的是内存泄露最后内存耗尽。20.不能做switch()的参数类型是:switch的参数不能为实型。(只能是intchar)9.写出floatx与零值”比较的if语句。if(x0.000001x-0.000001)在c语言库函数中将一个字符转换成整型的函数是atol()吗,这个函数的原型是什么?函数名:atol功能:把字符串转换成长整型数函数的原型:longatol(constchar*nptr);程序例:#includestdlib.h#includestdio.hin

3、tmain(void)longl;char*str=98765432;l=atol(lstr);printf(string=%sinteger=%ldn,str,l);return(0);I. 对于一个频繁使用的短小函数,在c语言中应用什么实现,在C+中应用什么实现?8. c用宏定义,C+用inline软件测试都有那些种类?9. 黑盒:针对系统功能的测试白台:测试函数功能,各函数接口确定模块的功能和模块的接口是在软件设计的那个阶段完成的?1. 概要设计阶段unsignedchar*p1;unsignedlong*p2;p1=(unsignedchar*)0x801000;p2=(unsigne

4、dlong*)0x810000;请问p1+5=?;p2+5=?;答:p1+5=0x801005;p2+5=0x810014;请问下面程序有什么错误?inta602501000,i,j,k;for(k=0;k1000;k+)for(j=0;j250;j+)for(i=0;i60;i+)aijk=0;把循环语句内外换一下2. (编译的时候没错,运行的时候出错,但这个数组太大,如果放在栈中,还是会溢出,要作为全局变量)#definemax_cb500voidlmiquerycsmd(structmsgcb*pmsg)(unsignedcharuccmdnum;for(uccmdnum=0;uccmd

5、nummax_cb;uccmdnum+)(_;死循环(unsignedchar0至U255)以下是求一个数的平方的程序,请找出错误:#definesquare(a)(a)*(a)inta=5;intb;b=square(a+);/a被加了2次a=7,b=252、有一个16位的整数,每4位为一个数,写函数求他们的和。解释:整数1101010110110111和1101+0101+1011+0111/*n就是16位的数,函数返回它的四个部分之和*/charsumofquaters(unsignedshortn)charc=0;inti=4;doc+=n15;n=n4;while(-i);retur

6、nc;3、两个字符串,s,t;把t字符串接到s字符串尾,s字符串有足够的空间存放t字符串voidconnect(char*s,char*t,inti)char*q=t;char*p=s;if(q=null)return;while(*p!=0)p+;while(*q!=0)*p=*q;p+;q+;*p=0;voidmain()(charp7=abc;charp2=efg;connect(p,p2,3);printf(%s,p);4、分析下面的代码:char*a=hello;char*b=hello;if(a=b)printf(yes);elseprintf(no);常量字符串。位于静态存储区,

7、它在程序生命期内恒定不变。如果编译器优化的话,会有可能a和b同时指向同一个hello的。则地址相同。如果编译器没有优化,那么就是两个不同的地址,则不同。对vc,是相同。5、局部变量能否和全局变量重名?答:能,局部会屏蔽全局。要用全局变量,需要使用:;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。2、如何引用一个已经定义过的全局变量?答:extern例如在某个.cpp中定义了一个全局变量inta,可在头文

8、件中加入externa;然后在需要引用的文件中包含该头文件。或者直接在文件中加入externa;3、全局变量可不可以定义在可被多个.c文件包含的头文件中?为什么?答:可以在头文件中用static来定义同名全局变量。另外某个.c文件中定义的非静态全局变量,可以在其头文件中用extern声明,需引用此全局变量的其他.c只需包含此头文件即可。4、请写出下列代码的输出内容#includestdio.hintmain(void)(inta,b,c,d;a=10;b=a+;c=+a;d=10*a+;printf(b,c,d:%d,%d,%d,b,c,d);return0;答:10,12,1205、stat

9、ic全局变量与普通的全局变量有什么区另U?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?答:1)全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因

10、此可以避免在其它源文件中引起错误。2)从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。3)static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件综上所述:static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;static局部变量和普通局部变量有什么

11、区别:static局部变量只被初始化一次,下一次依据上一次结果值;static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝6、设有以下说明和定义:typedefunion(longi;intk5;/20charc;date;structdata(intcat;/4datecow;/20doubledog;/8too;c语言程序设计试题及答案】datemax;【篇二:1 s=txt学生数印数考核方式闭卷考核时间120分钟(本试卷包括第一卷和第二卷,答卷时间总共120分钟)第一卷第一部分:基础知识(20项,共40分).一个c语言程序是由()组成的。

12、2 a.主程序b.子程序c.函数d.过程.转换说明符%x的输出形式是()。5. a.十进制b.八进制c.十六进制d.二进制3.若a、b均为int型变量,且a=100,则关于循环语句for(b=100;a!=b;+a,+b)printf(“)的正确说法是()循环体只执行一次b.死循环c.循环体一次也不执行d.输出4.若x、y、z均为int型变量,则执行下列语句后的z值为()x=1;y=2;z=3;z=(xy)?z:y;z=(zy)?z:x;1b.4c.2d.3下面标识符中,合法的用户标识符为()。6. a.p#adb.12ac.chard._inta+3结果是()。7 a.a.bd勺ascH码c

13、.65d.3.语句charstr20;说明str是一个字符串,最多能表示()。8 a.20个字符b.19个字符c.18个字符d.21个字符.将int型变量n转换成float型变量的方法是()。9 a.floatnb.(float)nc.float(n)d.21个字符.以下不正确的描述是()。10 a.使用while和do-while循环时,循环变量初始化的操作应在循环语句之前完成b.while循环是先判断表达式后执行循环体语句c.do-while和for循环均是先执行循环体语句,后判断表达式d.for、while、do-while循环中的循环体均可以由空语句构成.在循环中使用break语句的功

14、能是()。11 a.使程序的执行跳出break所在的那一重循环b.使程序执行结束c.跳出包含此break语句的所有循环d.终止本次循环,继续下次循环.下面是一个初始化指针的语句:int*px=a;其中指针变量的名字应该是()。12 a.*pzb.ac.pxd.a.若指针px为空指针,则()。13 a.px指向不定b.px的值为零c.px的目标为零d.px的地址为零.对于语句int*px10,以下说法正确的是()。a. px是一个指针,指向一个数组,数组的元素是整数型。b. px是一个数组,其数组的每一个元素是指向整数的指针。c. a和b均错,但它是c语言的正确语句。d. c语言不允许这样的语句

15、。.具有相同基类型的指针变量p和数组变量y,下列写法中不合法的是()。14 c.p+yid.p=y.已知staticinta=5,4,3,2,1,*p=a+3,a+2,a+1,a,*q=p,则表达式*(p0+1)+*(q+2)的值是()。a.5b.4c.6d.7.已知for(;n=1;n-),下列语句实现将s2所指字符数组中前n个字符复制到s1所指字符数组中,其中代码不正确的是()。15 a.*s1+=*s2+b.s1n-1=s2n-1c.*(s1+n-1)=*(s2+n-1)d.*(+s1)=*(+s2).调用函数的实参与被调用函数的形参应该有如下关系()。a.只要求实参和形参个数相等b.只

16、要求形参和实参顺序相同c.只要求实参和形参数据类型相同d.上述三点均需具备16 .联合体成员的数据类型()。a.相同b.可以不同也可以相同c.长度一样d.是结构体变量17 .由系统分配和控制的标准输出文件为()a.键盘b.磁盘c.打印机d.显示器.c语言标准库函数fread(fd,buffer,n)的功能是()a.从文件fd中读取长度不超过内存区域b.从文件fd中读取长度不超过的内存区域c.从文件fd中读取长度不超过域d.从文件fd中读取长度不超过区域n个字节的数据送入buffer指向的n-1个字节的数据送入buffer指向n个字符送入buffer指向的内存区n-1个字符送入buffer指向的

17、内存第二部分:简单程序(12项,共30分).下列程序main()(intx,y,z;x=y=2;z=3;y=z+-1;printf(dt”,x,y);y=+x-1;printf(dn”,x,y);y=z-1;printf(dt”,z,y);y=-z-1;printf(dn”,z,y);运行后输出的数据为??。22. a.3142b.3133c.2232d.21322413242233211312下列程序main()(inti,j;char*a,c;a=”computer”;printf(“S,a);for(i=0,j=7;ij;i+,j-)c=ai;*(a+i)=*(a+j);aj=c;pri

18、ntf(“n”,a);c=aj-1,i=2+j;printf(a%d=%(n”,i,c);运行后输出的数据为.computer-puter-retupmoca3=ua5=puter-puter-retupmoca4=pa2=t下列程序intsum(intn)intp=1,s=0,i;for(i=1;i=n;i+)s+=(p*=i);returns;main()printf(sum(5)=%nT,sum(5);运行后输出的数据为sum(5)=151b.sum(5)=152c.sum(5)=153dsum(5)=155下列程序main()staticinta=5,6,7,3,2,9;ints1,s

19、2,i,*ptr;s1=s2=0;ptr=a0;for(i=0;i5;i+2=2)s1+=*(ptr+i);s2+=*(ptr+i+1);printf(s1=%d,s2=%dn”,s1,s2);运行后输出的数据为s1=18,s2=14b.s1=14,s2=32c.s1=14,s2=18d.s1=15,s2=19下列程序intc=1;main()(staticinta=5;intb=6;printf(“a=%db=%dc=%dn”,a,b,c);func();printf(“a=%d,b=%d,c=%dn”,a,b,c);func();func()(staticinta=4;intb=10;a+

20、=2;c+=10;b+=c;printf(a=%d,b=%d,c=%dn”,a,b,c);运行后输出的数据为.a=5b=6c=1b.a=5b=6c=1a=6b=21c=11a=7b=17c=11a=5b=6c=11a=5b=6c=11a=8b=31c=21a=9b=17c=21c.a=5b=6c=1d.a=5b=6c=1a=6b=21c=11a=7b=17c=11a=6b=21c=11a=7b=17c=11a=8b=31c=21a=9b=38c=21已知structstudent(char*name;intstudent_n;chargrade;structstudenttemp,*p=tem

21、p;=”chou”;则下面不正确的是。表达式值ptnamechou(*p)tname+2h*ptname+2e*(ptname+2)o下列程序#definemax10main()(inti,sum,a=(1,2,3,4,5,6,7,8,9,10;sum=1;for(i=0;imax;i+)sum-=ai;printf(“sum=%d,sum);程序运行结果是:sum=55b.sum=-54c.sum=-55d.sum=54下列程序voidinv(int*x,intn)(int*p,t,*i,*j,m=(n-1)/2;i=x;j=x+n-1;p=x+m;for(;ip;i+,j

22、-)(t=*i;i-j;*j=t;return;main()(staticinti,a10=(3,7,9,11,0,6,7,5,4,2;inv(a,10);for(i=0;i10;i+)printf(d,”,ai);程序运行结果:0,2,3,4,5,6,7,7,9,11b.11,9,7,7,6,5,4,3,2,0c.3,7,9,11,0,6,7,5,4,2d.2,4,5,7,6,0,11,9,7,3下列程序main()(inta10,b10,*pa,*pb,i;pa=a;pb=b;for(i=0;i3;i+,pa+,pb+)(*pa=i;*pb=2*i;printf(“dn”,*pa,*pb)

23、;printf(n);pa=a0;pb=b0;for(i=0;i3;i+)*pa=*pa+i;*pb=*pb*i;printf(dn”,*pa+,*pb+);运行后输出的数据为。【篇三:C语言习题集及答案】txt第一单元程序设计和C语言1第二单元顺序程序设计3第三单元分支程序设计7第四单元循环程序设计14第五单元数组23第六单元函数35第七单元指针44第八单元结构体和共用体64第九单元文件81附加a. 题.86模拟试卷106模拟试卷112模拟试卷118第一单元程序设计和C语言一、选择题1.c语言的基本构成单位是:a.函数函数和过程超文本过程子程序3. 一个c语言程序总是从开始执行。a.主过程b

24、.主函数c.子程序d.主程序3.c语言的程序一行写不下时,可以。a.用逗号换行用分号换行在任意一空格处换行用回车符换行以下叙述不正确的是:。a. 在c程序中,语句之间必须要用分号;分隔若a是实型变量,c程序中a=10是正确的,因为实型变量中允许存放整型数c.在c程序中,无论是整数还是实数都能正确无误地表示d.在c程序中,是只能用于整数运算的运算符5.以下不正确的c语言标识符是。a. abcb.abcc.a_bcd.ab.c6.下列字符串是标识符的是:。a._hj9_studentlongline17.以下说法中正确的是:。c语言程序总是从第一个定义的函数开始执行在c语言程序中,要调用的函数必须

25、放在main()函数中定义c.c语言程序总是从main()函数开始执行c语言程序中的main()函数必须放在程序的开始部分8.不合法的常量是:。a.?2?b.a. ?3?b. ?483?9.已知各变量的类型说明如下,则以下不符合c语言语法的表达式是:。a. intk,a,b;unsignedlongw=5;doublex=1.422;x%(-3)10.w+=-2k=(a=2,b=3,a+b)a+=a=+(b=4)*(a=3)在c语言命,字符型数据在内存中以形式存放。原码b.bcd码c.反码d.ascii码11.若有定义:inta=7;floatx=2.5;y=4.7;2.7500003.500

26、0000.000000则表达式x+a%3*(int)(x+y)%2/4的值是:。a.2.50000012.设有说明:charw;intx;floaty;doublez;charintdouble则表达式w*x+z-y值的数据类型为:。a.float13.14.以下是不正确的转义字符。0810若x为int型变量,则执行以下语句后,x的值为。x=6;x+=x-=x*x;-6060-24字符串的长度是。a.3615.二、填空题a.11b.7c.5d.31.一个函数由两部分组成,它们是和。2.一个c源程序至少包含一个,即。3.设inta=12;则表达式a/=a+a的值是。表达式x=(a=3,6*a)和

27、表达式x=a=3,6*a分别是表达式和表达式,和。3. 在c语言中,实数有两种表7K形式,即和。6.在c语言中,运算符的优先级最小的是运算符。两个表达式执行完的结果分别是和,x值分别是第二单元顺序程序设计选择题1.若m为float型变量,则执行以下语句后的输出为。m=1234.123;printf(%-8.3fn,m);printf(%10.3fn,m);1234.123b.1234.123c.1234.123d.-1234.1231234.1231234.1231234.123001234.1232.若x,y,z均为int型变量,则执行以下语句后的输出为。x=(y=(z=10)+5)-5;printf(x=%d,y=%d,z=%dn,x,y,z);y=(z=x=0,x+10);printf(x=%d,y=%d,z=%dn,x,y,z);x=10,y=10,z=10x=0,y=10,z=10d.x=10,y=10,z

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论