C语言选择题参考答案1Word文件下载.docx
《C语言选择题参考答案1Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言选择题参考答案1Word文件下载.docx(29页珍藏版)》请在冰豆网上搜索。
![C语言选择题参考答案1Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-11/23/ef73f526-3729-4e9e-ac53-feee8f11a496/ef73f526-3729-4e9e-ac53-feee8f11a4961.gif)
,"
是一个特殊的运算符,叫做逗号运算符,它的一般形式为:
表达式1,表达式2,求解过程为:
先求解表达式1,再求解表达式2,整个表达式的值是表达式2的值,(x,y)的值为200,所以输出结果为200。
故本题答案为A。
8、若执行下面的程序时从键盘上输入3和4,
main()
{inta,b,s;
scanf("
%d%d"
&
a,&
b);
s=a;
if(a<
b)s=b;
s=s*s;
%d\n"
s);
}
则输出是______。
14
16
18
20
本题的考查点是给变量赋值。
用户输入的3和4分别赋给了a和b,在if语句进行判断时,因为表达式的值为真,所以b的值将赋给s,s*s=16,最后的打印结果为16。
9、设ch是char型变量,其值为A,且有下面的表达式
ch=(ch>
='
A'
ch<
Z'
)?
(ch+32):
ch
上面表达式的值是______。
a
Z
本题的考查点是条件运算符。
条件表达式的一般形式为:
表达式1?
表达式2:
表达式3,条件运算符的执行顺序:
先求解表达式1,若非0则求解表达式2,此时表达式2的值就作为整个表达式的值,若表达式1的值为0,则求解表达式3,此时表达式3的值就作为整个表达式的值。
本题中,表达式1的值为1,所以整个表达式的值为表达式(ch+32)的值,即为a。
10、设有以下语句,其中不是对a数组元素的正确引用的是______。
(其中0≤i<
10)
inta[10]={0,1,2,3,4,5,6,7,8,9,},*p=a;
a[p-a]
*(&
a[i])
p[i]
*(*(a+i))
本题的考查点是通过指针引用数组元素。
11、下面程序
{
intx=10,y=3;
y=x/y);
的输出是______。
不确定的值
C
本题的考查点是除法运算。
x/y的结果约为3.33333,但是由于打印要求为整型,所以自动转换为整型(相当于截取整数位),打印结果为3。
故本题答案为C。
12、下面的程序中______错误(每行程序前面的数字是行号)。
1#include<
stdio.h>
2main()
3{
4floata[3]={0.0};
5inti;
6for(i=0;
i<
3;
i++)scanf("
a[i]);
7for(i=1;
i++)a[0]=a[0]+a[i];
8printf("
%f\n"
a[0]);
9}
没
第4行
第6行
第8行
本题的考查点是函数scanf()的格式输入。
根据函数scanf()的语法可知,在函数中的参数表列部分,应当是欲赋值变量的内存地址,象第六行这样,将数组元素直接放在参数表列中是无法达到给数组元素赋值的目的。
13、有如下程序
main()
{
intn=9;
while(n>
6)
n--;
n);
}
该程序的输出结果是______。
987
876
8765
9876
本题考查点是While语句循环次数的问题。
符合n>
6的n只有7,8,9;
所以循环次数为3。
选项C、D可以排除。
又因n在输出之前要执行n--,所以输出结果只能是876。
本题答案为B。
14、若变量已正确定义并赋值,下面符合C语言的表达式是______。
a:
=b+1
a=b=c+2
int18.5%3
a=a+7=c+b
选项A和C显然错误;
对于表达式a=a+7=c+b(答案D),是先执行赋值表达式a+7=c+b,再把这个表达式的值赋给a,显然,表达式a+7=c+b非法,因为赋值表达式的左值不能为常量或表达式。
15、有如下程序
{floatx=2.0,y;
if(x<
0.0)y=0.0;
elseif(x<
10.0)y=1.0/x;
elsey=1.0;
y);
该程序输出结果是______。
0.000000
0.250000
0.500000
1.000000
本题考查的是IF…ELSE语句的使用。
x=2.0,符合第二个IF语句的条件x<
10.0,所以执行y=1.0/x语句,即y=1.0/2.0=0.500000。
本题答案为C。
16、有如下程序段
int*p,a=10,b=1;
p=&
a;
a=*p+b;
执行该程序段后,a的值为______。
12
11
10
编译出错
执行p=&
后,p指向整数a,*p即p的目标变量,也就是a;
所以a=*p+b等价于a=a+b,可知a的值最终为11。
17、有如下程序
intn[5]={0,0,0},i,k=2;
for(i=0;
i<
k;
i++)n[i]=n[i]+1;
n[k]);
不确定的值
一维数组和多维数组的定义、初始化和引用
18、有如下定义
structperson{charname[9];
intage;
};
structpersonclass[10]={"
John"
17,
"
Paul"
19,
Mary"
18,
Adam"
16,};
根据上述定义,能输出字母M的语句是______。
printf("
%c\n"
class[3].name);
class[3].name[1]);
class[2].name[1]);
class[2].name[0]);
结构体和共用体类型数据的定义方法和引用方法
19、以下列出C语言常量中,错误的是______。
OxFF
1.2e0.5
2L
'
\72'
C的数据类型及其定义方法
20、以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子x/(y*z)的C语言表达式是______。
x/y*z
x*(1/(y*z))
x/y*1/z
x/y/z
21、设有以下说明语句
structex
{intx;
floaty;
charz;
}example;
则下面的叙述中不正确的是______。
struct是结构体类型的关键字
example是结构体类型名
x,y,z都是结构体成员名
structex是结构体类型
22、X、Y、Z被定义为int型变量,若从键盘给X、Y、Z输入数据,正确的输入语句是______。
INPUTX,Y,Z;
scanf("
%d%d%d"
X,&
Y,&
Z);
X,Y,Z);
read("
本题考查C语言的格式化输入语句。
C语言中没有INPUT与read语句,scanf()语句的格式为:
scanf("
格式字符串"
变量地址1,变量地址2,...);
本题答案C中,应为变量地址。
23、t为int类型,进入下面的循环之前,t的值为0,
while(t=1)
{......}
则以下叙述中正确的是______。
循环控制表达式的值为0
循环控制表达式的值为1
循环控制表达式不合法
以上说法都不对
本题考查C语言的while循环语句。
本题的t=1是一个赋值表达式,其值为变量的值,所以while语句的循环控制表达式的值为1。
24、设有以下函数;
f(inta)
{intb=0;
staticintc=3;
b++;
c++;
return(a+b+c);
如果在下面的程序中调用该函数,则输出结果是______。
{inta=2,i;
for(i=0;
i++)printf("
f(a));
A)B)C)D)
7777
89107
911137
本题考查的是C语言的静态数据类型。
静态数据类型的变量的值在退出了函数时依然存放在内存中,且只初始化一次。
本题答案为A。
25、以下定义语句中,错误的是______。
inta[]={1,2};
char*a[3];
chars[10]="
test"
;
intn=5,a[n];
本题考查C语言数组的定义与初始化。
在C语言中数组的初始化可以对部分元素,数组的定义,不能含有变量。
本题答案为D。
26、以下程序的输出结果是______。
{inti,a[10];
for(i=9;
i>
=0;
i--)a[i]=10-i;
a[2],a[5],a[8]);
258
741
852
369
本题使循环语句给数组元素赋值。
C语言中for循环语句的一般形式为:
for(表达式1;
表达式2;
表达式3)
语句部分;
27、以下程序的输出结果是______。
{inta,b;
for(a=1,b=1;
a<
=100;
a++)
{if(b>
=10)break;
if(b%3==1)
{b+=3;
continue;
a);
101
6
5
本题主要考查考生对C语言中的循环语句和程序的执行逻辑。
本题中for循环语句共执行3次,所以a的值累加3次,结果为4。
CONTINUE语句和BREAK语句
28、以下程序的结果是______。
inta,b;
voidfun()
{a=100;
b=200;
{inta=5,b=7;
fun();
%d%d\n"
a,b);
100200
57
200100
75
局部变量和全局变量
29、以下叙述中正确的是______。
C语言中的文件是流式文件,因此只能顺序存取数据
打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖
在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失
文件的打开与关闭(FOPEN,FCLOSE)
30、C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是______。
Void
int
float
double
函数的类型和返回值
31、有以下程序
structSTU
{charnum[10];
floatscore[3];
{structSTUs[3]={{"
20021"
90,95,85},
{"
20022"
95,80,75},
20023"
100,95,90}},*p=s;
inti;
floatsum=0;
i++)
sum=sum+p->
score[i];
%6.2f\n"
sum);
程序运行后的输出结果是______。
260.00
270.00
280.00
285.00
32、有以下程序
{intp[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<
7&
p[i]%2){k=k+p[i];
i++;
k);
执行后输出的结果是______。
58
56
45
24
33、设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是______。
x=x*100+0.5/100.0;
x=(x*100+0.5)/100.0
x=(int)(x*100+0.5)/100.0;
x=(x/100+0.5)/100.0;
表达式语句,空语句,复合语句
34、有以下程序
{inti,s=0;
for(i=1;
10;
i+=2)s+=i+1;
自然数1~9的累加和
自然数1~10的累加和
自然数1~9中奇数之和
自然数1~10中偶数之和
FOR循环结构
35、若程序中定义了以下函数
doublemyadd(doublea,doubleb)
{return(a+b);
并将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是______。
doublemyadd(doublea,b);
doublemyadd(double,double);
doublemyadd(doubleb,doublea);
doublemyadd(doublex,doubley);
对函数的“定义”和“说明”不是一回事。
“定义”是指对函数功能的确立,包括指定函数名,函数值类型、形参及其类型、函数体等,它是一个完整的、独立的函数单位。
而“说明”则是对已定义的函数的返回值进行类型说明(或称“申明”),它只包括函数名、函数类型、以及一个空的括弧,不包括形参和函数体。
对被调函数进行说明的作用是告诉系统:
在本函数中将要用到的某函数是XX类型。
也就是说明该函数的返回值的类型,以便在主调函数中按此类型对函数值作相应的处理。
本题选项A中,对变量b的类型没有说明,默认的为整型,不合题意。
36、下面程序的功能是输出以下形式的金字塔图案:
*
***
*****
*******
{inti,j;
=4;
{for(j=1;
j<
=4-i;
j++)printf("
"
);
for(j=1;
=______;
*"
\n"
在下划线处应填入的是______。
i
2*i-1
2*i+1
i+2
循环的嵌套
37、请选出以下程序的输出结果______。
#include<
sub(intx,inty,int*z){
*z=y-x;
main(){
inta,b,c;
sub(10,5,&
a);
sub(7,a,&
sub(a,b,&
c);
%d,%d,%d\n"
a,b,c);
5,2,3
-5,-12,-7
-5,-12,-17
5,-2,-7
用指针作函数参数
38、请选出以下程序段的输出结果______。
#defineMIN(x,y)(x<
y)?
x:
y
inti,j,k;
i=10;
j=15;
k=10*MIN(i,j);
15
150
宏定义:
不带参数的宏定义;
带参数的宏定义
39、设有如下的程序段
charstr[]="
Hello"
char*ptr;
ptr=str;
执行完上面的程序段后,*(ptr+5)的值为______。
o'
\0'
的地址
字符串与字符数组
本题的考查点是字符数组的结束标志。
ptr=str实际上是将串str的首地址赋给了指针变量ptr,所以ptr+5将指向str串的第六个数组元素,即是串的隐含结束标志'
,*(ptr+5)='
,最后的结果为'
。
40、已有定义:
charc;
,程序前面已在命令中包含ctype.h文件。
不能用于判断c中的字符是否为大写字母的表达式是______。
isupper(c)
<
=c<
=c&
c<
=('
z'
-32)&
('
a'
-32)<
=c
C运算符的种类、运算优先级和结合性
41、下面程序的输出是______。
intm=13;
intfun2(intx,inty)
{intm=3;
return(x*y-m);
main()
{inta=7,b=5;
fun2(a,b)/m);
7
本题的考查点是函数的调用。
函数fun2()的作用是将形参x和y的值相乘后-3,在fun2()中的变量m是一个局部变量,它的值在fun2()函数内有效,在主函数中的m指的是全局变量,其值为13,所以fun2(a,b)/m的值为(7*5-3)/13,即2。
42、有以下程序
#include<
intfun(chars[])
{intn=0;
while(*s<
9'
*s>
0'
){n=10*n+*s-'
s++;
return(n);
{chars[10]={'
6'
'
1'
'
*'
4'
fun(s));
程序的运行结果是______。
9
61490
61
本题考查的是指针的应用。
本题主函数中定义了一个字符型数组s,当调用fun函数时,将字符型数组s的地址指向形参字符数组s,则形参与实参共用占同一存储单元,其值也相等。
在函数fun中,第一次执行while循环时,*s='
,所以while(*s<
)成立,执行n=10*n+*s-'
即n=10*0+'
-'
,其中字符'
和'
均代入ASCII码进行运算,所以n=6;
s++表示指针变量s后移一位,即*s='
由于前一次循环执行后的n的值为6,此时的等式为(n=10*6+'
),故n=61;
指针变量继续后移一位,*s='
)不成立,返回n=61的值。
故本题程序输出结果是61。
43、以下函数返回a所指数组中最小值所在的下标值。
fun(int*a,intn)
inti,j=0,p;
p=j;
for(i=j;
n;
j++)
if(a[i]<
a[p])______;
return(p);
i=p
a[p]=a[i]
p=j
p=i
44、有如下程序:
longfib(intn)
if(n>
2)
return(fib(n-1)+fib(n-2));
else
return
(2);
fib(3));
8
函数的正确调用,嵌套调用,递归调用
45、若fp是指向某文件的指针,且已读到此文件的末尾,则函数feof(fp)的返回值是______。
EOF
非零值
NULL
本题的考查点是文件结束符的返回值问题。
函数feof是用来判断文件是否已读到末尾,如果已读到末尾则返回非零值,否则返回0。
文件的读写,文件的定位
46、有如下程序
intfunc(inta,intb)
{return(a+b);
{intx=2,y=5,z=8,r;
r=func(func(x,y),z);
r);
该程序的输