专科C语言模拟一含答案.docx
《专科C语言模拟一含答案.docx》由会员分享,可在线阅读,更多相关《专科C语言模拟一含答案.docx(13页珍藏版)》请在冰豆网上搜索。
专科C语言模拟一含答案
一、单选题:
(每题1.5分,共54分)
1、下列选项中,是C语言提供的合法的关键字的是( )
A.swicth
B.cher
C.default
D.Case
答案:
C
2、下列叙述不正确的是( )
A.在c程序中,%是只能用于整数运算的运算符
B.在C程序中,无论是整数还是实数,都能正确无误地表示
C.若a是实型变量,c程序中a=20是正确的,因此实型变量允许被整型数赋值
D.在C程序中,语句之间必须要用分号“;”分隔
答案:
B
3、将三个数排序需要比较______次。
A.2
B.3
C.4
D.不确定
答案:
B
4、在C语言中,不正确的int类型的常数是
A.32768
B.0
C.037
D.0xAF
答案:
A
5、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是
A.INPUTx、y、z;
B.scanf("%d%d%d",&x,&y,&z);
C.scanf("%d%d%d",x,y,z);
D.read("%d%d%d",&x,&y,&z);
答案:
B
6、C语言中最简单的数据类型包括:
__
A.整型,实型,逻辑型
B.整型,字符型,逻辑型
C.整型,实型,字符型
D.整型,实型,逻辑型,字符型
答案:
C
7、下面四个选项中,均是不合法的浮点数的选项是
A.160.0.12e3
B.1232e4.2.e5
C.-.18123e40.0
D.-e3.2341e3
答案:
B
8、下面正确的字符常量是
A."c"
B.'\\''
C.'W'
D.''
答案:
C
9、下面四个选项中,均是不正确的八进制数或十六进制数的选项是
A.0160x8f018
B.0abc0170xa
C.010-0x110x16
D.0a127ff-123
答案:
D
10、若变量a、i 已正确定义,且i已正确赋值,合法的语句是
A.a==1
B.++i;
C.a=a++=5;
D.a=int(i);
答案:
B
11、设int a=12,则执行完语句a+=a-=a*a后,a的值是_____
A.522
B.264
C.144
D.-264
答案:
D
12、设有如下定义:
int a=1,b=2,c=3,d=4,m=2,n=2;
则执行表达式:
(m=a>b)&&(n=c>d)后,n的值为
A.1
B.2
C.3
D.0
答案:
B
13、设x、y、z和k都是int型变量,则执行表达式:
x=(y=4,z=16,k=32)后,x的值为______。
A.4
B.16
C.32
D.52
答案:
C
14、设以下变量均为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+1,x=y,x+1)
答案:
C
15、设x为int型变量,则执行以下语句后,x的值为
x=10; x+=x-=x-x;
A.10
B.20
C.40
D.30
答案:
B
16、下面的程序( )。
#include
main()
{int x=3,y=0,z=0;
if(x=y+z)printf(”* * * *”);
else printf(”####”);
}
A.有语法错误不能通过编译
B.输出****
C.可以通过编译,但是不能通过连接,因而不能运行
D.输出####
答案:
D
17、设a、b、C、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,
则逻辑表达式(m=a > b)&&(n=c > d)运算后,n的值为:
A.0
B.1
C.2
D.3
答案:
C
18、为表示关系X≥Y≥Z应使用C语言表达式:
__
A.(X>=Y)&&(Y>=Z)
B.(X>=Y)and(Y>=Z)
C.(X≥Y≥Z)
D.(X≥Y)&(Y≥Z)
答案:
A
19、为表示关系x≥y≥z,应使用C语言表达式__________.
A.(x>=y)&&(y>=z)
B.(x>=y)AND(y>=z)
C.(x>=y>=z)
D.(x>=y)&(y>=z)
答案:
A
20、若有定义:
float w; int a, b; 则合法的switch语句是
A.switch(w){case1.0:
printf("*\n");case2.0:
printf("**\n");}
B.switch(a);{case1printf("*\n");case2printf("**\n");}
C.switch(b){casea:
printf("*\n");default:
printf("\n");caseb:
printf("**\n");}
D.switch(a+b){case1:
printf("*\n");case2:
printf("**\n");default:
printf("\n");}
答案:
D
21、已知 int x=10,y=20,z=30;以下语句执行后x,y,z的值是
if(x>y)
z=x;x=y;y=z;
A.x=10,y=20,z=30
B.x=20,y=30,z=30
C.x=20,y=30,z=10
D.x=20,y=30,z=20
答案:
B
22、以下程序的输出结果是
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
答案:
B
23、请阅读以下程序:
.
#include
main()
{float x,y;
scanf("%f",&x);
if(x<0.0)y=0.0;
else if((x<5.0)&&(x!
=2.0))
Y=1.O/(x+2.0);
else if(x<10.0)Y=1.O/x;
else y=10.0;
printf(”%f\n”,y);
}
若运行时从键盘上输入2.0(表
A.0.000000
B.O.250000
C.O.500000
D.1.000000
答案:
C
24、设有程序段
int k=10;
while(k=0) k=k-1;
则下面描述中正确的是________
A.while循环执行10次
B.循环是无限循环
C.循环体语句一次也不执行
D.循环体语句执行一次
答案:
C
25、执行语句 for(i=1;i++ < 4;); 后变量 i 的值是
A.3
B.4
C.5
D.不定
答案:
C
26、下面程序段的运行结果是_________
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
27、以下程序的输出结果是
main()
{ int i, a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
}
A.258
B.741
C.852
D.369
答案:
C
28、下面程序的输出结果是( )。
#include
main()
{int k,j,m;
for(k=5;k>=1;k--)
{m=0:
for(j=k;j<=5;j++)
m=m+k*j;
}
printf(”%d\n”,m);
}
A.124
B.25
C.36
D.15
答案:
D
29、若二维数组a有m列,则在a[i][j]之前的元素个数为( )。
A.j*m+i
B.i*m+j
C.i*m+j-1
D.i*m+j+1
答案:
B
30、下列程序的输出结果是
main()
{ static int s[][3]={{1,2,3},{4,5,6}};
int t;
t=(s[0][0], s[1][1],s[0][1]+s[1][2]);
printf("%d \n",t);
}
A.5
B.6
C.7
D.8
答案:
D
31、设有数组定义:
char array[]=”China”;,则数组array所占的空间为( )。
A.4个字节
B.5个字节
C.6个字节
D.7个字节
答案:
C
32、以下程序的输出结果是
#define f(x) x*x
main( )
{ int a=6,b=2,c;
c=f(a) / f(b);
printf("%d \n",c);
}
A.9
B.6
C.36
D.18
答案:
C
33、以下程序的输出结果是
main( )
{ char ch[3][4]={"123","456","78"}, *p[3]; int i;
for(i=0;i<3;i++) p[i]=ch[i];
for(i=0;i<3;i++) printf("%s",p[i]);
}
A.123456780
B.123456780
C.12345678
D.147
答案:
C
34、整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是
A.x||y
B.x|y
C.x&y
D.x^y
答案:
D
35、以下只有在使用时才为该类型变量分配内存的存储类说明是
A.auto和static
B.auto和register
C.register和static
D.extern和register
答案:
C
36、下述程序的输出结果是( )。
#include
long fun(int n)
{long s;
if(n==1||n=:
2)
s=2:
else
s=n+fun(n-1);
retum s;
}
main()
{
printf(”\n%ld”,fun(4));
} .
A.7
B.8
C.9
D.10
答案:
C
填空题:
(每题2分,共26分)
1、C语言中最简单的数据类型是____________、____________、
______________.
答案:
整型、实型、字符型
2、设C语言中,一个int型数据在内存中占2个字节,则int型数据的取值范围为_______
答案:
-32768至32767
3、执行下列语句后x的值是________.
X=y=z=5;
X=y==z;
答案:
14
4、在C语言中,输入操作是由库函数________完成的,输出操作是由库函数________完成的。
答案:
scanf,printf
5、若从键盘输入58,则以下程序输出的结果是——。
#include
main()
{inta;
scanf(”%d”,&a);
if(a>50)prinff(”%d”,a);
if(a>40)prinff(”%d”,a);
if(a>30)printf(”%d”,a);
}
答案:
585858
6、当a=3,b=2,c=1时,表达式f=a>b>c的值是_________
答案:
0
7、当a=5,b=4,c=2时,表达式a>b!
=c的值是____________
答案:
1
8、以下程序的输出结果是——。
#include
main()
{intx=2,y=-1,z=2;
if(x
if(y
elsez+=1:
printf(”%d\n”,z);
}
答案:
13
9、程序的功能:
从键盘输入若干学生的成绩,统计并输出最高成绩和
最低成绩,当输入负数时结束输入
main()
{floatx,amax,amin;
scanf("%f",&x);
amax=x;
amin=x;
while__1__
{if(x>amax)amax=x;
if(__2__)amin=x;
scanf("%f",&x);
}
printf("\namax=%f\namin=%f\n",amax,amin);}
答案:
x>=0.0或x>=0或!
(x<0)或!
(x<0.0),x
10、以下程序的功能是:
从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。
请填空。
main()
{floatx[1000],sum=0.0,ave,a;
intn=0,i;
printf("Entermark:
\n");scanf("%f",&a);
while(a>=0.0&&n<1000)
{sum+______________;x[n]=__________________;
答案:
=a
a
sum/n
x[i]
11、把数组元素按顺序存放的过程称为_________.
答案:
排序
12、以下程序的输出结果是___________。
main()
{chars[]="abcdef";
s[3]=‘\0';
printf("%s\n",s);
}
答案:
abc
13、以下函数用以求x的y次方,请填空。
doublefun(doublex,inty)
{
inti:
doublez=1.0:
for(i-1;i_________;i++)
z=________;
returnz:
}
答案:
<=yz*x
程序设计题:
(请在以下3题中任选2题作答,若3道全部解答,以前2道为准,每题10分,共20分)
1、一个数如果恰好等于它的所有真因子之和,这个数就称为“完数”。
例如,6的真因子为1,2,3,而6=1+2+3,因此,6是“完数”。
求[1,1000]之间的最大完数。
答案:
#include
main()
{
inti,j;
intSum,Max=0;
for(i=0;i<=1000;i++)
{
Sum=0;
for(j=1;j
if(i%j==0)
Sum=Sum+j;
if(Sum==i&&i>Max)
Max=i;
}
printf("%d",Max);
}
本题参考答案为:
496
2、所谓回文数是从左至右与从右至左读起来都是一样的数字,如:
121是一个回文数。
编写程序,求出100—900之间的所有回文数的个数。
答案:
#include
main()
{
inti,count=0;
for(i=100;i<=900;i++)
{
if(i/100==i%10)
{
count++;
}
3、求[351,432]之间所有不能被3整除,但能被8整除的整数的和。
答案:
main()
{
inti,s=0;
for(i=351;i<=432;i++)
if(i%3!
=0&&i%8==0)
s=s+i;
printf("total=%d\n",s);
}
本题参考答案:
2728