实用文档文案大全C语言试题库一、单项选择第一章C语言概述(1)一个C程序的执行是从A、本程序的MAIN函数开始,到MAIN函数结束。B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。C、本程序的MAIN函数开始,到本程序的最后一个函数结束。D、本程序文件的第一个函数开始,到本程序的MAIN函数结束。(2)以下叙述正确的是A、在C程序中,MAIN函数必须位于程序的最前面。B、C程序的每行中只能写一条语句。C、C语言本身没有输入输出语句。D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误。(3)C语言规定,在一个源程序中,MAIN主函数的位置是在:A、必须在最前面。B、必须在系统调用的库函数的后面C、可以在任意位置。D、必须在最后面(4)一个C程序是由:A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成(5)以下叙述不正确的是:A、一个C源程序可由一个或多个函数组成B、一个C源程序必须包含一个MAIN函数C、C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面第二章数据类型、运算符与表达式(1)若x,i,j,k都是int型变量,则计算下面表达式后,x的值为x=(i=4,j=16,k=32)A、4实用文档文案大全B、16C、32D、52(2)下列四组选项中,均不是C语言键字的选项是A、define,IF,typeB、getc,char,printfC、include,scanf,caseE、if,struct,type(3)下面四个选项中,均是不合法的用户标识符的选项是A、A,P_0,doB、float,1a0,_AC、b-a,goto,intD、_123,temp,INT(4)若有代数式3ae/bc,则正确的C语言表达式是A、a/b/c*e*3B、3*a*e/bcC、3*a*e/b*cD、a*e/c/b*3(5)已知各变量的类型说明如下:intk,a,b;unsingedlongw=5;doublex=1.42;则以下不符合C语言语法的表达式是A、x%(-3)B、w+=-2;C、k=(a=2,b=3,a+b)D、a+=a-=(b=4)*(a=3)第三章简单C程序设计(1)putchar函数可以向终端输出一个A、整型变量表达式值B、实型变量值C、字符串D、字符或字符型变量值(2)若x,y均定义为int型,z定义为double型,以下合法的scanf函数调用语句是A、scanf(“%d%lx,%le”,&x,&y,&z);B、scanf(“%2d*%d%lf”,&x,&y,&z);C、scanf(“%x%*d%o”,&x,&y,&z);D、scanf(“%x%o%6.2f”,&x,&y,&z);实用文档文案大全(3)当输入数据的形式为:25,13,10回车时,以下程序的输出结果为main(){intx,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%d\n”,x+y+z);}A、x+y+z=48B、x+y+z=35C、x+z=35D、不确定值(4)以下能正确的定义整型变量a,b和c,并对它们赋初值为5的语句是A、inta=b=c=5;B、inta,b,c=5;C、a=5,b=5,c=5;D、a=b=c=5;(5)若有以下定义,则正确的赋值语句是inta,b;floatx;A、a=1,b=2;B、b++;C、a=b=5;D、b=int(x);第四章选择结构程序设计(1)能正确表示“当x的值在[1,10]和[200,210]的范围为真,否则为假”的表达式是A、(x=1)&&(x=10)&&(x.=200)&&(x=210)B、(x=1)││(x=10)││(x.=200)││(x=210)C、(x=1)&&(x=10)││(x.=200)&&(x=210)D、(x=1)││(x=10)&&(x.=200)││(x=210)(2)以下程序的运行结果是#include“stdio.h”main(){inta,b,d=241;a=d/100%9;b=(-1)&&(-1);printf(“%d,%d”,a,b);}A、6,1B、2,1C、6,0实用文档文案大全D、2,0(3)请阅读以下程序:main(){inta=5,b=0,c=0;if(a+b+c)printf(“***\n”);elseprintf(“$$$\n”);}以上程序。A)有语法错误不能通过编译B)可以通过编译但不能直接通过连接C)输出***D)输出$$$(4)以下程序的运行结果是。main(){intm=5;if(m++5)printf(“%d\n”,m);elseprintf(“%d\n”,m——);}A)4B)5C)6D)7(5)为了避免在嵌套的条件语句中if-else中产生二义性,c语言规定:else子句总是与相配对。A)缩排位置相同的ifB)其之前最近的ifC)其之后最近的ifD)同一行上的if第五章循环控制(1)设有程序段intk=10while(k=0)k=k-1则下面描叙正确的是。A)while(k=0)k=k-1;B)循环是无限循环C)循环体语句一次也不执行D)循环体语句执行一次实用文档文案大全(2)下面程序段的运行结果是。intn=0;while(n++=2);printf(“%d”,n);A)2B)3C)4D)有语法错(3)C语言中while和do-while循环的主要区别是。A)do-while的循环体至少无条件执行一次B)while的循环控制条件比do-while的循环控制条件严格C)do-while允许从外部转到循环体内D)do-while允许从外部转到循环体内(4)以下能正确计算1*2*3*…*10的程序段是。A)do{i=1;s=1;s=s*i;i++;}while(I=10);B)do{i=1;s=0;s=s*i;i++;}while(I=10);C)i=1;s=1;do{s=s*i;i++;}while(I=10);D)i=1;s=0;do{s=s*i;i++;}while(I=10);第六章数组(1)在c语言中,引用数组元素时,其数组下标的数据类型允许是____。A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式(2)以下能对二维数组a进行正确初始化的语句是____。A)inta[2][]={{1,0,1},{5,2,3,}};B)inta[][3]={{1,2,3},{4,5,6}};实用文档文案大全C)inta[2][4]={1,2,3,},{4,5},{6}};D)inta[][3]={{1,0,1},{},{1,1}};)(3)若有说明:inta[3][4]={0};则下面正确的叙述是____。A)只有元素a[0][0]可得到初值0B)此说明语句不正确C)数组a中各元素都可得到初值,但其值不一定为0D)数组a中每个元素均可得到初值0(4)下面程序___(每行程序前面的数字表示行号)。1main()2{3floata[10]={0};4inti5for(i=0;i3;i++)scanf(“%d”,&a[i];6for(i=1;i10;i++)a[0]=a[0]+a{i};7printf(“%f\n”,a[0]);8}A)没有错误B)第3行有错误C)第5行有错误D)第7行有错误(5)若二维数组a有m列,则计算机一元素a[i][j]在数组中位置的公式为____。(假设a[0][0]位于数组的第一个位置上。)A)i*m+jB)j*m+iC)i*m+j-1D)i*m+j+1第七章函数(1)以下正确的函数定义形式是。A)doublefun(intx,inty)C)doublefun(intx;inty)D)doublefun(intx,inty)E)doublefun(intx,y);(2)以下正确的函数形式是。A)doublefun(intx,inty){z=x+y;returnz;}B)fun(intx,y){intz;实用文档文案大全returnz;}C)fun(x,y){intx,y;doublez;z=x+y;returnz;}D)doublefun(intx,inty){doublez;z=x+y;returnz;}(3)C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是A)地址传递B)单向值传递C)由实参传给形参,再由形参传回给实参D)传递方式(4)C语言允许函数值型缺省定义,此时该函数值隐含的类型是。A)float型B)int型C)long型D)double型(5)下面函数调用语句含有实参的个数为。func((exp1,exp2),(exp3,exp4,exp5));A)1B)2C)4D)5第八章编译预处理命令(1)请读程序:#defineADD(x)x+xmain(){intm=1,n=2,k=3;intsum=ADD(m+n)*k;printf(“sum=%d”,sum);}上面程序的运行结果是。A)sum=9B)sum=10实用文档文案大全C)sum=12D)sum=18(2)以下程序的运行结果是。#defineMIN(x,y)(x)(y)?(x)+(y)main(){intI=10,j=15,k;k=10*MIN(I,j);printf(“%d\n”,k);}A)10B)15C)100D)150(3)在宏定义#definePI3.14159中,用宏名PI代替一个。A)常量B)单精度数C)双精度数D)字符串(4)若有宏定义如下:#defineX5#defineYX+1#defineZY*x/2则执行以下printf语句后,输出结果是。inta;a=Y;printf(“%d\n”,Z);printf(“%d\n”,--a);A)7B)12C)12D)76655(5)若有以下宏定义:#defineN2#defineY(n)((N+1)*n)则执行语句z=2*(N+Y(5));后的结果是。A)语句有错误B)z=34C)z=70实用文档文案大全D)z无定值第九章指针(1)以下程有错误,错误原因是main(){int*p,I;char*q,ch;p=&I;q=&ch;*p=40;*p=*q;……..}A)p和q的类型不一致,不能执行*P=*Q;语句B)P中存放的是地址值,因此不能执行*P=40;语句C)Q没有指向具体的存储单元,所以*Q没有实际意义D)Q虽然指向了具体的存储单元,但该单元中没有确定值,所以不能执行*P=*Q;语句(2)已有定义intk=2;int*ptr1,*ptr2;且ptr1和ptr2均已指向变量K,下面不能正确执行的赋值语句是.A)k=*ptr1+*ptr2;B)ptr2=K;C)ptr1=ptr2;D)k=*ptr1*(*ptr2);(3)变量的指针,其含义是指该变量的________.A)值B)地址C)名D)一个标志(4)若有语句int*point,a=4;和ponit=&a;下面均代表地址的一组选项是_________.A)a,point,*&aB)&*a,&a,*pointC)*&point,*point,&aD)&a,&*point,point(5)下面能正确进行字符串赋值操作的是________.A)chars[5]={“ABCDE”};B)chars[5]={‘A’,’B’,’C’,’D’,’E’};C)char*S;s=”ABCDE”;D)char*S;scanf(“%s”,s);(6)若有以下定义,则对A数组元素的正确引用是_______.A)*&a[5]B)*a+2C)*(P+5)D)*(a+2)(7)若有以下定义,则对a数组元素地址的正确引用是_______实用文档文案大全A)p+5B)*a+1C)&a+1D)&a[0](8)若有定义:inta[2][3];则对a数组的第I行第J列(假设I,J已正确说明并赋值)元素值的正确引用为_______.A)*(*(a+I)+J)B)(a+I)