二级C语言171.docx
《二级C语言171.docx》由会员分享,可在线阅读,更多相关《二级C语言171.docx(19页珍藏版)》请在冰豆网上搜索。
二级C语言171
二级C语言-171
(总分:
100.00,做题时间:
90分钟)
一、选择题(总题数:
50,分数:
100.00)
1.要求tan(60°)的值,调用的库函数格式为______。
(分数:
2.00)
A.tan(60)
B.tan(pi/3) √
C.tan(60.0)
D.tan((double)60)
解析:
2.C语言规定,函数返回值的类型是______。
(分数:
2.00)
A.由调用该函数时的主调函数类型所决定
B.由return语句中的表达式类型所决定
C.由调用该函数时系统临时决定
D.由定义该函数时所指定的数值类型决定 √
解析:
3.以下叙述中,错误的是______。
(分数:
2.00)
A.在同一C程序文件中,不同函数中可以使用名字相同的变量
B.在main()函数体内定义的变量是全局变量 √
C.形参是局部变量,函数调用完成即失去意义
D.若同一文件中全局和局部变量同名,则全局变量在局部变量作用范围内不起作用
解析:
4.以下函数值的类型是______。
fun(doublex)
{foaty;
y=3*x-4;
returny;
)
(分数:
2.00)
A.int √
B.不确定
C.void
D.float
解析:
5.有以下程序:
intf1(doublea)
{returna*a;}
intf2(intx,inty)
{doublea,b;
a=f1(x);
b=f1(y);
returna+b;
}
main()
{doublew;
w=f2(2.1,4.0);
┋
)
变量w的值是______。
(分数:
2.00)
A.20.21
B.20
C.20.0 √
D.0.0
解析:
6.已知下列函数定义:
fun(int*b,intm,intn,intdata)
{intk;
for(k=0;k<m*n;k++)
{*b=data;
b++;}
}
则调用此函数的正确写法是(假设变量a的说明为inta[50])______。
(分数:
2.00)
A.fun(*a,4,5,1);
B.fun(&a,4,5,1);
C.fun((int*)a,4,5,1)
D.fun(a,4,5,1); √
解析:
7.以下程序中函数reverse()的功能是将a所指数组中的内容进行逆置。
#include<stdio.h>
voidreverse(inta[],intn)
{inti,t;
for(i=0;i<n/2;i++)
{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;
reverse(b,10);
for(i=0;i<3;i++)s+=b[i];
printf("%d/n",s);
}
程序运行后的输出结果是______。
(分数:
2.00)
A.27 √
B.6
C.25
D.30
解析:
8.下述程序的输出结果是______。
#include<stdio.h>
intfun(intx)
{intp;
if(x=0||x=1)
return3;
else
p=x-fun(x-2);
returnp;
)
voidmain()
{pfintf("/n%d",fum(5));
}
(分数:
2.00)
A.5 √
B.3
C.7
D.1
解析:
9.以下程序的输出结果是______。
point(char*pt);
main()
{charb[4]={"a","c","s","f"),*pt=b;
pt=point(pt);
printf("%c/n",*pt);
}
point(char*p)
{p+=3;
returnp;
}
(分数:
2.00)
A..s
B..c
C..f √
D..a
解析:
10.调用函数时,当实参和形参都是简单变量时,它们之间数据传递的过程是______。
(分数:
2.00)
A.实参将其值传递给形参,调用结束时形参再将其值回传给实参
B.实参将其地址传递给形参,调用结束时形参再将其地址回传给实参
C.实参将其地址传递给形参,并释放原先占用的存储单元
D.实参将其值传递给形参,调用结束时形参并不将其值回传给实参 √
解析:
11.下面说法不正确的是______。
(分数:
2.00)
A.调用函数时,实参可以是表达式
B.调用函数时,实参与形参可以共用内存单元 √
C.调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等
D.调用函数时,实参与形参的类型必须一致
解析:
12.下面函数调用语句含有实参的个数为______。
func((exp1,exp2),(exp3,exp4,exp5));
(分数:
2.00)
A.1
B.2 √
C.3
D.5
解析:
13.在C语言中,函数调用时______。
(分数:
2.00)
A.实参和形参各占独立的存储单元 √
B.实参和形参共用存储单元
C.由系统自动确定实参和形参是否共用存储单元
D.由用户指定实参和形参是否共用存储单元
解析:
14.C语言规定,程序中各函数之间______。
(分数:
2.00)
A.既允许直接递归调用也允许间接递归调用 √
B.既不允许直接递归调用也不允许间接递归调用
C.允许直接递归调用不允许间接递归调用
D.不允许直接递归调用允许间接递归调用
解析:
15.下述程序的输出结果是______。
#include<stdio.h>
intfun(intx)
{inta;
if(x=0||x==1)
return3;
else
a=x-fun(x-2);
returna;
}
voidmain()
{printf("%d",fun(7));
}
(分数:
2.00)
A.2 √
B.8
C.9
D.5
解析:
16.以下叙述错误的是______。
(分数:
2.00)
A.变量的作用域取决于变量定义语句的位置
B.全局变量可以在函数以外的任何部位进行定义
C.局部变量的作用域可用于其他函数的调用
D.一个变量说明为static存储类型是为了限制其他编译单元的引用 √
解析:
17.以下程序的输出结果是______。
#include<stdio.h>
intm=13;
intfun(intx,inty)
{intm=2;
return(x*y-m);
}
main()
{inta=7,b=6;
printf("%d",fun(a,b)/m);
}
(分数:
2.00)
A.1
B.3 √
C.7
D.10
解析:
18.以下全局变量声明中正确的是______。
(分数:
2.00)
A.autointi=1;
B.floata=1,b=0.5,c=a+b;
C.charfor=1;
D.staticcharch; √
解析:
19.已知函数f的定义如下:
voidf(void)
{printf("That"sgreat!
");}
则调用f函数的正确形式是______。
(分数:
2.00)
A..f;
B.f(); √
C.f(void);
D.f
(1);
解析:
20.以下程序在编译时在第三行报错“Redeclarationof"a"infunctiond”,如果决定修改该行声明中出现的局部变量a的名字,则下列选项中不能用来替换变量名a的是______。
[程序]
intb;
voidd(inta)
{intf;doublea=1;
printf("%d",a);
}
main()
{inte=1;d(e);}
(分数:
2.00)
A..f √
B..e
C..d
D..b
解析:
21.以下函数定义中正确的是______。
(分数:
2.00)
A.intfun(inta,b){}
B.intfun(inta[][]){}
C.intfun(void){} √
D.intfun(staticinta,intb){}
解析:
22.已知有函数f的定义如下:
intf(inta,intb)
{if(a<b);elseretum(b,a);}
在main函数中若调用函数f(2,3),得到的返回值是______。
(分数:
2.00)
A.2
B.3 √
C.2和3
D.3和2
解析:
23.以下关于函数定义的叙述中正确的是______。
(分数:
2.00)
A.构成C语言源程序的基本单位之一是函数定义 √
B.所有被调用的函数必须在调用之前定义
C.main函数定义必须放在其他函数定义之前
D.main函数定义的函数体中必须至少有一条语句或声明
解析:
24.在main函数体内部和外部均允许出现的实体是______。
(分数:
2.00)
A.预处理命令 √
B.语句
C.另一函数的定义
D.函数形式参数声明
解析:
25.已知函数fun的定义如下:
voidfun(intx[],inty)
{intk;
for(k=0;k<y;k++)
x[k]+=y;
}
若main函数中有声明“inta[10]={10};”及调用fun函数的语句,则正确的fun函数调用形式是______。
(分数:
2.00)
A.fun(a[],a[0]);
B.fun(a[0],a[0]);
C.fun(&a[0],a[0]); √
D.fun(a[0],&a[0]);
解析:
26.设有下列程序段:
staticcharb=2;
voidY()
{staticfloatd=4;...)
inta=1;
voidX()
{intc=3;...}
关于程序段中各变量的属性,以下叙述中错误的是______。
(分数:
2.00)
A.a是全局变量,函数X可以访问,函数Y不能访问
B.b是全局变量,函数X和函数Y都可以访问
C.c是动态变量,函数X可访问,函数Y不可访问
D.d是静态变量,函数X和函数Y都可以访问 √
解析:
27.若已定义一个有返回值的函数,则以下关于调用该函数的叙述中错误的是______。
(分数:
2.00)
A.函数调用可以作为独立的语句存在
B.函数调用可以出现在表达式中
C.函数调用可以作为一个函数实参
D.函数调用可以作为一个函数形参 √
解析:
28.对应main函数中的fun函数调用语句,以下给出的4个fun函数首部中错误的是______。
main()
{inta[50],n;fun(n,&a[9]);}
(分数:
2.00)
A.voidfun(intm,intx[])
B.voidfun(ints,inth[41])
C.voidfun(intp,int*s)
D.voidfun(intn,inta) √
解析:
29.以下关于C语言源程序的叙述中错误的是______。
(分数:
2.00)
A.一个C源程序由若干个函数定义组成,其中必须有且仅有一个名为main的函数定义
B.函数定义由函数头部和函数体两部分组成
C.在一个函数定义的函数体中允许定义另一个函数 √
D.在一个函数定义的函数体中允许调用另一个函数或调用函数自身
解析:
30.若有声明“longfun(int*x,intn,long*s);inta[4]={1,2,3,4};longb,c;”,则以下函数调用形式中正确的是______。
(分数:
2.00)
A.e=fun(a,4,b);
B.c=fun(a[],4,&b);
C.c=fun(a[4],4,b);
D.e=fun(a,4,&b); √
解析:
31.在C语言程序中,以下说法正确的是______。
(分数:
2.00)
A.函数的定义和函数的调用均不可以嵌套
B.函数的定义不可嵌套,但函数的调用可以嵌套 √
C.函数的定义可以嵌套,但函数的调用不可以嵌套
D.函数的定义和函数的调用均可以嵌套
解析:
32.设x和y都是int类型,且x=1,y=2,则printf("%d%d",x,y,(x,y))的输出结果是______。
(分数:
2.00)
A.12 √
B.122
C.1,2
D.输出值不确定
解析:
33.若定义函数int*func(),则函数func的返回值为______。
(分数:
2.00)
A.一个实数
B.一个指向整型变量的指针 √
C.一个指向整型函数的指针
D.一个整型函数的人口地址
解析:
34.有以下函数定义:
intfun(doublea,doubleb)
{returna*b;}
若以下选项中所用变量都已正确定义并赋值,错误的函数调用是______。
(分数:
2.00)
A.if(fun(x,y)){...}
B.z=fun(fun(x,y),fun(x,y));
C.z=fun(fun(x,y)x,y); √
D.fun(x,y);
解析:
35.下面程序的输出结果是______。
#include<stdio.h>
main()
{chara[]={"a","b","c","d","f","g"},*p;
p=a;
printf("%c/n",*p+4);
}
(分数:
2.00)
A..a
B..b
C..e √
D..f
解析:
36.以下叙述中不正确的是______。
(分数:
2.00)
A.在不同的函数中可以使用相同的名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内的复合语句中定义的变量在本函数范围内有效 √
解析:
37.下面说法正确的是______。
(分数:
2.00)
A.调用函数时,实参不可以是表达式,必须是数值
B.调用函数时,实参与形参是共用内存单元的
C.调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等 √
D.调用函数时,实参与形参的类型可不一致,编译器能够自动转换
解析:
38.以下程序的输出结果是______。
#include<stdio.h>
main()
{inta[3][3]={0,1,2,0,1,2,0,1,2),i,j,s=1;
for(i=0;i<3;i++)
for(j=i;j<=i;j++)
s+=a[i][a[j][j]];
printf("%d/n",s);
}
(分数:
2.00)
A.3
B.4 √
C.1
D.9
解析:
39.在一个C源程序文件中,定义一个只允许本源文件中所有函数使用的全局变量的存储类别是______。
(分数:
2.00)
A.extern
B.static √
C.register
D.auto
解析:
40.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是______。
(分数:
2.00)
A.函数调用可以作为独立的语句存在
B.函数调用可以作为一个函数的实参
C.函数调用可以出现在表达式中
D.函数调用可以作为一个函数的形参 √
解析:
41.若运行时给变量x输入12,则以下程序的运行结果是______。
main()
{intx,y;
scanf("%d",&x);
y=x>12?
x+10:
x-12;
printf("%d/n",y);
}
(分数:
2.00)
A.0 √
B.22
C.12
D.10
解析:
42.若函数调用时的实参为变量,以下关于函数形参和实参的叙述中正确的是______。
(分数:
2.00)
A.函数的实参和其对应的形参共占同一存储单元
B.形参只是形式上的存在,不占用具体存储单元
C.同名的实参和形参占同一存储单元
D.函数的形参和实参分别占用不同的存储单元 √
解析:
43.请阅读以下程序:
#include<stdio.h>
#include<string.h>
voidfun(intb[])
{staticinti=0;
do
{b[i]+=b[i+1];
}while(++i<2);}
main()
{intk,a[5]={1,3,5,4,9};
fun(a);
for(k=0;k<5;k++)pfintf("%d",a[k]);}
上面程序的输出是______。
(分数:
2.00)
A.13579
B.48579
C.48549 √
D.48999
解析:
44.C语言中,凡未指定存储类别的局部变量的隐含存储类别是______。
(分数:
2.00)
A.自动(auto) √
B.静态(static)
C.外部(extern)
D.寄存器(register)
解析:
45.若语句“t=fun(fun(x,y,a),(a+b,a+c),x+y+z);”对fun函数的调用正确,则fun函数的形参个数为______。
(分数:
2.00)
A.3 √
B.4
C.5
D.6
解析:
46.假设有语句sizeof(double),则它是______。
(分数:
2.00)
A.一个整型表达式 √
B.一个双精度浮点型表达式
C.一种函数调用
D.一种函数定义
解析:
47.C语言中允许用外部说明来指定变量、函数和其他标识符的特征,这里所说的外部指的是______。
(分数:
2.00)
A.冠以关键字extern
B.位置在函数体外部
C.作用范围是全程的
D.位置在函数的外部 √
解析:
48.若有代数式
(其中e仅代表自然对数的底数,不是变量),则下列能够正确表示该代数式的C语言表达式是______。
(分数:
2.00)
A.sqn(abs(n^x+e^x))
B.sqrt(fabs(pow(n,x)+pow(x,e)))
C.sqrt(fabs(pow(n,x)+exp(x))) √
D.sqrt(fabs(pow(x,n)+exp(x)))
解析:
49.下列程序的运行结果为______。
#include<stdio.h>
voidabc(char*str)
{inta,b,i,j;
for(i=j=0;str[i]!
="/0";i++)
if(str[i]!
="a")
str[j++]=str[i];
str[j]="/0";
}
voidmain()
{charstr[]="abcdef";
abc(str);
printf("str[]=%s",str);
}
(分数:
2.00)
A.str[]=bcdef √
B.str[]=abcdef
C.str[]=a
D.str[]=ab
解析:
50.以下正确的说法是______。
(分数:
2.00)
A.定义函数时,形参的类型说明可以放在函数体内
B.return后边的值不能为表达式
C.如果函数值的类型与返回值类型不一致,以函数值类型为准 √
D.如果形参与实参类型不一致,以实参类型为准
解析: