C语言程序设计复习题0519 1.docx
《C语言程序设计复习题0519 1.docx》由会员分享,可在线阅读,更多相关《C语言程序设计复习题0519 1.docx(19页珍藏版)》请在冰豆网上搜索。
C语言程序设计复习题05191
一、填空题
7.C程序一个函数的定义由__________和____________两部分组成。
8.C语言的数据类型可分为基本类型型、构造类型、__指针类型______和__空类型______。
9.C语言在判断一个量是否为“真”时,以_0___代表“假”,以_1___代表“真”。
10.C语言中的break语句只能用于_switch_____和__循环____语句。
12.对于数组x[5][5],*(x+2)+3表示___x[2][3]_______,x[3]+2表示___x[3][2]_______。
13.若定义:
struct{inty,m,d;}today则为today分配内存_6___字节。
16.C语言程序的三种基本结构是顺序、选择、循环。
17.一个C程序有且仅有一个main函数。
18.C语言描述“x和y都大于或等于z”的表达式是x>=z&&y>=z。
19.C语言可以用来实现循环的结构化语句是for、while、dowhile。
20.数组名表示数组在内存的地址。
21.inta=3,*p=&a;*p+2的值是5。
22.变量的作用域是指变量的有效范围,在作用域内可以引用该变量。
按作用域来说,变量可以分为___局部_____变量和__全局____变量。
23.如果程序中已有intk;*p;p=k;通过指针变量,将数值10赋值给k的
句是____*p=10______。
24.设a,b,c,d,m,n均为int型变量,且a=5,b=6,c=7,d=8,m=2,n=2,则
逻辑表达式(m=a
25.有下列程序段:
s=1.0;
for(k=1;k<=10;k++)
s=s+1.0/(k*(k+1));
printf(“%f\n”,s);
试填空,使下列的程序段的功能完全与之等同。
s=0.0;
k=0;______;
d=0.0;
do{s=s+d;____k=k+1;________;
d=1.0/(k*(k+1));}while(__k<=10______);
printf(“%f\n”,s);
28.当函数的返回值的类型与函数定义的类型不一致时,系统出错
29.指针变量是把内存中另一个数据的_地址____作为其值的变量。
n
30.下列程序的功能是计算s=∑k!
请填空。
k=0
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;k<=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)。
main()
{inta=0,i;for(i=1;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=&j;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<=0
17、表达式17%4的值为:
( B )
A、0B、1C、2D、3
18、与x*=y等价的赋值表达式是:
( C )
A.x=yB.x=x-y
C.x=x*yD.x=x+y
8、下述哪一个不是结构化程序基本结构:
( D )
A.顺序 B.选择 C.循环 D.嵌套
18、以下为C语句的是:
( B )
A.a=8 B.a++;C.if(a>8) D.#include
19、以下程序的输出结果是:
( B )
main()
{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 )
main()
{intx=10,y=10;
printf("%d%d\n",x--,--y);
}
A、1010B、99C、910D、109
23、已知字符A的ASCII码为十进制的65,下面程序的输出是:
( C )
main()
{
charch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);
}
A、67,DB、B,C
C、C,DD、不确定的值
25、以下程序执行后sum的值是:
( C )
main()
{inti,sum;
for(i=1;i<6;i++)sum+=i;
printf("%d\n",sum);
}
A、15 B、14 C、不确定 D、0
26、下列合法的数组定义是:
( D )
A、inta[]=”string”;B、inta[5]={0,1,2,3,4,5};
C、chara=”string”;D、chara[]={0,1,2,3,4,5};
27、下面程序段的输出结果是:
( C )
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;i<4;i++)s+=aa[i][1];
printf("%d\n",s);
}
程序运行后的输出结果是:
( B )
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)。
A. 可以有空语句
B. 函数之间是平等的,在一个函数内部不能定义其它函数
C. 程序调试时如果没有提示错误,就能得到正确结果
D. 注释可以出现在语句的前面
33.已知inta;使用scanf函数输入一个整数给变量a,正确的函数调用是(B)。
[A]scanf("%d",a);
[B]scanf("%d",&a);
[C]scanf("%f",&a);
[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 B. 12 C. 6D. 9
41.C语言对if嵌套语句的规定:
else总是与(B )配对。
A. 第一个if B. 之前最近的且尚未配对的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. 若有定义:
int a[3]={0,1,2};则a[1]的值为(B )。
A. 0 B. 1 C. 2 D. 3
45.有如下定义 int a[][3]={1,2,3,4,5,6,7,8,9,10};则数组a的行数是( C )。
A. 2 B. 3 C. 4 D. 无法确定的
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;i<=5;i++)p*=i;
(B)for(i=1;i<=5;){p=1;p*=i;i++;}
(C)i=1;p=1;while(i<=5){p*=i;i++;}
(D)i=1;p=1;do{p*=i;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.以下程序运行的结果是。
main()
{inta=2,b=3,c=2;
if(a
if(ac--;
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;
for(k=0;k<4;k++)
{if(k/2)break;
n[k]++;
}
printf(“%d\n”,n[++k]);
}
执行后输出的结果是。
(A)2(B)3(C)4(D)5
77.以下程序运行结果是。
main()
{inta[2][3]={1,3,5,4,7,6},i,j,b=a[0][0];
for(i=0;i<2;i++)
for(j=0;j<3;j++)
if(bb=a[i][j];
printf(“%d\n”,b);
}
(A)5(B)7(C)4(D)1
78.以下程序运行结果是。
main()
{chars[50]=”Iamastudent”,c;
inti,num=0,word=0;
for(i=0;c=s[i];i++)
if(c==’’)word=0;
elseif(word==0)
{word=1;num++;}
printf(“%d\n”,num);
}
(A)2(B)3(C)4(D)5
79.以下程序运行结果是。
#include
main()
{chars[50]=”1234567”,*p=s;
inti;
i=*(p+5)-*(p+2);
printf(“%d\n”,i);
}
(A)3(B)4(C)5(D)6
80.以下程序运行结果是。
main()
{inta[]={1,2,3,4,5,6,7,8,9},i,j,k;
for(i=0,j=8;i{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
80.以下程序运行结果是。
main()
{intx[]={1,2,3},s,*p=x,i;
for(i=0,s=1;i<3;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;
printf("%d,%d\n",*p,*(p+3));
}
16
2.补充以下缺省的程序,实现求两个整型数的和:
intsum(intx,inty)
{
intz;
z=x+y;
returnz;
}
main()
{
inta,b,s;
printf(“pleaseenteraandb:
”);
scanf(“%d%d”,&a,&b);
s=sum(a,b)
printf(“%d+%d=%d\n