C语言复习题2Word文件下载.docx
《C语言复习题2Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言复习题2Word文件下载.docx(21页珍藏版)》请在冰点文库上搜索。
10.以下程序运行结果是【C】
(需看书才能得出答案)
#include<
stdio.h>
fun3(intx)
{staticinta=3;
a+=x;
returna;
main()
{intk=2,m=1,n;
n=fun3(k);
n=fun3(m);
printf("
%d\n"
n);
C)6D)9
11.以下四个运算符,按优先级由高到低的排列顺序是【11】
A)++%+=>
B)%++>
+=
C)%+=>
++D)++%>
12.以下不正确的描述是【12】
A)在函数外部定义的变量是全局变量
B)在函数内部定义的变量是局部变量
C)函数的形参是局部变量
D)局部变量不能与全局变量同名
13.“文件包含”预处理语句的使用形式中,当#include后面的文件名用“”括起时,寻找被包含的文件的方式为【13】
A)直接按系统设定的标准方式搜索目录
B)先在源程序所在目录搜索,再按系统设定的标准方式搜索
C)仅仅搜索源程序所在的目录
D)仅仅搜索当前目录
14.C语言的简单数据类型包括【16】
A)整型、实型、逻辑型B)整型、实型、字符型、逻辑型
C)整型、字符型、逻辑型D)整型、实型、字符型
15.在C语言中,变量所分配的内存空间大小【17】
A)均为一个字节B)由用户自己定义
C)由变量的类型决定D)是任意的
16.在C语言中,合法的整型常数是【18】
A)-0x123B)3.14159C)01001101bD)6.7e10
17.下列各变量均为整型,选项中不正确的C语言赋值语句是【19】
A)i+=++i;
B)i=j==k;
C)i=j+=i;
D)i=j+1=k;
18.数学关系式x≤y≤z可用C语言的表达式表示为【20】
A)(x<
=y)&
&
(y<
=z)B)(x<
=y)and(y<
=z)
C)(x<
=y<
=z)D)(x<
z)
19.(不需做)若定义floata;
现要从键盘输入a数据,其整数位为3位,小数位为2位,则选用【A】
A)scanf(“%6f”,&
a);
B)scanf(“%5.2f”,a);
C)scanf(“%6.2f”,&
D)scanf(“%f”,a);
20.若inti;
则以下循环语句的循环执行次数是【B】
for(i=2;
i==0;
)printf(“%d”,i--);
A)无限次B)0次
C)1次D)2次
21.下面程序的输出结果为【B】
main()
{inti;
for(i=100;
i<
200;
i++)
{
if(i%5==0)continue;
printf(“%d\n”,i);
break;
}
A)100B)101
C)无限循环D)无输出结果
21.下列程序段的运行结果是【B】
voidmain()
inti=1,a[]={1,5,10,9,13,7};
while(a[i]<
=10)a[i]+=2;
for(i=0;
6;
printf("
%d"
a[i]);
A)111109137B)171211137
C)171211139D)17129137
23.以下语句把字符串“abcde”赋初值给字符数组,不正确的语句是【D】
A)chars[]=“abcde”;
B)chars[]={’a’,’b’,’c’,’d’,’e’,’\0’};
C)chars[]={“abcde”};
D)chars[5]=“abcde”;
24.若变量c为char类型,能正确判断出c为小写字母的表达式是【D】
A)'
a'
<
=c<
='
z'
B)(c>
)||(c<
)
C)('
=c)and('
>
=c)D)(c>
)&
(c<
)
25.下列程序段的输出结果是【C】
voidfun(int*x,int*y)
%d%d\n"
*x,*y);
*x=3;
*y=4;
{intx=1,y=2;
fun(&
x,&
y);
x,y);
A)21B)12C)12D)21
43123412
26.以下程序的输出结果是【B】
{inti,k,a[10],p[3];
k=5;
10;
i++)a[i]=i;
i++)p[i]=a[i*(i+1)];
i++)k+=p[i]*2;
k);
A)20B)21C)22D)23
27.以下不能对二维数组a进行正确的初始化的语句是【C】
A)inta[2][3]={0};
B)inta[][3]={1,2,3,4,5};
C)inta[2][3]={{1,2},{3,4},{5,6}};
D)inta[2][3]={{1},{3,4,5}};
28.若inta[][3]={1,2,3,4,5,6,7};
则a数组第一维的大小是【B】
A)2B)3C)4D)无确定值
29.下面程序段的运行结果是【A】
inta[2][3]={1,2,3},i,j;
for(i=0;
2;
for(j=0;
j<
j++)
{a[i][j]=a[i*j%2][j]+a[i][(i+j)%3];
printf(“%d,”,a[i][j]);
A)2,4,6,2,0,8,B)1,2,3,0,0,0,
C)1,2,3,2,0,6,D)2,4,6,2,0,6,
30.下面程序段的运行结果是【D】
inta[][3]={1,2,3,4,5,6,7,8,9,10,11,12};
printf(“%d\n”,a[2][1]);
A)2B)4C)7D)8
31.定义一个结构体变量时,系统分配给它的内存大小是【A】
A)各成员所需内存量的总和
B)成员中占内存量最大者所需内存容量
C)结构中第一个成员所需内存容量
D)结构中最后一个成员所需内存容量
32.若已定义:
int*p,a;
则语句p=&
a;
中的运算符“&
”的含义是【D】
A)位与运算B)逻辑与运算
C)取指针内容D)取变量地址
33.下面程序段的运行结果是【D】
chars[]=“ABC”;
inti;
i++)printf(“%s”,&
s[i]);
A)ABCB)ABCABCABCC)AABABCD)ABCBCC
34.下列叙述中正确的是C
A)C语言编译时不检查语法
B)C语言的子程序有过程和函数两种
C)C语言的函数可以嵌套定义
D)C语言所有函数都是外部函数
35.以下所列的C语言常量中,错误的是B
A)0xFFB)1.2e0.5C)2LD)'
A'
36.下列选项中,合法的C语言关键字是D
A)VARB)cherC)integerD)default
37.下面程序段的运行结果是【D】
{floaty=0.0,a[]={2.0,4.0,6.0,8.0,10.0},*p;
p=&
a[1];
i++)y+=*(p+i);
%f\n"
y);
A)12.0000B)28.0000C)20.0000D)18.0000
38.下面程序段的运行结果是【D】
charc[]={‘a’,‘b’,‘\0’,‘c’,‘\0’};
printf(“%s\n”,c);
A)abcB)‘a’‘b’C)abcD)ab
39.下面程序段的运行结果是【A】
{chars[10],*sp="
HELLO"
;
strcpy(s,sp);
s[0]='
h'
s[6]='
!
'
puts(s);
A)hELLOB)HELLOC)hHELLO!
D)h!
40.若有定义char*language[]={“FORTRAN”,“BASIC”,“PASCAL”,“JAVA”,
“C”};
则language[2]的值是【B】
A)一个字符B)一个地址C)一个字符串D)不确定
41.C语言规定,函数返回值的类型由【D】所决定。
A)return语句中的表达式类型
B)调用该函数时的主调函数类型
C)调用该函数时的形参类型
D)在定义该函数时所指定的函数类型
42.下面程序的输出结果为【B】
#include<
#defineSQR(x)x*x
{inta=10,k=3,m=2;
a=SQR(k+m);
a);
}
A)25B)11C)5D)10
43.下面程序的输出结果为【B】
{inta=10;
{inta=15;
a.1=%d,"
a.2=%d\n"
A)a.1=10,a.2=15B)a.1=15,a.2=10
C)a.1=15,a.2=15D)a.1=10,a.2=10
44.若变量已正确定义并赋值,下面符合C语言语法的表达式是【B】
A)a:
=b+1B)a=b=c+2C)int18.5%3D)a=a+7=c+b
45.C语言中运算对象必须是整型的运算符是【A】
A)%=B)/C)=D)<
=
46.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是【C】
A)1B)2C)2.0D)2.5
47.有如下程序:
{inti,sum;
for(i=1;
=3;
sum++)
sum+=i;
printf(“%d\n”,sum);
该程序的执行结果是【C】
A)6B)3C)死循环D)0
48.如下程序:
intrunc(inta,intb)
{return(a+b);
{intx=2,y=5,z=8,r;
r=runc(runc(x,y),z);
printf(“%d\n”,r);
该程序的执行结果是【D】
A)12B)13C)14D)15
49.有如下程序段:
int*p,a=10,b=1;
a;
a=*p+b;
执行该程序段后,a的值为【B】
A)12B)11C)10D)编译出错
50有以下程序段:
intk=0;
while(k=1)k++;
while循环执行的次数是【A】
A)无限次B)有语法错,不能执行
C)一次也不执行D)执行1次
51.下面函数st的功能是【】
st(char*s)
{char*q=s;
while(*q!
=‘\0’)q++;
return(q-s);
A)检查字符串s中是否含有空字符
B)生成一个新的字符串q,字符串q是从字符串s的尾部到头部排列的
C)将字符串s中的非空字符的ASCII码值增1
D)计算字符串s的长度
52.以下正确的叙述是【C】
A)在C语言中,main函数必须位于文件的开头
B)C语言的每行中只能写一条语句
C)C语言本身没有输入、输出语句
D)对一个C语言程序进行编译预处理时,可检查宏定义的语法错误
53.若执行以下程序段:
inta=1,b=2,m=2,n=2;
(m=a>
b)&
++n;
则n的值是【B】
A)1B)2
C)3D)4
54.以下程序的运行结果是【】
{inti=0;
while
(1)
{printf(“*”);
i++;
if(i<
3)break;
printf(“\n”);
A)*B)***
C)**D)****
二、填空题
(本大题共20个空,每个空2分,共40分)
1.表示条件:
10<
x<
100或x<
0的C语言表达式是【1】
2.以下程序的功能是:
从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请填空。
{floatx,amax,amin;
scanf(“%f”,&
x);
amax=x;
amin=x;
while(【2】)
{if(x>
amax)amax=x;
if(【3】)amin=x;
printf(“\namax=%f\namin=%f\n”,amax,amin);
3.Fibonacci数列中的头两个数是1和1,从第三个数开始,每个数等于前两个数之和。
下述程序计算此数列的前20个数,且每行输出5个数,请填空。
{intf,f1=1,f2=1;
printf(“%6d,%6d”,f1,f2);
for(i=3;
=20;
{f=【4】
printf(“%6d”,f);
if(【5】)
f1=f2;
【6】
4.下面程序的功能是将两个字符串连接起来,请填空。
{chars1[80],s2[40];
inti=0,j=0;
printf(“\nInputstring1:
”);
scanf(“%s”,s1);
printf(“Inputstring2:
scanf(“%s”,s2);
while(s1[i]!
=‘\0’)
i++;
while(s2[j]!
【7】;
【8】=‘\0’;
printf(“%s\n”,s1);
5.计算1+1/2+1/4+…+1/50的值,并显示出来。
{inti=2;
floatsum=1.0;
while(i<
=【9】)
{sum+=1/【10】;
i+=2;
printf(“sum=%f\n”,sum);
6.以下程序是用来统计正整数的各位数字中零的个数,并求各位数字中最大者。
{unsignedlongnum,max,t;
intcount;
count=max=0;
scanf(“%ld”,&
num);
do{
t=【11】;
if(t==0)++count;
else
if(max<
t)
【12】;
num/=10;
}while(num);
printf(“count=%d,max=%ld\n”,count,max);
7.以下程序功能是当输入学生序号(1或2或3)后,能输出该学生的全部成绩(共有三位学生,每位学生有4门成绩)。
{floatscore[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}},
(*p)[4];
intn,i;
p=【13】;
scanf(“%d”,&
n);
printf(“序号为%d的学生成绩是:
”,n);
for(i=0;
4;
i++)printf(“%5.1f”,p【14】);
8.以下程序经过编译连接后得到的可执行文件名为show.exe,程序的功能是将用户运行程序时键入的参数作为字符串连接起来,并在屏幕上显示,例如在dos提示符下输入:
showABCDEFGH回车,则在屏幕上将显示ABCDEFGH。
#include“string.h”
main(int【15】,char*argv[])
{chars[1000]=””;
for(i=1;
argc;
strcat(s,【16】);
printf(“%s\n”,s);
9.若变量n中的值为24,则print函数共输出【17】行,最后一行有【18】个数。
voidprint(intn,intaa[])
{inti;
for(i=1;
=n;
{printf(“%6d”,aa[i]);
if(!
(i%5))printf(“\n”);
printf(“\n”);
10.以下程序显示如下所示的矩阵,矩阵中每个元素形成的规律是:
右上三角阵(含对角线)元素为1,其它元素值为:
行下标-列下标+1。
11111
21111
32111
43211
54321
{inti,j,a[5][5];
=4;
5;
if(【19】)a[i][j]=1;
else【20】=i-j+1;
{for(j=0;
j++)printf(“%3d”,a[I][j]);
1.若已知a=1,b=2,则表达式!
a<
b的值是【1】。
2.若有以下定义
doublea[10];
则a数组元素下标的上限为【1】,下限为【1】。
1.以下程序的输出结果是【1】
main()
{inta=1,b=2;
a=a+b;
b=a-b;
a=a-b;
%d,%d\n"
a,b);
2.下列程序的输出结果是16.00,请填空。
main()
{inta=9,b=2;
floatx=【2】,y=1.1,z;
z=a/2+b*x/y+1/2;
%5.2f\n"
z);
3.下列程序段的输出结果是【3】。
{charb[]="
Hello,you"
b[5]=0;
%s\n"
b);
4.下列程序段的输出结果是【4】。
intn='
c'
switch(n++)
{default:
error"
);
break;
case'
:
case'
b'
B'
good"
C'
pass"
d'
D'
warn"
5.以下程序的输出结果是【5】。
{intarr[]={30,25,20,15,10,5},*p=arr;
p++;
*(p+3));
6.以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。
structst
{charname[20];
doublescore;
};
{structstex;
exsize:
%d\n"
sizeof(【6】));
7.以下程序运行后,显示:
【7】
{floata=365.7189;
intb=12,c;
c=(int)a+b;
printf(“c=%d\n”,c);
8.以下程序是用来输入5个整数,并存放在数组中,找出最大数与最小数所在的下标位置,并把二者对调,然后输出调整后的5个数。
{inta[5],t,i,maxi,mini;
a[i]);
mini=maxi=【8】;
{
if(【9】)mini=i;
if(a[i]>
a[maxi])【10】;
printf(“最小数的位置是:
%d\n”,mini);
printf(“最大数的位置是:
%d\n”,maxi);
t=a[maxi];
【11】;