C语言程序设计期末复习题学生用2.docx
《C语言程序设计期末复习题学生用2.docx》由会员分享,可在线阅读,更多相关《C语言程序设计期末复习题学生用2.docx(38页珍藏版)》请在冰豆网上搜索。
C语言程序设计期末复习题学生用2
C语言程序设计复习题
一、填空题
1、C语言中基本的数据类型有:
整型、实型、字符型。
。
2、C语言中普通整型变量的类型说明符为 int ,在内存中占 2字节,有符号普通整型的数据范围是 -32768~+32767 。
3、整数-35在机内的补码表示为 111111*********1 。
4、执行下列语句inta=8; a+=a-=a*a;后,a的值是 -112 。
5、有如下语句:
char A[]={”Iamastudent”};该字符串的长度是 14 ,A[3]= ‘m’ 。
6、符号”a”和’a’的区别是 ”a”是字符串常量,而’a’是字符常量 。
7、所谓“指针”就是 存放地址值的变量或常量,或者答地址 。
“&”运算符的作用是 取运算对象的地址 。
“*”运算符的作用是取指针变量所指的内容。
8、有如下输入语句:
scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应是 a=1,b=3,c=2 。
9.C语言的预处理语句以____#______开头。
10.表达式7+8>2&&25%5的结果是_________0______________。
11.下列程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。
int n=0,ch;
ch=getchar();
while(______ch!
=’\n’ ____________)
{ if(___ch>=’0’&&ch<=’9’______) n++;
c=getchar(); }
12.C语言中putchar(c)函数的功能是____将变量c中的字符显示到屏幕上________。
13.int*p的含义是_______指针变量p为整型___________________。
14.定义fp为文件型指针变量的定义方法为_______FILE*fp ______。
15.数组int a[3][4];共定义了___12____个数组元素。
16、C源程序是由_函数__构成的。
一个C程序一般由若干个函数构成,其中至少应包含主函数(mian()函数)。
因此,函数C程序的基本单位。
17、三种基本程序结构是顺序结构__、_选择结构__、循环结构__。
18、C语言的三个循环语句分别是while__、_do-while__、_for__。
19.表示“x≥y≥z”的C表达式是_x>=y&&y>=z。
20.表达式!
!
5的值是1__。
21、在C程序中,指针变量能够赋地址_值或者空(0或NULL)__值。
22.下列程序段的输出是_5__。
int*p,*q,k=5,j=6;
q=&k;p=q;q=&j;
printf("%d",*p);
23.下列程序段的输出是_58__。
intf(intx)
{staticy=1;
y++;x+=y;returnx;}
voidmain()
{intk;
k=f(3);
printf("%d%dn",k,f(k));
}
24、一个C程序总是从main()或主函数开始运行的。
25、三种基本程序结构是顺序结构__、_选择结构__、循环结构__。
26、一个char数据在内存中所占字节数为1,一个int数据在内存中所占字节数为2,一个long数据在内存中所占字节数为4,一个float数据在内存中所占字节数为4。
27、若有定义:
inta[]3[4]={{1,2}{0}{4,6,8,10}};则初始化后a[1][2]的值为
0,a[2][1]得到的值为6
28.在C语言中,函数分为3种类型,分别是主函数、库函数和自定义函数。
29.下列程序段的输出是_*#*#____。
main()
{intk;
for(k=1;k<5;k++)
{if(k%2)printf("*");elsecontinue;printf("#");}
}
30、下列程序的输出结果是:
Afterswap5,3。
swap(int*p,int*q)
{intt;t=*p;*p=*q;*q=t;}
voidmain()
{inta=3,b=5;swap(&a,&b);printf("Afterswap%d,%d",a,b);}
二、选择题
1.执行intx=2,y=3;后表达式x=(y==3)的值是(B)
A)0B)1
C)2D)3
2.在循环结构的循环体中执行break语句,其作用是(C)
A)结束本次循环,进行下次循环
B)继续执行break语句之后的循环体中各语句
C)跳出该循环体,提前结束循环
D)终止程序运行
3.以下程序运行结果是(A)
main()
{chars[]=”\’Address\’”;
printf(%d\n”,strlen(s));
}
A)9B)10
C)11D)12
4.以下程序运行结果是(C)
main()
{inta[]={2,4,6,8,10},y=1,x;
for(x=0;x<3;x++)y=y+a[x+1];
printf(“%d\n”,y);
}
A)17B)18
C)19D)20
5.设inta[][4]={0,0};则以下错误的描述是(D)
A)数组a的每个元素都可得到初值0
B)二维数组a的第一维大小为1
C)数组a的行数为1
D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素得不到初值0
6.以下程序运行结果是(C)
fun3(intx)
{staticinta=3;
a=a+x;
returna;
}
main()
{intk=2,m=1,n;
n=fun3(k);
n=fun3(m);
printf(“%d\n”,n);
}
A)3B)4
C)6D)9
7.以下不正确的描述是(D)
A)在函数外部定义的变量是全局变量
B)在函数内部定义的变量是局部变量
C)函数的形参是局部变量
D)局部变量不能与全局变量同名
8.C语言的简单数据类型包括(D)
A)整型、实型、逻辑型B)整型、实型、字符型、逻辑型
C)整型、字符型、逻辑型D)整型、实型、字符型
9.数学关系式x≤y≤z可用C语言的表达式表示为(A)
A)(x<=y)&&(y<=z)B)(x<=y)and(y<=z)
C)(x<=y<=z)D)(x<=y)&(y10.要使以下程序的输出结果为4,则a和b应满足的条件是(A)
main()
{ints,t,a,b;
scanf(“%d%d”,&a,&b);
s=t=1;
if(a>0)s=s+1;
if(a>b)t=s+t;
else
if(a==b)t=5;
elset=2*s;
printf(“%d\n”,t);
}
A)a>0并且aC)a>0并且a>bD)a<0并且a
11.下面程序的输出结果为(B)
main()
{inti;
for(i=100;i<200;i++)
{
if(i%5==0)continue;
printf(“%d\n”,i);
break;
}
}
A)100B)101
C)无限循环D)无输出结果
12.下列程序段的运行结果是(B)
inti=1,a[]={1,5,10,9,13,7};
while(a[i]<=10){a[i]=a[i]+2;i++;}
for(i=0;i<6;i++)printf(“%d”,a[i]);
A)271211139B)171211137
C)171211139D)17129137
13.以下语句把字符串“abcde”赋初值给字符数组,不正确的语句是(D)
A)chars[]=“abcde”;B)chars[]={’a’,’b’,’c’,’d’,’e’,’\0’};
C)chars[]={“abcde”};D)chars[5]=“abcde”;
14.下面程序段的运行结果是(A)
inta[2][3]={1,2,3},i,j;
for(i=0;i<2;i++)
for(j=0;j<3;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,
15、执行下面语句后,变量I的值是(C)。
for(I=1;I++<4;);
A)3B)4C)5D)不定
16、putchar函数可以向终端输出一个(D)。
A)整型变量表达式值B)实型变量值
C)字符串D)字符或字符型变量值
17、有一函数关系见下表:
x
y=
x<0
x-1
x=0
x
x>0
x+1
下面程序段中能正确表示上面关系的是(C)。
A)y=x+1;B)y=x–1;C)if(x<=0)D)y=x;
if(x>=0)if(x!
=0)if(x<0)if(x<=0)
if(x==0)if(x>0)y=x-1;if(x<0)
y=x;y=x+1;elsey=x;y=x–1;
elsey=x–1;elsey=x;elsey=x+1;elsey=x+1;
18、对for(表达式1;;表达式3)可理解为(B)
A)for(表达式1;0;表达式3)B)for(表达式1;1;表达式3)
C)for(表达式1;表达式1;表达式3)D)for(表达式1;表达式3;表达式3)
19、若i、j均为整型变量,则以下循环(D)
for(i=0,j=-1;j=1;i++,j++)
printf(“%d,%d\n“,i,j);
A)循环体只执行一次B)循环体一次也不执行
C)判断循环结束的条件不合法D)是无限循环
20、设j为int型变量,则下面for循环语句的执行结果是(B)
for(j=10;j>3;j--)
{if(j%3)j--;
--j;--j;
printf(“%d“,j);
}
A)63B)74C)62D)73
21、一个C程序的执行是从(A)。
A)本程序的main函数开始,到main函数结束
B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C)本程序的main函数开始,到本程序文件的最后一个函数结束
D)本程序文件的第一个函数开始,到本程序main函数结束
22、下面四个选项中,合法的用户标识符是(D)
A)P_#$B)2haC)gotoD)_ab
23、要把整数67523赋与整型变量I,则应说明I的类型是(B)
A)intB)longC)shortD)unsigned
24、已知intI;floatf;正确的表达式是(D)
A)(intf)%IB)int(f)%IC)int(f%I)D)(int)f%I
25、判断char型变量c1是否为小写字母的正确表达式是(D)
A)’a’<=c1<=’z’B)(c1>=a)&&(c1<=z)
C)98<=c1&&123>=c1D)c1>=’a’&&c1<=’z’
26、执行以下语句后b的值为(B)。
inta=5,b=6,w=1,x=2,y=3,z=4;
b=(a=w>x)&&(b=y>z);
A)6B)0C)1D)4
27、以下能正确地定义整型变量a,b和c并为其赋初值5的语句是(C)。
A)inta=b=c=5;B)inta,b,c=5;C)inta=5,b=5,c=5;D)a=b=c=5;
28、已知:
chara;intb;floatc;doubled;执行语句c=a+b+c+d;后,变量c的数据类型是(D)
A)int B)charC)floatD)double
29、已知字母A的ASCII码为65,以下程序段的输出结果是(C)
charc1=’A’,c2=’Y’;
printf(″%d,%d″,c1,c2);
A)65,90B)A,YC)65,89D)输出格式不合法
30、阅读以下程序,当输入数据的形式为:
25,13,10,正确的输出结果为(D)。
(“CR”表示回车)
main()
{intx,y,z;
scanf(“%d%d%d”,&x,&y,&z);
printf(“x+y+z=%d\n”,x+y+z);
}
A、x+y+z=48B、x+y+z=35C、x+z=35D、不确定值
31、以下错误的if语句是(C)
A)if(x>y);
B)if(x==y)x+=y;
C)if(x!
=y)scanf(“%d”,&x)elsescanf(“%d”,&y)
D)if(x32、阅读以下程序:
main()
{intx;
scanf(“%d”,&x);
if(x--<5)printf(“%d\n”,x);
elseprintf(“%d\n”,x++);
}
程序运行后,如果从键盘上输入5,则输出结果是(B)
A、3B、4C、5D、6
33、若intI=10; 执行下列程序后,变量I的正确结果是(D)
switch(I){case9:
I+=1;
case10:
I+=1;
case11:
I+=1;
default:
I+=1;}
A)10B)11C)12D)13
34、C语言中while与do---while语句的主要区别是(A)
A)do---while的循环体至少无条件执行一次
B)do---while允许从外部转到循环体内
C)do---while的循环体不能是复合语句
35、以下的for循环(B)
for(x=0,y=100;(y!
=123)&&(x<=3);x++);
A)执行3次B)执行4次C)循环次数不定D)是无限循环
36、执行”for(I=1;I++<4;);”后,变量I的值为(C)
A)3B)4C)5D)不定
37、以下程序段(C)
x=-2;
do
{x=x*x;}
while(!
x);
A是死循环B循环执行两次C循环执行一次D有语法错误
38、设x和y均为int型变量,则执行下面循环后,y的值为(C)。
for(y=1,x=1;y<=50;y++)
{if(x==10)break;
if(x%2==1)
{x+=5;continue;}
x-=3;
}
A)2B)4C)6D)8
39、以下程序的输出结果是(C)
main()
{intI,j,x=0;
for(I=0;I<2;I++)
{x++;
for(j=0;j<3;j++)
{if(j%3)continue;
x++;}
x++;
}
printf(“x=%d\n”,x);}
x=4B)x=8C)x=6D)x=12
40、以下程序的输出结果(D)
main()
{intx=10,y=10,I;
for(I=0;x>8;y=++I)
printf(“%d,%d”,x--,y);}
A)10,19,2B)9,87,6C)10,99,0D)10,109,1
41、以下正确的描述是(B)。
在C语言程序中:
A)函数的定义可以嵌套,但函数的调用不可以嵌套
B)函数的定义不可以嵌套,但函数的调用可以嵌套
C)函数的定义和函数的调用均不可以嵌套
D)函数的定义和函数的调用均可以嵌套
42、以下正确的说法是(B)。
建立函数的目的之一是:
A)提高程序的执行效率B)提高程序的可读性C)减少程序的篇幅D)减少程序文件所占内存
43、以下正确的说法是(B)。
A)用户若需调用标准库函数,调用前必须重新定义
B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义
C)系统根本不允许用户重新定义标准库函数
D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调
44、下列定义不正确的是(C)
A)#definePI3.141592B)#defineS354
C)intmax(intx,inty);D)staticcharc;
45、下列程序运行结果是(A)
#defineP3
#defineS(a)P*a*a
main()
{intar;
ar=S(3+5);
printf(“%d”,ar);}
A)192B)29C)27D)25
46、以下能对二维数组a进行正确初始化的语句是(B)。
A)inta[2][]={{1,0,1},{5,2,3}}B)inta[][3]={{1,2,3},{4,5,6}}
C)inta[2][4]={{1,2,3},{4,5},{6}}D)inta[][3]={{1,0,1}{},{1,1}}
47、下列描述中不正确的是(C)
A)字符型数组中可以存放字符串
B)可以对字符型数组进行整体输入、输出
C)可以对整型数组进行整体输入、输出
D)不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值
48、设有定义”inta=3,b,*p=&a;”,则下列语句中使b不为3的语句是(B)
A)b=*&a;B)b=*a;C)b=a;D)b=*p;
49、若有说明:
inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是(B)
A、i=*p;B、*p=*&j;C、i=&j;D、i=**p;
50、C语言程序中每个语句和数据定义的最后必须有一个(A)
A分号B逗号C空格D冒号
51.设intx=1,y=1;表达式(!
x++||y——)的值是(B)
A.0 B.1 C.2 D.-1
52.main()
{ intn;
(n=6*4,n+6),n*2;
printf(“n=%d\n”,n);
} 此程序的输出结果是(B)
A.30 B. 24 C. 60 D. 48
53.若有如下定义,则(D)是对数组元素的正确的引用。
int a[10],*p;
p=a; p=a; p=a; p=a;
A. *&a[10] B. a[11] C. *(p+10) D.*p
54.设整型变量n的值为2,执行语句“n+=n-=n*n;”后,n的值是(C)
A. 0 B. 4 C. -4 D. 2
55.以下不能正确定义二维数组的语句是(D)
A.inta[2][2]={{1},{2}}; B.inta[][2]={1,2,3,4};
C.inta[2][2]={{1},2,3}; D.inta[2][]={{1,2},{3,4}};
56.(C)程序段的功能是将变量u、s中的最大值赋给变量t.
A. if(u>s)t=u;t=s; B. t=u; if(t) t=s;
C. if(u>s)t=s;elset=u; D. t=s;if(u) t=u;
57.下列程序段的输出结果是(A) .
voidmain()
{ intk;
for(k=1;k<5;k++〉
{ if(k%2!
=0)printf(“#”);
else printf(“*”);
}
}
A.#*#* B.*#*# C. ## D.以上都不对
58.设变量定义为inta[3]={1,4,7},*p=&a[2],则*p的值是(C) .
A.&a[2] B.4 C.7 D.1
59.能正确表示a和b同时为正或同时为负的逻辑表达式是(D).
A.(a>=0||b>=0)&&(a<0||b<0) B.(a>=0&&b>=0)&&(a<0&&b<0)
C.(a+b>0)&&(a+b<=0) D.a*b>0
60.C语言中,合法的字符型常数是(A).
A.‘A’ B.“A” C.65 D.A
61.设有数组定义:
chararray[]=“China”;则数组所占的空间是(C).
A.4个字节 B.5个字节 C.6个字节 D.7个字节
62.若变量c为c