程序选择题111道含答案.docx
《程序选择题111道含答案.docx》由会员分享,可在线阅读,更多相关《程序选择题111道含答案.docx(162页珍藏版)》请在冰豆网上搜索。
程序选择题111道含答案
石家庄学院2020-2021学年一学期
课程考试试卷答案(A卷)
课程名称:
C语言考试时间:
120分钟年级:
xxx级
专业:
xxx
题目部分,(卷面共有506题,506分,各大题标有题量和总分)
一、单项选择题(506小题,共506分)
1、(函数易)以下程序的输出结果是
func(intx,inty)
{intz;
z=x+y;
returnz;
}
main()
{inta=10,b=20,c=30,s;
s=func((a--,b++,a+b),c--);
printf(“%d\n”,s);
}
A、30 B、40 C、60 D、50
答案:
C
2、(函数易)凡是函数中未指定存储类型的局部变量,其隐含的存储类别为
A、自动(auto)B、静态(static)
C、外部(extern)D、寄存器(register)
答案:
A
3、(函数易)在下列的函数调用中,不正确的是
A、max(a,b); B、max(3,a+b);
C、max(3,5); D、intmax(a,b);
答案:
D
4、(函数易)以下程序的输出结果是
longfib(intn)
{if(n>2)return(fib(n-1)+fib(n-2));
elsereturn
(2);
}
main()
{printf(“%ld\n”,fib(3));}
A、2 B、4 C、6 D、8
答案:
B
5、(函数易)C语言允许函数值类型缺省定义,此时该函数值隐含的类型是
A、float型
B、int型
C、long型
D、double型
答案:
B
6、(函数易)以下正确的函数形式是
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;}
答案:
D
7、(函数易)以下程序的正确运行结果是
#include
voidnum()
{
externintx,y;
inta=15,b=10;
x=a-b;
y=a+b;
}
intx,y;
main()
{
inta=7,b=5;
x=a+b;
y=a-b;
num();
printf(“%d,%d\n”,x,y);
}
A、12,2B、不确定C、5,25D、1,12
答案:
C
8、(函数易)以下程序的输出结果是
power(intx,intn)
{intp;
if(n>0)p=power(x,n-1)*x;
elsep=1;
return(p);
}
main()
{intx=2,n=3;
printf(“%d\n”,power(x,n));
}
A、5 B、6 C、8 D、9
答案:
C
9、(函数易)若用数组名作为函数调用的实参,传递给形参的是
A、数组的首地址
B、数组第一个元素的值
C、数组中全部元素的值
D、数组元素的个数
答案:
A
10、(函数易)以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。
#include
#include
main()
{
floatx,y,z,sum;
scanf(“%f%f%f”,&x,&y,&z);
sum=f(【1】)+f(【2】);
printf(“sum=%f\n”,sum);
}
floatf(floata,floatb)
{
floatvalue;
value=a/b;
return(value);
}
【1】A、x-y,x+yB、x+y,x-yC、z+y,z-yD、z-y,z+y
【2】A、x-y,x+yB、x+y,x-yC、z+y,z-yD、z-y,z+y
答案:
BC
11、(函数易)以下程序的正确运行结果是
#include
main()
{
intk=4,m=1,p;
p=func(k,m);printf(“%d”,p);
p=func(k,m);printf(“%d\n”,p);
}
func(inta,intb)
{
staticintm=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
A、8,17B、8,16C、8,20D、8,8
答案:
A
12、(函数易)下列程序执行后的输出结果是
f(inta)
{intb=0;
staticc=3;
a=c++,b++;
return(a);
}
main()
{inta=2,i,k;
for(i=0;i<2;i++)
k=f(a++);
printf(“%d\n”,k);
}
A、3 B、0 C、5 D、4
答案:
D
13、(函数易)有如下程序:
intfunc(inta,intb)
{return(a+b);}
main()
{intx=2,y=5,z=8,r;
r=func(func(x,y),z);
printf(“%d\n”,r);
}
该程序的输出的结果是
A、12 B、13 C、14 D、15
答案:
D
14、(函数易)C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是
A、地址传递
B、单向值传递
C、由实参传给形参,再由形参传回给实参
D、由用户指定传递方式
答案:
B
15、(函数易)下列程序执行后输出的结果是
intd=1;
fun(intp)
{intd=5;
d+=p++;
printf(“%d”,D、;
}
main()
{inta=3;
fun(a);
d+=a++;
printf(“%d\n”,D、;
}
A、84 B、96 C、94 D、85
答案:
A
16、(函数易)以下程序的输出结果是
longfun(intn)
{longs;
if(n==1||n==2)s=2;
elses=n-fun(n-1);
returns;
}
main()
{printf("%ld\n",fun(3));}
A、1 B、2 C、3 D、4
答案:
A
17、(函数易)以下正确的说法是
A、定义函数时,形参的类型说明可以放在函数体内
B、return后边的值不能为表达式
C、如果函数值的类型与返回值类型不一致,以函数值类型为准
D、如果形参与实参的类型不一致,以实参类型为准
答案:
C
18、(函数易)以下正确的说法是
A、用户若需调用标准库函数,调用前必须重新定义
B、用户可以重新定义标准库函数,若如此,该函数将失去原有含义
C、系统根本不允许用户重新定义标准库函数
D、用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调
答案:
B
19、(函数易)以下不正确的说法是
C语言规定A、实参可以是常量、变量或表达式
B、形参可以是常量、变量或表达式
C、实参可以为任意类型
D、形参应与其对应的实参类型一致
答案:
B
20、(函数易)复合语句中定义的变量的作用范围是
A、整个源文件B、整个函数
C、整个程序D、所定义的复合语句
答案:
D
21、(函数易)以下只有在使用时才为该类型变量分配内存的存储类说明是
A、auto和static
B、auto和register
C、register和static
D、extern和register
答案:
B
22、(函数易)若使用一维数组名作函数实参,则以下正确的说法是
A、必须在主调函数中说明此数组的大小
B、实参数组类型与形参数组类型可以不匹配
C、在被调函数中,不需要考虑形参数组的大小
D、实参数组名与形参数组名必须一致
答案:
A
23、(函数易)在下列叙述中,错误的一条是
A、scanf函数可以用来输入任何类型的多个数据
B、数组名作函数参数时,也采用“值传递”方式
C、如果形参发生改变,不会改变主调函数的实参值
D、函数的实参与形参的类型应一致
答案:
B
24、(函数易)在下列叙述中,错误的一条是
A、主函数main中定义的变量在整个文件或程序中有效
B、不同函数中,可以使用相同名字的变量
C、函数中的形式参数是局部变量
D、在一个函数内部,可在复合语句中定义变量,这些变量只在本复合语句中有效
答案:
A
25、(函数易)一个函数的返回值由()确定。
A、return语句中的表达式B、调用函数的类型
C、系统默认的类型D、被调用函数的类型
答案:
D
26、(函数易)以下程序有语法性错误,有关错误原因的正确说法是
main()
{
intG=5,k;
voidprt_char();
……
k=prt_char(G);
……
}
A、语句voidprt_char();有错,它是函数调用语句,不能用void说明
B、变量名不能使用大写字母
C、函数说明和函数调用语句之间有矛盾
D、函数名不能使用下划线
答案:
C
27、(函数易)以下不正确的说法为
A、在不同函数中可以使用相同名字的变量
B、形式参数是局部变量
C、在函数内定义的变量只在本函数范围内有效
D、在函数内的复合语句中定义的变量在本函数范围内有效
答案:
D
28、(函数易)现有以下程序:
#include
inverse(charstr[])
{chart;
inti,j;
for(i=0,j=strlen(str);i{t=str[i];
str[i]=str[j-1];
str[j-1]=t;
}
}
main()
{charstr[100];
scanf(“%s”,str);
inverse(str);
printf(“%s\n”,str);
}
如果输入ananple,该程序的输出结果是
A、ananple B、elpnana C、an D、na
答案:
D
29、(函数易)在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是
A、externB、registerC、autoD、static
答案:
D
30、(函数易)有如下函数调用语句:
func(rec1,rec2+rec3,(rec4,rec5));
在该函数调用语句中,含有的实参个数是
A、3 B、4 C、5 D、有语法错
答案:
A
31、(函数易)关于函数参数,说法正确的是
A、实参与其对应的形参各自占用独立的内存单元
B、实参与其对应的形参共同占用一个内存单元
C、只有当实参和形参同名时才占用同一个内存单元
D、形参是虚拟的,不占用内存单元
答案:
A
32、(预处理命令易)以下程序的输出结果是
#include
#defineFUDGE(y)2.84+y
#definePR(A、printf(“%d”,(int)(A、)
#definePRINT1(A、PR(A、;putchar(‘\n’)
main()
{intx=2;
PRINT1(FUDGE(5)*x);
}
A、11 B、12 C、13 D、15
答案:
B
33、(预处理命令易)如果在用户的程序中要使用C库函数中的数学函数时,应在该源文件中使用的include命令是
A、#include B、#include
C、#include D、#include
答案:
B
34、(预处理命令易)设有以下宏定义:
#defineN3
#defineY(n)((N+1)*n)
则执行语句:
z=2*(N+Y(5+1));后,z的值为
A、出错 B、42 C、48 D、54
答案:
C
35、(预处理命令易)有如下程序:
#defineN2
#defineMN+1
#defineNUM2*M+1
main()
{inti;
for(i=1;i<=NUM;i++)printf(“%d\n”,i);
}
该程序中的for循环执行的次数是
A、5 B、6 C、7 D、8
答案:
B
36、(预处理命令易)以下for语句构成的循环执行了()次。
#defineN2
#defineMN+1
#defineNUM(M+1)*M/2
main()
{inti,n=0;
for(i=1;i<=NUM;i++)
{n++;
printf(“%d”,n);
}
printf(“\n”);
}
A、4 B、6 C、8 D、9
答案:
C
37、(预处理命令易)宏定义#definePI3.1415926的作用是:
指定用标识符PI来代替一个
A、单精度数 B、字符串 C、双精度数 D、整数
答案:
B
38、(预处理命令易)以下程序的输出结果是
#definef(x)x*x
main()
{inta=6,b=2,c;
c=f(A、/f(b);
printf("%d\n",C、;
}
A、9 B、6 C、36 D、18
答案:
C
39、(循环控制易)C语言中while和do-while循环的主要区别是
A、do-while的循环体至少无条件执行一次
B、while的循环控制条件比do-while的循环控制条件严格
C、do-while允许从外部转到循环体内
D、do-while的循环体不能是复合语句
答案:
A
40、(循环控制易)下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除。
请选择填空。
#include
main()
{
inti=0,j,k;
do{i++;k=316-13*i;}while(【1】);
j=k/11;
printf(“316=13*%d+11*%d”,i,j);
}
A、k/11B、k%11C、k/11==0D、k%11==0
答案:
B
41、(循环控制易)下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环。
请选择填空。
#include
main()
{
longintnum;
scanf(“%ld”,&num);
do{
if(【1】)printf(“%ld”,num);
scanf(“%ld”,&num);
while(2】);
}
【1】A、num%100/10==3B、num/100%10==3
C、num%10/10==3D、num/10%10==3
【2】A、n=n-2B、n=nC、n++D、n-=1
答案:
BC
42、(循环控制易)下面程序段
x=3;
do{
y=x--;
if(!
y){printf(“x”);continue;}
printf(“#”);
}while(1<=x<=2);
A、将输出##B、将输出##*
C、是死循环D、含有不合法的控制表达式
答案:
C
43、(循环控制易)下面程序的运行结果是
#include
main()
{inti,b,k=0;
for(i=1;i<=5;i++)
{b=i%2;
while(b-->=0)k++;
}
printf(“%d,%d”,k,b);
}
A、3,-1B、8,-1C、3,0D、8,-2
答案:
D
44、(循环控制易)对for(表达式1;;表达式3)可以理解为
A、for(表达式1;0;表达式3)
B、for(表达式1;1;表达式3)
C、for(表达式1;表达式1;表达式3)
D、for(表达式1;表达式3;表达式3)
答案:
B
45、(循环控制易)有以下程序段
intx=3;
do
{printf("%d",x-=2);}
while(!
(--x));
其输出结果是
A、1 B、30 C、1-2 D、死循环
答案:
C
46、(循环控制易)若有如下语句
intx=3;
do{printf("%d\n",x-=2);}while(!
(--x));
则上面程序段.
A、输出的是1B、输出的是1和-2C、输出的是3和0D、是死循环
答案:
B
47、(循环控制易)下面程序的运行结果是.
#include
voidmain()
{
intnum=0;
while(num<=2)
{
num++;
printf("%d\n",num);
}
}
A、1B、1C、1D、1
222
33
4
答案:
C
48、(循环控制易)下面程序段
x=3;
do{y=x--;
if(!
y){printf(“x”);continue;}
printf(“#”);
}while(1<=x<=2);
A、将输出##B、将输出##*
C、是死循环D、含有不合法的控制表达式
答案:
C
49、(循环控制易)以下正确的描述是
A、continue语句的作用是结束整个循环的执行
B、只能在循环体内和switch语句体内使用break语句
C、在循环体内使用break语句或continue语句的作用相同
D、从多层循环嵌套中退出时,只能使用goto语句
答案:
B
50、(循环控制易)设有程序段
t=0
while(printf(“*”))
{t++;
if(t<3)bread;
}
下面描述正确的是
A、其中循环控制表达式与0等价
B、其中循环控制表达式与‘0’等价
C、其中循环控制表达式是不合法的
D、以上说法都不对
答案:
B
51、(循环控制易)以下不是无限循环的语句为
A、for(y=0,x=1;x>++y;x=i++)i=x;
B、for(;;x++=i);
C、while
(1){x++;}
D、for(i=10;;i--)sum+=i;
答案:
A
52、(循环控制易)以下的for循环()
for(x=0,y=0;(y!
=123)&&(x<4);x++);
A、是无限循环 B、循环次数不定
C、执行4次 D、执行3次
答案:
C
53、(循环控制易)以下程序的输出结果是
main()
{inti,j,x=0;
for(i=0;i<2;i++)
{x++;
for(j=0;j<3;j++)
{if(j%2)continue;
x++;}
x++;}
printf(“x=%d\n”,x);}
A、x=4
B、x=8
C、x=6
D、x=12
答案:
B
54、(循环控制易)下面程序的运行结果是
#include
main()
{
inti,b,k=0;
for(i=1;i<=5;i++)
{
b=i%2;
while(b-->=0)k++;
}
printf(“%d,%d”,k,b);
}
A、3,-1B、8,-1C、3,0D、8,-2
答案:
D
55、(循环控制易)与下面程序段等价的是
for(n=100;n<=200;n++)
{if(n%3==0)continue;
printf(“%4d”,n);
}
A、for(n=100;(n%3)&&n<=200;n++)printf(“%4d”,n);
B、for(n=100;(n%3)︱︱n<=200;n++)printf(“%4d”,n);
C、for(n=100;n<=200;n++)if(n%3!
=0)printf(“%4d”,n);
D、for(n=100;n<=200;n++)
{if(n%3)printf(“%4d”,n);
elsecontinue;
break;
}
答案:
C
56、(循环控制易)下面程序的运行结果是
#include
main()
{intx,i;
for(i=1;i<=100;i++)
{x=1;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf(“%d”,x)
}
}
A、3981B、4284C、2668D、2870
答案:
D
57、(循环控制易)以下程序的输出结果是
#include
main()
{
inti;
for(i=1;i<=5;i++)
{
if(i%2)
printf("*");
else
continue;
printf("#");
}
printf("$\n");
}
A、*#*#*#$B、#*#*#*$C、*#*#$D、#*#*$
答案:
A
58、(循环控制易)等比数列的第一项a=1,公比q=2,下面程序的功能是求满足前n项和小于100的最大n,请选择题空。
#include
main()
{inta,q,n,sum;
a=1;q=2;n=sum=0;
do{【1】;++n;a*=q;
}while(sum<100);
【2】;
printf(“%d\n”,n);}
【1】A、sum++B、sum+=aC、sum*=aD、a+=sum
【2】A、n=n-2B、n=nC、n++D、n-=1
答案:
B|D
59、(循环控制易)下面程序的功能是将从键盘输入的一对数,由小到大排序输出。
当输入一对相等数时结束循环,请选择填空。
#include