您好,欢迎访问三七文档
1、以下正确的说法是(B)(A)用户若需要调用标准库函数,调用前必须重新定义(B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义(C)系统根本不允许用户重新定义标准库函数(D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调2、以下正确的函数声明形式是(A)(A)doublefun(intx,inty)(B)doublefun(intx;inty)(C)doublefun(intx,inty);(D)doublefun(intx,y);3、以下正确的函数形式是(D)(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;}4、以下正确的说法是(A)在C语言中(A)实参和与其对应的形参各占用独立的存储单元(B)实参和与其对应的形参共占用一个存储单元(C)只有当实参和与其对应的形参同名时才共占用存储单元(D)形参是虚拟的,不占用存储单元5、若调用一个函数,且此函数中没有return语句,则正确的说法是(A)该函数(A)没有返回值(B)返回若干个系统默认值(C)能返回一个用户所希望的函数值(D)返回一个不确定的值6、以下不正确的说法是(B)C语言规定(A)实参可以是常量、变量和表达式(B)形参可以是常量、变量和表达式(C)实参可以为任意类型(D)形参应与其对应的实参类型一致7、以下正确的说法是(C)(A)定义函数时,形参的类型说明可以放在函数体内(B)return后边的值不能为表达式(C)如果函数值的类型与返回值类型不一致,以函数值类型为准(D)如果形参与实参的类型不一致,以实参类型为准8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是(B)(A)地址传递(B)单向值传递(C)由实参传给形参,再由形参传回给实参(D)由用户指定传递方式9、以下程序有语法性错误,有关错误原因的正确说法是(C)voidmain(){intG=5,k;voidprt_char();......k=prt_char(G);......}(A)语句voidprt_char();有错,它是函数调用语句,不能用void说明(B)变量名不能使用大写字母(C)函数说明和函数调用之间有矛盾(D)函数名不能使用下划线10、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是(B)(A)float型(B)int型(C)long型(D)double型11、C语言规定,函数返回值的类型是由(D)(A)return语句中的表达式类型所决定(B)调用该函数时的主调函数类型所决定(C)调用该函数时系统临时决定(D)在定义该函数时所指定的函数类型所决定12、下面函数调用语句含有实参的个数为(B)func((exp1,exp2),(exp3,exp4,exp5));(A)1(B)2(C)4(D)513、以下错误的描述是(D)函数调用可以(A)出现在执行语句中(B)出现在一个表达式中(C)做为一个函数的实参(D)做为一个函数的形参14、以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。①(B)②(C)#includestdio.h#includemath.hfloatf(float,float);voidmain(){floatx,y,z,sum;scanf(%f%f%f,&x,&y,&z);sum=f(①)+f(②);printf(sum=%f\n,sum);}floatf(floata,floatb){floatvalue;value=a/b;return(value);}①(A)x-y,x+y(B)x+y,x-y(C)z+y,z-y(D)z-y,z+y②(A)x-y,x+y(B)x+y,x-y(C)z+y,z-y(D)z-y,z+y15、以下正确的描述是(B)在C语言中(A)函数的定义可以嵌套,但函数的调用不可以嵌套(B)函数的定义不可以嵌套,但函数的调用可以嵌套(C)函数的定义和函数的调用均不可以嵌套(D)函数的定义和函数的调用均可以嵌套16、以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。请选择填空。①(B)②(A)sub(intk,intn){inta1,a2;a2=①;a1=k-②;if((K%3==0&&a2==5)||(k%3==0&&a1==5)){printf(%d,k);n++;returnn;}elsereturn-1;}voidmain(){intn=0,k,m;for(k=10;k=99;k++){m=sub(k,n);if(m!=-1)n=m;}printf(\nn=%d,n);}①(A)k*10(B)k%10(C)k/10(D)k*10%10②(A)a2*10(B)a2(C)a2/10(D)a2%10二、填空题17、C语言规定,可执行程序的开始执行点是___main函数_____。18、在C语言中,一个函数一般由两个部分组成,他们是__函数名______和___函数体_____。19、若输入的值是-125,以下程序的运行结果是_-125_=5*5*5______。#includestdio.h#includemath.hvoidfun(intn){intk,r;for(k=2;k=sqrt(n);k++){r=n%k;while(r==0){printf(%d,k);n=n/k;if(n1)printf(*);r=n%k;}}if(n!=1)printf(%d\n,n);}voidmain(){intn;scanf(%d,&n);printf(%d=,n);if(n0)printf(-);n=fabs(n);fun(n);}20、下面add函数的功能是求两个参数的和,并将和值返回调用函数。函数中错误的部分是__voidadd(floata,floatb)______;改正后为___floatadd(floata,floatb)_____。voidadd(floata,floatb){floatc;c=a+b;returnc;}21、以下程序的运行结果是__i=7,j=6,x=7i=2,j=7,x=5______。voidfun(inti,intj){intx=7;pirntf(i=%d;j=%d;x=%d\n,i,j,x);}voidmain(){inti=2,x=5,j=7;fun(j,6);printf(i=%d;j=%d;x=%d\n,i,j,x);}22、以下程序的运行结果是___111_____。voidincrement(){intx=0;x+=1;printf(%d,x);}voidmain(){increment();increment();increment();}23、以下程序的运行结果是___2_____。max(intx,inty){intz;z=(xy)?x:y;return(z);}voidmain(){inta=1,b=2,c;c=max(a,b);printf(maxis%d\n,c);}
本文标题:c语言试题及答案
链接地址:https://www.777doc.com/doc-7229396 .html