资源描述
专升本C语言历年考试题及答案
第一章与第三章练习题
1. 一个C程序的执行是从_____。
A)本程序的main函数开始,到main函数结束
B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C)本程序的main函数开始,到本程序文件的最后一个函数结束
D)本程序文件的第一个函数开始,到本程序main函数结束
2. 以下叙述正确的是:
A)在C程序中,main函数必须位于程序的最前面
B)C程序的每行中只能写一条语句
C)C语言本身没有输入输出语句
D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误
3. 以下叙述不正确的是。
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面
4. C语言规定:在一个源程序中,main函数的位置 。
A)必须在最开始
B)必须在系统调用的库函数的后面
C)可以任意
D)必须在最后
5. 一个C语言程序是由
A)一个主程序和若干子程序组成 B)函数组成
C)若干过程组成 D)若干子程序组成
6. 若x,i,j和k都是int型变量,则执行下面表达式后x的值为
x=(i=4,j=16,k=32)
A)4 B)16 C)32 D)52
7. 假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是:
A)7 B)8 C)6 D)2
8. C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符
A)必须为字母 B)必须为下划线
C)必须为字母或下划线 D)可以是字母,数字和下划线中任一种字符
9. 若有代数式3ae/bc,则不正确的C语言表达式是:
A) a/b/c*e*3 B)3*a*e/b/c
C)3*a*e/b*c D)a*e/c/b*3
10. 以下不正确的叙述是
A)在C程序中,逗号运算符的优先级最低
B)在C程序中,APH和aph是两个不同的变量
C)若a和b类型相同,在执行了赋值表达式a=b后b中的值将放人a中,而b中的值不变。
D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值。
11. 以下正确的叙述是:
A)在C程序中,每行中只能写一条语句
B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C)在C程序中,无论是整数还是实数,都能被准确无误地表示
D)在C程序中,%是只能用于整数运算的运算符
12. 以下符合C语言语法的赋值表达式是
A)d=9+e+f=d+9 B) d=9+e,f=d+9
C)d=9+e=e++,d+9 D)d=9+e++=d+7
13. 已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'十'6'一'3';后,c2中的值为
A)D B)68 C)不确定的值 D)C
14. 在C语言中,要求运算数必须是整型的运算符是。
A) / B) ++ c) != D)%
15. 若以下变量均是整型,且num=sum=7;则执行表达式sUM=num++,sUM++,++num后sum的值为
A) 7 B) 8 C) 9 D) 10
16. 在C语言中,int、char和short种类型数据在内存中所占用的字节数
A)由用户自己定义 B)均为2个字节
C)是任意的 D)由所用机器的机器字长决定
17. 若有说明语句:char c='\72'则变量c
A)包含1个字符 B)包含2个字符
C)包含3个字符 D)说明不合法,c的值不确定
18. 若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是
A)2.500000 B)2.7500OO c) 3.500000 D) 0.000000。
19. sizeof(float)是:
A)一个双精度型表达式 B)一个整型表达式
C)一种函数调用 D)一个不合法的表达式
20. 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为
A)int B) float C) double D)不确定
21. 在C语言中, char型数据在内存中的存储形式是:
A)补码 B)反码 C)原码 D)ASCII码
22. 表达式18/4*sqrt(4.0)/8值的数据类型为:
A) int B)float C)double D)不确定
23. 设C语言中,一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为:
A) 0~255 B) 0~32767 C) 0~65535 D) 0~2147483647
24. 设有说明: char w; int x; f1oat y; double z;则表达式w* x+z一y值的数据类型为:
A)float B)char C)int D)double
25. 若有以下定义,则能使值为3的表达式是:
int k= 7,x =12;
A) x%=(k%= 5) B) x%=(k一k%5)
C) x%=k- k%5 D) (x%=k)一(k%=5)
26. 设以下变量均为int类型,则值不等于7的表达式是
A) (x= y= 6, x+y,x+1) B)(x= y= 6,x+y,y+1)
C) (x= 6,x+1,y= 6,x+y) D) (y=6,y+l,x = y,x+1)
第四、五章复习题
27. putchar函数可以向终端输出一个:
A)整型变量表达式值
B)实型变量值
C)字符串
D)字符或字符型变量值
28. printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按:
A)从左起输出该字串,右补空格
B)按原字符长从左向右全部输出
C)右对齐输出该字串,左补空格
D)输出错误信息
29. printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。如果字符串长度小于5,则输出按方式。
A)从左起输出该字串,右补空格
B)按原字符长从左向右全部输出
C)右对齐输出该字串,左补空格
D)输出错误信息
30. 若x ,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是:P83
A) scanf(" %d%lx,%le",&x,&y,&z);
B) scanf("%2d * %d%lf"&x,&y,&z );
C) scanf("%x %*d%o",&x,&y);
D) scanf("%x%o%6.2f",&x,&y,&z);【scanf无精度】
31. 已有如下定义和输入语句 ,若要求a1,a2,c1,c2值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是
int a1,a2; char c1,c2;
scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
A)10A 20B< CR> (空格有没有都行,10和A之间不能有空格,否则c1为空格)
B)10 A 20 B<CR>
C)10A20<CR>
D)10A20 B<cR>。
32. 已有定义int x; f1oat y;且执行scanf("%3d%f",&x,&y);语句,若从第一列开始输入数据12345 678(回车),则x 的值为
A)12345 B)123 C) 45 D) 345
33. 已有定义int x; f1oat y;且执行scanf("%3d%f",&x,&y);语句,若从第一列开始输入数据12345 678(回车),则y 的值为:
A)无定值B)45.0000 C) 678.000000 D) 123.00000
34. 已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A,B,当从第一列开始输入数据时,正确的数据输入方式是:
int a1,a2; char c1,c2;
scanf("%d%d",&a1,&a2);
scanf("%c%c",&c1,&c2);
A) 1020AB<CR> B)10 20<CR>AB<CR>
C)10 20 AB<CR> D)10 20AB<CR>
35. 已有程序段和输入数据的形式如下,程序中输入语句的正确形式应当为
main()
{int a;float f;
printf("\nInput number:");
输入语句
printf("\nf=%f,a= %d\n ,f,a);
}
Input number: 4.5 2<CR>
A )scanf("%d,%f",&a,&f); B)scanf("%f,%d",&f,&a)
C)scanf("%d%f",&a,&f); D)scanf("%f%d",&f,&a);
36. 根据定义和数据的输入方式,输入语句的正确形式为:
已有定义: float fl,f2;
数据的输入方式:4.52
3. 5
A)scanf("%f,%f",&f1,&f2); B)scanf("%f%f",&f1,&f2 );
C)scanf("%3.2f%2.1f",&f1,&f); D)scanf("%3.2f%2.1f",&f1,&f2);
37. 阅读以下程序,当输入数据的形式为25,13,10<CR>正确的输出结果为:
main()
{int x,y,z;
scanf("%d%d%d",&x,&y,&z );
printf("x+y+z=%d\n” ,x+y+z);。
}
A)x +y+z=48 B)x +y+z=35
C)x +z=35 D)不确定值
38. 阅读以下程序,若运行结果为如下形式 ,输入输出语句的正确内容是:
main()
{int x; float y;printf("enter x,y :")
输入语句 ;
输出语句;
}
输入形式 enter x,y: 2 3.4
输出形式 x+y=5.40
A)scanf("%d,%f",&x,&y);printf("\nx+y= %4.2f",x+y);
B)scanf("%d%f",&x,&y );printf("\nx+y=%4.2f",x+y);
C)scanf("%d%f",&x,&y); printf("\nx+y=%6.lf",x+y);
D)scanf("%d%3.1f",&x,&y );printf("\nx十y=%4.2f",x+y);
39以下说法正确的是:
A)输入项可以为一实型常量,如scanf("%f",3.5);
B)只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d,b=%d");
C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",&f);
D)当输入数据时,必须指明变量的地址,如scanf("%f",&f);
40.根据下面的程序及数据的输入方式和输出形式,程序中输入语句的正确形式应该为:
main()
{char ch1 ,ch2 ,ch3;
输入语句
printf("%c%c%c",ch1,ch2,ch3);}
输入形式: A B C
输出形式: AB(空格)
A) scanf("%c%c%c",&ch1,&ch2,&ch3);
B) scanf("%c,%c,%c", &ch1,&ch2, &ch3);
C) scanf("%c %c %c",&ch1,&ch2,&ch3);
D) scanf("%c%c",&ch1,&ch2,&ch3);
41. 有输入语句: scanf("a=%d,b= %d,c=%d",&a,&b,&c);为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式应当是
A)132(回车)
B)1,3,2(回车)
C)a=1b=3c=2(回车)
D)a=1,b =3,c =2(回车)
42. 以下能正确地定义整型变量a,b和c 并为其赋初值5的语句是
A)int a=5,b=5,c= 5; B) int a,b, c= 5;
C)a= 5,b=5,c=5; D) a= b= c=5;
43.已知ch是字符型变量,下面不正确的赋值语句是
A)ch='a+b'; B)ch='\0'; C)ch='7'+'9'; D) ch=5+9;
44.若有以下定义,则正确的赋值语句是:
int a,b;float x;
A) a=1,b=2, B)b++; C) a= b= 5 D) b= int(x);
45.设x 、y均为f1oat型变量,则以下不合法的赋值语句是
A)++x; B)y=(x%2)/10; C) x*=y+8; D)x=y=0;
46.x,y,z均为int型变量,则执行语句x=(y=(z=10)+5)-5;后,x 、y 和z的值是:
A) x=10 B) x=10 C) x=10 D) x=10
y=15 y=10 y=10 y=5
z=10 z=10 z=15 z=10
47. 逻辑运算符两侧运算对象的数据类型。
A)只能是0或1
B)只能是0或非0正数
C)只能是整型或字符型数据
D)可以是任何类型的数据
48. 以下关于运算符优先顺序的描述中正确的是:
A)关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符
B)逻辑运算符< 关系运算符< 算术运算符< 赋值运算符
C)赋值运算符< 条件运算符<逻辑与运算符< 关系运算符< 算术运算符
D)算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符
49.下列运算符中优先级最高的是:
A)< B)十 C)&& D)!=
50.能正确表示"当x 的取值在[1,10]和[200,210]范围内为真,否则为假"的表达式是一一一。
A) (x>=1) &&(x<=10) &&(x> = 200) &&(x<=210)
B) (x>=1) || (x<=10) ||(x>=200) ||(x<=210)
c) (x>=1) &&(x<=10)||(x>= 200) &&(x<=210)
D) (x > =1)||(x< =10) && (x> = 200)||(x<=210)
51.判断char型变量ch是否为大写字母的正确表达式是一一一。
A)' A' <=ch<='z' B)(ch> = 'A')&(ch<=' z' )
C)(ch>='A' )&&(ch<='Z') D)(' A' < = ch)AND('z'> = ch)
52.设x,y 和z是int型变量,且x = 3,y= 4,z= 5,则下面表达式中值为0的是
A)'y'&&'y'
B)x < =y
C) x||y+z&&y-z
D) !((x<y)&&!z||1)
53.已知x =43,ch='A',y=0则表达式(x > = y && ch<'B'&&!Y) 的值是
A)0 B)语法错 C)1 D)"假"
54.若希望当A的值为奇数时,表达式的值为"真",A的值为偶数 表达式的值
为"假"。则以下不能满足要求的表达式是:
A) A%2= =1 B)!(A%2 = =0) C)!(A%2) D) A%2
55.设有 int a = 1,b=2,c =3, d =4, m=2, n=2;
执行(m= a>b)&&(n=c>d)后n的值为(执行m=a>b时,由于m=a>b且为与运算为假,所以不必执行n=c>d,所以m为0,而n为原值。)
A)1 B )2 C)3 D)4
56.判断char型变量c1是否为小写字母 正确表达式为:
A)' a' <=cl<=' z' B) (cl> = a)&&(cl<=z)
C)(' a' >=cl)||(' z' < = cl) D)(c1>='a')&&(cl<='z')
57.以下程序的运行结果是:
#include "stdio.h"
main()
{int a,b,d= 241;
a=d/100 % 9
b= (-1)&&(-1);
printf("%d,%d",a ,b);
}
A)6,1 B)2,1 C) 6,0 D)2,0
58.执行以下语句后a的值为:
int a,b,c;
a= b= c= 1;
++a||++b&&++c
A)错误 B) 0 C) 2 D) 1
59. 执行以下语句后b 的值为:
int a=5,b=6,w=1,x=2,y=3,z=4;
(a=w>x)&&(b=y>z);
A) 6 B) 0 C) 1 D) 4
60.以下不正确的if语句形式是:
A)if(x>y && x!=y);
B)if(x= =y) x+=y ;
C)if(x != y)scanf("%d",&x )else scanf("%d",&y);
D)if(X<Y) {X++;Y++;}
61.下列运算符中优先级最低的是:
A)?: B)&& c)+ D) !=
62.以下if语句语法正确的是一一一。
A)if(x>0)
printf("%f",x)
else printf("%f",- -x);
B) if (x>0)
{x=x+y;printf("%f",x);}
else printf("%f",-x);
C) if(x>0)
{x=x+y; prinrf("%f",x);};
else printf("%f",-x);
D) if(x > 0)
{ x = x +y;printf("%f",x)}
else printf("%f",-x);
63.请阅读以下程序:
main()
{int a=5,b=0,c=0;
if(a=b+c) printf("***\n ");
else printf("$$$\n");
以上程序 :
A)有语法错不能通过编译 B)可以通过编译但不能通过连接
C)输出*** D)输出$$$
64. 以下程序的运行结果是 :
main()
{int m=5;
if(m++> 5) printf(" %d\n",m);==printf(“%d\n”,m++)
e1se printf("%d\n",m- - );
}m++=6,printf输出时先输出m的值,然后对m进行自加或自减运算。
A)4 B)5 C)6 D)7
65. 当a=1,b=3,c=5,d=4 ,执行完下面一段程序后x 的值是 :
if(a<b)
if(c<d)x=1;
else
if(a<c)
if(b<d)x=2;
else x= 3;
else x=6;
else x=7;
A)18 B)2 C)3 D)6
66. 以下程序的输出结果是:
main()
{int a=100,x =10,y=20,okl=5,ok2=0;
if (x<y)
if(y ! =10)
if(!okl) a=1;
else
if(ok2) a=10;
a=-1:
printf( "%d\n",a )
}
A) 1 B) 0 C)一1 D)值不确定
67. 以下程序的输出结果是:
main()
{int x= 2,y= 一1,z=2;
if (x<y)
if(y<0) z= 0;
else z+ =1;
printf("%d\n",z);
}
A)3 B )2 C)1 D) 0
68. 为了避免在嵌套的条件语句If一else中产生二义性,C语言规定else子句
总是与( )配对。
A)缩排位置相同的if B)其之前最近的if
C) 之后最近的if D)同一行上的if
69. 以下不正确的语句为:
A) if(x>y);
B) if (x= y) &&(x! = 0) x+= y;
C) if(x!= y)scanf("%d",&x); else scanf("%d",&y);
D)if(x< y){x++ ;y十十;}
70. 请阅读以下程序:
#include<stdio. h>
main()
{float a,b
scanf("%f",&a);
if (a<10.0) b=1.0/x;
else if((a<0.5)&&(a!=2.0))b= 1.0/(a十2.0);
else if(a<10.0) b= 1.0/x ;
else b=10.0;
printf("%f\n",y);
}
若运行时输入2.0(回车),则上面程序的输出结果是:
A)0.000000 B)0.500000 C) 1. 000000 D) 0.250000
71. 若有条件表达式(exp) ? a++:b--,则以下表达式中能完全等价于表
达式(exp)的是:
A) (exp==0) B) (exp!=0)
C) (exp== 1) D) (exp!=1)
条件表达式究竟执行那一个,取决于exp的值。
exp的值有两种结果true(非0)或false(0)
exp为true,exp!=0同样为true;
exp为false,exp!=0也为false。
所以选B。
C有一定的迷惑性,exp为true,可能是2,3等等,不一定是1的
72. 若运行时给变量x 输入12,则以下程序的运行结果是:
main()
{int x,y;
scanf("%d",&x);
y=x > 12?x+10: x一12;
printf("%d\n",y);
}
A)0 B)22 C)12 0)10
73. 以下程序的运行结果是:
main()
{int k= 4,a=3,b=2,c=1;
printf("\n %d\n",k< a ? k:c<b ?c :a);
}
A)4 B )3 C)2 D)1
74. 执行以下程序段后、变量a,b,c的值分别是一。
int x=10,y=9;
int a,b,c;
a =(- -x(9) = = y++(9))?- -x(8):++y(未执行) ;
b = x ++(8);
c = y(10);
A)a=9,b= 9,c= 9 B )a=8,b=8,c=10
C)a=9,b= 10,c=9 0)a=1,b= 11,c=10
75. 若w,x,y,z,m均为int型变量,则执行下面语句后的m值是:
w= 1;x = 2;y= 3;z=4;
m=(w<y)?w:x;
m= (m<y)? m:y;
m=(m<z)?m:Z;
A)1 B )2 C)3 D)4
76. 若w=1,x = 2,y= 3,z=4,则条件表达式w<x?w:y<z?y:z的值是:
A)4 B)3 C)20 D)1
第六章练习题
77. 设有程序段
int k=10;
while (k=0) k= k—1;
则下面描述中正确的是
A) while循环执行10次 B)循环是无限循环
C)循环体语句一次也不执行 D)循环体语句执行一次
78. 有以下程序段
int x=0,s=0;
while (! x!= 0) s+=++x;
printf("%d",s);
则
A)运行程序段后输出0 B)运行程序段后输出1
C)程序段中的控制表达式是非法的 D)程序段执行无限次
79. 语句while(!E)中的表达式!E等价于:
A) E==0 B) E!=1 C) E!=0 D) E==1
80. 下面程序段的运行结果是
a=1;b= 2;c=2;
while(a<b<c) { t= a;a= b; b=t; c- -;}
printf("%d,%d,%d",a,b,c);
A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,1
第一次循环a<b成立,所以(a<b)=1<c=2,执行
第二次循环a=2,b=1,c=1,a<b不成立,所以(a<b)=0<c=1,再执行
第三次循环a=1,b=2,c=0,a<b成立,(a<b)=1不小于c,循环终止
81. 下面程序段的运行结果是:
x = y= 0;
while(x<15) y++,x + = ++y;
printf("%d,%d",y,x);
A) 20,7 B)6,12 c) 20,8 D)8,20
82. 下面程序段的运行结果是
n=0;
while(n++<=2); printf("%d",n);
A) 2 B) 3 C) 4 D)有语法错
n=2时n++为2小于等于2,为真,继续执行,此时等于3(n++是先用后自身加1)然后执行一次n++为3结束了循环,n变为4。(++n是自身先加1后用n)
83. 下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,请选择填空:
#indude <Stdio.h>
main()
{int a,b,t;
scanf("%d%d",&a,&b);
while( 【1】 )
{if(a>b)
{t=a;a=b;b=t;}
printf("%d,%d",a,b);
scanf("%d%d",&a,&b);}
}
【1】 A) !a=b B) a!=b C) a= =b D) a=b
84. 下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空:
#indude "stdio.h"
main()
{int m=0,n=0;
char c;
while((【1】)!='\n')
{ if(c>='A' && C<='Z') m++ ;
if(c>='a' && c<='z') n++; }
printf("%d\n", m<n? n:m); }
1】 A) c=putchar() B) getchar() C)c=getchar() D) scanf("%c",c)
85. 下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,z 变成B.请选择填空。
#include "stdio.h"
main()
{ char c;
while((c=getchar())!='\n')
{if(c>= 'a'&& c<='z')
c - = 30;
if(c>'z' && c<='z'+ 2)
【2】;
printf(" %c",c);}
}
【2】A) c='B' B) c='A' C) c-=26 D) c=c+26
86. 下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择填空。
#include <stdio.h>
main()
{int a,max= 0;
scanf("%d",&a)
while(【1】)
{if(max<a) max= a;
scanf("%d",&a); }
printf("%d" ,max );}
【1】 A) a==o B)a C) !a = = 1 D)!a
87. 下面程序的运行结果是。
#include<stdio.h >
main()
{ int num= 0;
while(num<= 2)
{num++ ;
printf("%d\n", num);}
}
A)1 B ) 1 c)1 D)1
2 2 2
3 3
4
88. 以下程序段
x= -1;
do
{x=x*x;}
while(!x);
A)是死循环 B)循环执行二次
C)循环执行一次 D)有语法错误
89. 以下描述中正确的是:
A)由于do一while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B) do一while循环由do开始,用while结束,在while(表达式)后面不能写分号
C)在do一while循环体中,一定要有能使while后表达式值变为零("假")的操作
D)do一while循环中,根据情况可以省略while
90. 若有如下语句
int x=3;
do { printf(" %d\n",x -=2);} while(!(--x));
则上面程序段
A)输出的是 1 B)输出的是1和-2
C)输出的是3和0 D)是死循环
91. 下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。
#include<stdio. h>
main()
{int n,sum=0;
n=2345
do{ sum=sum+(n%10)*n%10);
n=【2】;
}while(n);
printf("sum=%d",sum);}
【2】 A) n/1000 B)n/100 C) n/10 D) n%10
92. 下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环。请选择填空。
# include<stdio. h>
main()
{1ong int num;
scanf("%ld",&num);
do { if( 【1】) printf("%ld",num);
scanf("%ld",&num);
}while(!num==0);}
【1】__num/100%10____
93. 下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除。请选择填空。
#include <stdio.h>
main()
{int i=0,j,k;
do{ i++;k=316-13*i;}
while(【1】);j=k/11;
printf(" 316=13* %d+11*%d",i,j);
}
【1】A)k/11 B) k%11 C) k/11==0 D) k/11== 0
94. 下面程序的运行结果是:
#indude<stdio.h>
main()
{int y=10;
do{y--;}
while(--y);
printf("%d\n",y--);
}
A)一1B) 1 C)8 D) 0
95. 若运行以下程序时,从键盘输入ADescriptor<CR>(CR)表示回车),则下面程序的运行结果是:
#include<stdio.h>
main()
{ char c;
int v0=0,v1=0,v2=0;
do{
switch(c=getchar())
{case 'a':case 'A' :
case 'e':case
展开阅读全文