C语言模拟试卷(带答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言模拟试卷(带答案)
精品文档
单选题:
1、执行下面的程序段后,变量k中的值为
s[0]=k; k=s[1]*10;
A. 不定值
B. 33
C. 30
D. 10
答案: A
2、设有以下定义:
#define N 3
#define Y(n) ( (N+1)*n)
则执行语句:z=2 * (N+Y(5+1));后,z的值为_______.2*(3+
(4*5+1)
A. 出错
B. 42
C. 48
D. 54
答案: C
3、若已定义X和Y为double型,则表达式:x=1,y=x+3/2的值是____
A. 1
B. 2
C. 2.0
D. 2.5
答案: c
4、请选出以下语句的输出结果____
printf("%d\n",strlen("\t\ 065\xff\n"))
A. 5
B. 4
C. 8
D. 输出项不合法,无正常输出
答案: B
5、为避免嵌套的条件分支语句if…else的二义性,C语言规定,C 程序中的
else总是与____组成配对关系。
A. 其上面距它最近的,并且没有其他else与其配对的if相配对
B. 在同一行上的if
C. 缩排位置相同的if
D. 在其之前未配对的if
答案: A
6、若X和Y都是int型变量,X=100,Y=200,且有下面的程序片段: printf("%d",(X,Y));
上面程序片段的输出结果是
A. 200
B. 100
C. 100 200
D. 输出格式符不够,输出不确定的值
答案: A
7、请读程序片段(字符串内没有空格字符):
printf("%d\n", strlen("ATS\n012\1\\"));
上面程序片段的输出结果是
A. 11
B. 9
C. 10
D. 8
答案: B
8、设有以下程序段
int x=0,s=0;
while(!x!=0) s+=++x;
printf("%d",s);
则______
A. 运行程序段后输出0
B. 运行程序段后输出1
C. 程序段中的控制表达式是非法的
D. 程序段执行无限次
答案: B
9、阅读下列程序:
main( )
{ int n[3],i,j,k;
for(i=0;i〈3;i++)
n[i]=0;
k=2;
for (i=0;i < k;i++) i=0: n[0]=1,n[1]=2 i=1: =3 =3
for (j=0;j〈2;j++)
n[j]=n[i]+1;
printf("%d\n",n[1]);
}
下述程序运行后输出结果是
A. 2
B. 1
C. 0
D. 3
答案: D
10、输入一个华氏温度,要求输出摄氏温度。
计算公式为:
c=5/9(F-32),以下程序正确的是()
A. main() { float c,F; scanf("%f,%f",&c,&F); c=5/9*(F-32); printf("摄氏温度是:%f\n",c); }
精品文档
B. main() { float c,F; scanf("%f,%f",&c,&F); c=5*(F-32)/9; printf("摄氏温度是:%f\n",c); }
C. main() { float c,F; scanf("%f,%f",&c,&F); c=5%9*(F-32); printf("摄氏温度是:%f\n",c); }
D. main() { float c,F; scanf("%f,%f",&c,&F);
c=5.0/9.0(F-32); printf("摄氏温度是:%f\n",c); } 答案: B
11、以下程序的输出结果是
main( )
{ int k=17;
printf("%d,%o,%x \n",k,k,k);
}
A. 17,021,0x11
B. 17,17,17
C. 17,0x11,021
D. 17,21,11
答案: D
12、请读程序:
main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{ case 1:
switch(y)
{ case 0: a++;break;
case 1: b++;break;
}
case 2:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
上面程序输出结果是
A. a=2,b=1
B. a=1,b=1
C. a=1,b=0
D. a=2,b=0
答案: A
13、C语言中,调用一个函数时,实参变量和形参变量之间的数据传递是____.
A. 单纯值传递
B. 单纯地址传递
C. 值传递和地址传递都有可能
D. 由实参传给形参,然后由形参传回给实参,即是双向传递
答案: A
14、下列不正确的转义字符是( )
A. '\\'
B. '\'
C. '\101'
D. '\0'
答案: B
15、下列语句正确的是( )
A. if(a > b > c) temp=a
B. if((a=b) > 0) temp=a
C. int a=b=c=4
D. int a;scanf(%d,a)
答案: B
16、以下说法中正确的是( )。
A. C语言程序中是从第一定义的函数开始执行
B. 在C语言程序中,要调用的函数必须在main()函数中定义
C. C语言程序总是从main()函数开始执行
D. C语言程序中的main()函数必须放在程序的开始部分
答案: C
17、下列说法中正确的是____。
A. 一个数组能够存储许多不同类型的值
B. 数组的下标可以是float数据类型
C. 如果初始化值列表中的个数少于数组的元素的个数,C编译器会自动补齐
D. 初始化值列表中的值的个数多于数组元素的个数是错误的
答案: D
18、设有说明:char w;int x;float y;double z;则表达式
w*x+z-y值的数据类型为
A. float
B. char
C. int
D. double
答案: D
19、设以下变量均为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
20、以下不正确的if语句形式是
A. if(x>y&&x!=y)t=x++;
B. if(x==y) x+=y;
精品文档
C. if(x!=y) scanf("%d",&x) else scanf("%d",&y);
D. if(x<>
答案: C
21、若i为整型变量,则以下循环执行次数是
for(i=2;i==0;) printf("%d",i--);
A. 无限次
B. 0次
C. 1次
D. 2次
答案: B
22、以下错误的描述是:函数调用可以
A. 出现在执行语句中
B. 出现在一个表达式中
C. 做为一个函数的实参
D. 做为一个函数的形参
答案: D
23、以下各选项企图说明一种新的类型名,其中正确的是
A. typedef v1 int;
B. typedef v2=int;
C. typedef v1 int v3;
D. typedef v4: int;
答案: C
24、以下程序的输出结果是
main()
{ int a=5,b=4,c=6,d;
printf("%d\n",d=a>b?(a>c?a:c):(b));
}
A. 5
B. 4
C. 6
D. 不确定
答案: c
25、以下程序调用findmax函数返回数组中的最大值
findmax(int a[],int n)
{ int *p,*s;
for(p=a,s=a; p-a<="" p="" p++)="">
s p
if ( ) s=p;
return(*s);
}
main() { int x[5]={12,21,13,6,18};
printf("%d\n",findmax(x,5));
}
在下划线处应填入的是
A. p>s
B. *p>*s
C. a[p]>a[s]
D. p-a>p-s
答案: B
26、有如下程序
main()
{ char s[]="ABCD", *P;
for(p=s+l; p < s+4; p++) printf ("%s\n",p);
}
该程序的输出结果是
A. ABCD BCD CD D
B. A B C D
C. B C D
D. BCD CD D
答案: D
27、下列描述中不正确的是
A. 字符型数组中可以存放字符串
B. 可以对字符型数组进行整体输入、输出
C. 可以对整型数组进行整体输入、输出
D. 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
答案: C
28、将三个数排序需要比较______次。
A. 2
B. 3
C. 4
D. 不确定
答案:
B
填空题:
1、下面程序功能是:输出100以内能被3整除且个位数为6的所有整数,请填
空。
#include < stdio.h >
main()
{ int i, j;
精品文档
for(i=0; _____(1)______; i++)
{ j=i*10+6;
if( _____(2)______ ) continue;
printf("%d",j);
}
}
答案: i<10,j%3!=0
2、 main( )
{ int sum=0, i ;
scanf( "%d",&i );
while (i < = 10)
{sum=sum+i;
i++;}
printf("%d",sum);}
输入 1
输出______
答案: 55
3、用来引用特定数组元素的数字称为____.
答案:下标
4、把数组元素按顺序存放的过程称为_________.
答案:排序
5、应该用_______声明数组的大小,因为这样能够更容易调整程序。
答案:符号常量
6、输出为__________
main( )
{char x,y;
x='a'; y='b';
printf("xy\bmn\r");
printf("%c\\%c\\n",x,y);
printf("%c\a\n",' \65 ');}
答案: a\b\n 5
7、 #include < stdio.h >
main( )
{int i=0,j=0,a=6;
if ((++i > 0) || (j++ > 0)) a++;
printf("i=%d,j=%d,a=%d\n",i,j,a);}
结果:_____
答案: I=1, j=0, a=7
8、写出该程序运行的结果。
#include
void main()
{ int i, j, k=10;
i=(j=k)>0;
j=i==j; printf(``%2d,%2d\n``,i,j);
k=!i==++j;
printf("%2d, %2d, %2d\n", i, j, k);}
答案: 1,0,1,1,0
9、从键盘输入一个大写字母,要求改用小写字母输出,程序如下办
#include "stdio.h"
main( )
{ char c1,c2;
(1)_________;
printf ("%c,%d\n",c1,c1 );
(2)_____________;
printf("%c,%d\n",c2,c2);}
答案: c1=getchar( ),c2=c1+32;
10、设有以下变量定义,并已赋确定的值
char w; int x; float y; double z;
则表达式:w*x+z-y所求得的数据类型为____________ 答案:double
11、在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为_____;一个double型数据在内存中所占的字节数为
_________
答案: 4,8
12、设有以下程序:
main()
{ int n1,n2;
scanf("%d",&n2);
while(n2!=0)
{ n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}
程序运行后,如果从键盘上输入1298;则输出结果为_________。
答案: 8921
13、若从键盘输入58,则以下程序输出的结果是 ________ 。
main()
{ int a;
scanf("%d",&a);
if(a>50) printf("%d",a);
if(a>40) printf("%d",a);
if(a>30) printf("%d",a);
}
答案: 585858
14、以下程序的输出结果是______________。
main()
精品文档
{ unsigned short a=65536; int b;
printf("%d\n",b=a);
答案: 0
15、下面程序的功能是:输出100以内能被3整除且个位数为6的所
有整数,请填空。
#include < stdio.h >
main()
{ int i, j;
for(i=0; ______________; i++)
{ j=i*10+6;
if( ________ ) continue;
printf("%d",j);
}
}
答案:
i<10,j%3!=0
程序设计题:
1、编写程序,计算1000以内有多少个这样的数,其个位数为6且该数能被9整除。
答案: main()
{
int i,n=0,a;
for(i=1;i < 1000;i++)
{a=i%10;
if((a==6)&&(i%9==0)n++;
}
printf("%d",n);
}
参考答案是:11
2、求正整数[100,999]中的水仙花数的和,(若三位数
ABC=A^3+B^3+C^3,则称ABC为水仙花数,例如数153,1^3+5^3+3^3=153,则153为水仙花数)。
答案: main()
{
int x,y,z,i; int count=0;
for(i=100;i<=999;i++)
{
z=i/100;
y=i/10%10;
x=i%10;
if((x*x*x+y*y*y+z*z*z)==i)count=count+i;
}
printf("%d\n",count);
}
/*参考答案:1301 */
3、若(x,y,z)满足方程:x^2+y^2+z^2=55^2(注:要求x > y > z),则(x,y,z)称为方程的一个解。
试求方程的所有整数解中x+y+z的最大值。
答案: #include
main()
{
int x,y,z,temp,max=0;
for(x=54;x>=-55;x--)
for(y=x-1;y>=-55;y--)
for(z=y-1;z>=-55;z--)
{
temp=x+y+z;
if(x*x+y*y+z*z==55*55)
if(temp>max)max=temp;
}
printf("%d\n",max);
}
/*参考答案:91 */。