C语言程序设计复习题0519 1文档格式.docx
《C语言程序设计复习题0519 1文档格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计复习题0519 1文档格式.docx(19页珍藏版)》请在冰点文库上搜索。
![C语言程序设计复习题0519 1文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/603c8f8d-cb70-4cbc-824f-2a903626584f/603c8f8d-cb70-4cbc-824f-2a903626584f1.gif)
longf(intn)
{inti;
longs;
s=1;
for(i=1;
_s<
=n______;
i++)s*=i;
return__s_____;
}
main()
{longs;
intk,n;
scanf(“%d”,&
n);
s=__0_______;
for(k=0;
=n;
k++)s+=_____f(k)____;
printf(“%ld\n”,s);
二、单项选择题(每小题2分,共70分)
1.设有语句:
inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
以下对数组a
中的数组元素的不正确引用是(D)。
Aa[p-a]B*(&
a[i])Cp[i]D*(&
(a+i))
3.以下描述中不正确的是(B)。
A数组是一批类型相同的若干个元素的集合
B数组的各个元素的类型可以不同
C数组在内存中占用一块连续的存储空间
D数组是一种构造类型
4.可用作C语言用户标识的一组标识符(B)。
AviodBa3_b3CForD2a
define_123-abcDO
WORDIFCasesizeof
7.下列程序输出的结果是(A)。
{inta=0,i;
i<
5;
i++){
switch(i)
{case0:
case3:
a+=2;
case1:
case2:
a+=3;
default:
a+=5;
}}
printf(“%d\n”,a);
A31B13C10D20
8.下列程序中,while循环次数是(D)。
main()
{inti=0;
while(i<
10){
if(i<
1)continue;
if(i==5)break;
i++;
A1B10C6D死循环,不能确定次数
9.以下说法中正确的是(C)。
AC语言程序总是从第一个函数开始执行
B在C语言程序中,要调用的函数必须在main()函数中定义
CC语言程序总是从main()函数开始执行
DC语言程序中的main()函数必须放在程序的开始部分
10.C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方式是(B)。
A地址传递B值传递C由用户指定传递方式
D由实参传给形参,并由形参传回来给实参
11.设有:
inta[10],i=5;
以下对数组元素引用不正确的是(D)。
Aa[9]Ba[0]Ca[i]Da[i+5]
12.若有定义:
inti,j,*p=&
i,则与i=j等价的语句是(B)。
Ai=*p;
B*p=*&
j;
Ci=&
Di=**p;
13.设a,b和c都是整型变量,且a=3,b=4,c=5;
则以下表达式中,值为0
的表达式是(D)。
Aa&
bBa<
=bCa||b+c&
b-cD!
((a<
!
c||1)
14、一个C程序由若干个C函数组成,各个函数在文件中的位置顺序为:
( A )
A、任意
B、第一个函数必须是主函数,其他函数任意
C、必须完全按照执行的顺序排列
D、其他函数可以任意,主函数必须在最后
15、下面不是C语言合法标识符的是:
( B )
A、abc B、5n C、_4m D、x3
16、下列能正确表示a≥10或a≤0的关系表达式是:
( C )
A、a>
=10ora<
=0B、a<
=10||a>
=0
C、a>
=10||a<
=0D、a>
=10&
a<
17、表达式17%4的值为:
A、0B、1C、2D、3
18、与x*=y等价的赋值表达式是:
A.x=yB.x=x-y
C.x=x*yD.x=x+y
8、下述哪一个不是结构化程序基本结构:
( D )
A.顺序 B.选择 C.循环 D.嵌套
18、以下为C语句的是:
A.a=8 B.a++;
C.if(a>
8) D.#include<
stdio.h>
19、以下程序的输出结果是:
( B )
{intx=10,y=3;
printf(“%d\n”,y=x/y);
}
A)0B)1C)3D)不确定
20、若有以下语句
inta[4]={1,2,3},i;
i=a[0]*a[1]+a[2]*a[3];
i的值为____D____
A、2B、5C、3D、以上都不对
22、以下程序的输出结果是:
(D )
{intx=10,y=10;
printf("
%d%d\n"
x--,--y);
}
A、1010B、99C、910D、109
23、已知字符A的ASCII码为十进制的65,下面程序的输出是:
{
charch1,ch2;
ch1='
A'
+'
5'
-'
3'
;
ch2='
6'
printf("
%d,%c\n"
ch1,ch2);
A、67,DB、B,C
C、C,DD、不确定的值
25、以下程序执行后sum的值是:
{inti,sum;
6;
i++)sum+=i;
%d\n"
sum);
A、15 B、14 C、不确定 D、0
26、下列合法的数组定义是:
A、inta[]=”string”;
B、inta[5]={0,1,2,3,4,5};
C、chara=”string”;
D、chara[]={0,1,2,3,4,5};
27、下面程序段的输出结果是:
intj;
intx[3][3]={1,2,3,4,5,6,7,8,9};
for(j=0;
j<
3;
j++)
printf(“%d”,x[j][2-j]);
A、159B、147C、357D、369
28、已知inta[][3]={1,2,3,4,5,6,7};
,则数组a的第一维的最大值是:
( D )。
A.2B.3C.4D.无确定值
29、有以下程序
main()
{intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
inti,s=0;
for(i=0;
4;
i++)s+=aa[i][1];
s);
程序运行后的输出结果是:
A、11 B、19 C、13 D、20
30.关于C语言的叙述中,不正确的是(D
)。
A.
C程序可由一个或多个函数组成
B.
C程序必须包含一个main()函数
C.
C程序的基本组成单位是函数
D.
注释说明只能位于一条语句的后面
31.C语言程序从main函数开始执行,所以这个函数要写在(D)
[A]程序文件的开始[B]程序文件的最后
[C]它所调用的函数的前面[D]程序文件的任何位置
32.对于C语言源程序,以下叙述错误的是(
C)。
可以有空语句
函数之间是平等的,在一个函数内部不能定义其它函数
程序调试时如果没有提示错误,就能得到正确结果
注释可以出现在语句的前面
33.已知inta;
使用scanf函数输入一个整数给变量a,正确的函数调用是(B)。
[A]scanf("
%d"
a);
[B]scanf("
&
a);
[C]scanf("
%f"
[D]scanf("
%lf"
a);
34.以下(D)是正确的变量名。
A.5fB.ifC.f.5D._f5
6.以下(A)是不正确的字符串常量。
[A]'
abc'
[B]"
12'
12"
[C]"
0"
[D]"
"
36.语句a=(3/4)+3%2;
运行后,a的值为(B)。
A.0B.1C.2D.3
37.已知doublea=5.2;
则正确的赋值表达式是(A)。
A.a+=a-=(a=4)*(a=3)B.a=a*3=2
C.a%3D.a=double(-3)
39.若有定义:
int
k,i=2,j=4;
则表达式
k=(++i)*(j--)
的值是(B
A.
8
12
6D.
9
41.C语言对if嵌套语句的规定:
else总是与(B
)配对。
第一个if
之前最近的且尚未配对的if
C.
缩进位置相同的if
D.
之前最近的if
42.若有定义:
intx=1,y=2,z=4;
则以下程序段运行后z的值为(B)。
if(x>
y)z=x+y;
elsez=x-y;
A.3B.-1C.4D.不确定
43.下列数组定义中,正确的是(A)。
A.inta[5]={0};
B.inta[]={012};
C.inta[5]=0;
D.inta[];
44.
若有定义:
a[3]={0,1,2};
则a[1]的值为(B
0
B.
1
2
3
45.有如下定义
a[][3]={1,2,3,4,5,6,7,8,9,10};
则数组a的行数是(
C
3
4
无法确定的
48.设有以下定义语句:
structstudent
{
intnum;
charname[10];
floatscore;
}wang,zhang;
则变量wang所占的内存字节数是(B)。
A.14B.16C.18D.20
50.一个程序的执行是从A。
(A)本程序的main函数开始,到main函数结束
(B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。
(C)本程序的main函数开始,到本程序文件的最后一个函数结束。
(D)本程序文件的第一个函数开始,到main函数结束。
51.以下叙述正确的是C。
(A)在C程序中,main函数必须位于程序的最前面。
(B)C程序每行中只能写一条语句。
(C)C语言本是没有输入输出语句。
(D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误。
52.以下叙述不正确的是D。
(A)逗号运算符的运算级最低。
(B)ABC和abc是两个不同的变量。
(C)若a和b类型相同,在执行a=b后,b的自身值不变。
(D)‘a’和“a”是完全等价的常量。
53.intx=3,y=2;
则表达式x+=x*=y+8的值为C。
(A)28(B)30(C)60(D)17
54.设x=2.7,a=8,y=4.9,算术表达式x+a%3*(int)(x+y)%5/3的值为B。
(A)2.7(B)3.7(C)4.7(D)4.03
55.执行下面两个语句后,输出的结果为___D__。
charc1=98;
printf(“%d%c”,c1,c1-32);
(A)9766(B)98b(C)b66(D)98B
56.执行下面语句后的结果为。
y=10;
x=y++;
(A)x=10,y=10(B)x=11,y=11(C)x=10,y=11(D)x=11,y=10
57.Charw;
intx;
floaty;
doublez;
则表达式w*x+z-y值的数据类型是。
(A)double(B)char(C)int(D)float
58.C语言中要求操作数必须是整数的运算符是。
(A)/(B)%(C)!
=(D)=
59.用scanf(“%d,%d”,&
a,&
b)输入数据时,下面输入法中正确的是。
(A)123,4(B)1234(C)123;
4(D)
60.以下关于运算符优先顺序的描述中正确的是________
(A)关系运算符<算术运算符<赋值运算符<逻辑与运算符
(B)逻辑与运算符 <关系运算符< 算术运算符<赋值运算符
(C)赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符
(D)算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符
61.下列程序段中,功能与其它程序段不同的是。
(A)for(i=1,p=1;
=5;
i++)p*=i;
(B)for(i=1;
){p=1;
p*=i;
i++;
(C)i=1;
p=1;
while(i<
=5){p*=i;
(D)i=1;
do{p*=i;
}while(i<
=5);
62.C语言规定else总是与配对。
(A)缩进位置相同的if(B)同一行上的if
(C)其之前最近的if(D)其之后最近的if
63.以下程序的运行结果为______。
main( )
{intn;
for(n=1;
n<
=10;
n++)
{if(n%3==0)continue;
printf(“%d”,n);
(A)12457810(B)369(C)12(D)12345678910
64.设x和y均为int型变量,则语句x+=y;
y=x-y;
x-=y;
的功能是。
(A)把x和y按从大到小排列(B)把x和y按从小到大排列
(C)无确定结果(D)交换x和y中的值
65.变量的指针,其含义是指该变量的_____
(A)值(B)地址(C)名(D)一个标志
66.以下函数调用语句中含有个实参。
func((e1,e2),(e3,e4,e5));
(A)2(B)3(C)5(D)语法错误
67.以下正确的描述是________
(A)continue语句的作用是结束整个循环的执行
(B)只能在循环体内和switch语句体内使用break语句
(C)在循环体内使用break语句或continue语句的作用相同
(D)goto语句只能用于退出多层循环
68.以下程序运行的结果是。
{inta=2,b=3,c=2;
if(a<
b)
c)
c--;
else
c+=1;
printf(“%d\n”,c);
(A)0(B)1(C)2(D)3
68.inta[4]={2,3,4},I;
i=a[0]*a[1]+a[2]*a[3];
i的值为。
(A)2(B)4(C)6(D)10
69.以下正确的函数定义形式是。
(A)doublefun(intx,inty);
(B)doublefun(intx;
inty)
(C)doublefun(intx,inty)
(D)doublefun(intx,y)
70.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是。
(A)float型(B)int型(C)long型(D)double型
71.若有定义inta[4]={1,2,3};
请问a[a[a[0]]]的值是。
(A)1(B)2(C)3(D)4
72.以下正确的描述是____________
(A)函数的定义可以嵌套,函数的调用不可以嵌套
(B)函数的定义不可以嵌套,函数的调用可以嵌套
(C)函数的定义和函数的调用均不可以嵌套
(D)函数的定义和函数的调用均可以嵌套
73.以下不正确的说法是____________
(A)在函数内的复合语句中定义的变量在本函数范围内有效
(B)在不同函数中可以使用相同名字的变量
(C)形参是局部变量
(D)函数调用结束后,静态局部变量的值仍然保留。
74.已有定义:
intx=3,y=4,z=5;
则表达式!
(x+y)+z-1&
y+z/2的值是。
(A)6(B)0(C)2(D)1
75.main()
{intn[4]={1,2,3,4},k;
{if(k/2)break;
n[k]++;
printf(“%d\n”,n[++k]);
执行后输出的结果是。
(A)2(B)3(C)4(D)5
77.以下程序运行结果是。
{inta[2][3]={1,3,5,4,7,6},i,j,b=a[0][0];
for(i=0;
2;
i++)
for(j=0;
if(b<
a[i][j])
b=a[i][j];
printf(“%d\n”,b);
(A)5(B)7(C)4(D)1
78.以下程序运行结果是。
{chars[50]=”Iamastudent”,c;
inti,num=0,word=0;
c=s[i];
if(c==’’)word=0;
elseif(word==0)
{word=1;
num++;
printf(“%d\n”,num);
79.以下程序运行结果是。
#include<
string.h>
{chars[50]=”1234567”,*p=s;
inti;
i=*(p+5)-*(p+2);
printf(“%d\n”,i);
(A)3(B)4(C)5(D)6
80.以下程序运行结果是。
{inta[]={1,2,3,4,5,6,7,8,9},i,j,k;
for(i=0,j=8;
i++,j--)
{k=a[i];
a[i]=a[j];
a[j]=k;
printf(“%d\n”,a[1]+a[5]);
(A)11(B)12(C)13(D)14
{intx[]={1,2,3},s,*p=x,i;
for(i=0,s=1;
i++,p++)
s*=*p;
printf(“%d\n”,s);
(A)2(B)4(C)6(D)8
三、判断题(每题2分,共20分)
(0)1、“a”和‘a’均是占用1个字节的内存空间的数据。
(0)2、在C语言中,函数体中变量的隐含存储类别是自动变量auto。
(0)3、C语言程序中的main()函数必须放在程序的开始部分。
(1)4、函数的实参和形参可以是相同的名字。
(0)5、外部类型的变量作用范围大,编程中应多用外部变量。
(1)6、使用strcat函数可以实现两个字符串的复制。
(1)7、如有定义inta[2][3];
则数组a的最后一个元素为a[1][2]。
(0)8、如有定义inta[3][4]={0};
则数组a的所有元素初值均为0。
(0)9、如有定义chara[]=”student”;
则数组a的长度为7。
(1)10、利用break语句可以提前终止循环的执行。
四.程序分析题
阅读程序,将其运行结果填在答题卡相应题目的横线上。
1.#include"
stdio.h"
voidmain()
inta[]={1,2,3,4,5,6},*p;
p=a;
*(p+3)+=2;
%d,%d\n"
*p,*(p+3));
16
2.补充以下缺省的程序,实现求两个整型数的和:
intsum(intx,inty)
intz;
z=x+y;
returnz;
inta,b,s;
printf(“pleaseenteraandb:
”);
scanf(“%d%d”,&
a,&
b);
s=sum(a,b)
printf(“%d+%d=%d\n