M1C语言模拟试题一分析.docx
《M1C语言模拟试题一分析.docx》由会员分享,可在线阅读,更多相关《M1C语言模拟试题一分析.docx(21页珍藏版)》请在冰豆网上搜索。
M1C语言模拟试题一分析
单选题:
1、下列程序执行后输出的结果是
#include 〈stdio.h〉
f(int a)
{ int b=0;
int c=3;
a=c++,b++;//先计算a,再取b值,但没使用。
如果a=(c++,b++),结果?
;
return(a);
}
main( )
{ int a=2,i,k;
for(i=0;i〈2;i+ +)
k=f(a+ +);//i=0,a=2;i=1,a=3(但没有改变被调函数的使用)
printf("%d\n",k);
}
A.3
B.0
C.1
D.4
答案:
A
2、假定a和b为int型变量,则执行以下语句后b的值为
main()
{a=1;b=10;
do
{b=b-a;a++;}/*①10-1=9,a=2;②8-2=6,a=3;③5-3=2、a=4④1-4=-3*/
while(b-->0);/*①9-1=8;②6-1=5;③2-1=1;④-3-1=-4*/
}
A.-3
B.-2
C.-1
D.-4
答案:
D
3、下面的表达式中_______满足:
当x为偶数时值为“真”,为奇数时值为“假”
A.x%2==0/*如4%2==0
(1)5%2==0(0)
B.!
x%2!
=0/*如!
4%2!
=0(0)!
5%2!
=0(0)(优先级:
!
->%->!
=)
C.2*x/2-x==0
D.!
(x%2)
答案:
B?
4、设 int b=2;表达式b/(b*2)的值是_______.
A.0
B.0.5
C.0.500000
D.0.00000
答案:
A
5、设x、y、z和k都是int型变量,则执行表达式:
x=(y=4,z=16,k=32)后,x的值为_____.
A.4
B.16
C.32
D.52
答案:
C
6、若有以下定义和语句:
int u=010,v=0x10,w=10;
printf(″%d,%d,%d\n″,u,v,w);
则输出结果是:
A.8,16,10
B.10,10,10
C.8,8,10
D.8,10,10
答案:
A
7、若有以下说明和语名:
int a=5
a++;
此处表达式a++的值是____
A.7
B.6
C.5
D.4
答案:
C
8、若执行下面的程序从键盘输入3和4,则输出是_______
main()
{ int a,b,s;
scanf("%d%d",&a,&b);
s=a;
if (a < b) s=b;
s=s*s;
printf("%d\n",s);
}
A.14
B.16
C.18
D.20
答案:
B
9、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系
的表达式为________。
A.a<>0
B.!
a
C.a=0
D.a!
=0
答案:
D
10、执行语句:
for(i=1;i++<4;)后;变量i的值是( )
A.3
B.4
C.5
D.不定
答案:
C
11、执行语句:
for (i=1;i++ < 4;)后;变量i的值是
A.3
B.4
C.5
D.不定
答案:
C
12、已知字母A的ASCⅡ码为十进制的65,下面程序的输出是
main()
{ char ch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%c,%c\n",c1,c2);
}
A.67,D
B.B,C
C.C,D
D.ch2='A'+'6'-'3';
答案:
C
13、下列程序执行后的输出结果是
main()
{ char arr[2][4];
strcpy(arr[0],"you");
strcpy(arr[1],"me");
arr[0][3]='&';
printf("%s \n",arr);
}
A.you&me
B.you
C.me
D.err
答案:
A
14、下列程序执行后的输出结果是
#define MA(x) x*(x-1)
main()
{ int a=1,b=2;
printf("%d \n",MA(1+a+b));}/*1+1+2*(1+1+2-1)=8
A.6
B.8
C.10
D.12
答案:
B
15、以下程序运行后,输出结果是
main( )
{ char s[]="abcde";
s+=2;//errorC2106:
'+=':
leftoperandmustbel-value
printf("%ld\n",s);
}
A.cde
B.字符c的ASCII码值
C.字符c的地址
D.出错
答案:
D
16、i、j已定义为int类型,则以下程序段中内循环体的总的执行次数是
for (i=5; i; i--)/*i=5、4、3、2、1*/
for(j=0; j < 4; j++){…}
A.20
B.24
C.25
D.30
答案:
A
17、执行下面语句后的输出为( )
int i= -1;
if (i < =0)printf("****\n")
else printf("%%%%\n")
A.****
B.%%%%
C.%%%%C
D.有语法错,不能执行
答案:
D(else前缺少;)
18、语句:
printf("%d \n",12&&12);的输出结果是
A.12
B.1
C.24
D.0
答案:
B
19、以下说法中正确的是( )
A.C语言程序总是从第一个的函数开始执行
B.在C语言程序中,要调用的函数必须在main()函数中定义
C.C语言程序总是从main()函数开始执行
D.C语言程序中的main()函数必须放在程序的开始部分
答案:
C
20、下述对C语言字符数组的描叙不正确的是( )
A.字符数组可以存放字符串
B.字符数组中的字符串可以整体输入、输出
C.可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
D.不可以用关系运算符对字符数组中的字符串进行比较
答案:
C
21、C程序是( )
A.按顺序执行的
B.从Main函数开始
C.从函数体开始
D.任意语句
答案:
B
22、下列语句正确的是( )
A.if(a>b>c)temp=a
B.if((a=b)>0)temp=a
C.inta=b=c=4
D.inta;scanf(%d,a)
答案:
B
23、以下关于字符串的不正确说法是( )
A.字符串长度就是字符串中字符的个数
B.字符串的尾部会自动追加一个"字符串结束标志"
C.字符串的长度为字符个数加1
D.在C语言中常用字符型数组来存放字符串
答案:
A
24、以下正确的说法是:
在C语言中
A.实参和与其对应的形参各占用独立的存储单元
B.实参和与其对应的形参共占用一个存储单元
C.只有当实参和与其对应的形参同名时才共占用存储单元
D.形参是虚拟的,不占用存储单元
答案:
A
25、以下不正确的if语句形式是
A.if(x>y&&x!
=y)t=x++;
B.if(x==y)x+=y;
C.if(x!
=y)scanf("%d",&x)elsescanf("%d",&y);
D.if(x<>
答案:
C?
?
26、请阅读以下程序:
main( )
{
int a=5,b=0,c=0;
if(a==b+c) printf("***\n");
else printf("$$$\n");
}
以上程序
A.有语法错不能通过编译
B.可以通过编译但不能通过连接
C.输出***
D.输出$$$
答案:
D
27、以下不正确的说法是:
C语言规定
A.实参不可以是常量,变量或表达式
B.形参可以是常量,变量或表达式
C.实参可以为任何类型
D.形参应与其对应的实参类型一致
答案:
B
28、若有语句:
char s1[]="string",s2[8],*s3,*s4="string2";则对库函数strcpy的错误调用是
A.strcpy(s1,"string2");
B.strcpy(s4,"string1");
C.strcpy(s3,"string1");//指针s3没有指向
D.strcpy(s1,s2);
答案:
C
29、假定x和y为double型,则表达式x=2,y=x+3/2的值是
A.3.500000
B.3
C.2.000000
D.3.000000(3/2=1作为整型数据运算,应为:
3.0/2.0)
答案:
D
30、以下程序的输出结果是
main()
{ char c='z';
printf("%c",c-25);
}
A.a
B.Z
C.z-25
D.y
答案:
A
31、有如下程序
main()
{ int x=23;
do
{ printf("%d",x--);}
while(!
x);
}
该程序的执行结果是
A.321
B.23
C.不输出任何内容
D.陷入死循环
答案:
B
32、设有说明语句:
char a='\72';则变量a
A.包含1个字符
B.包含2个字符
C.包含3个字符
D.说明不合法
答案:
A
33、有如下程序段
int a=14,b=15,x;
char c='A';
x=(a&&b)&&(c<'B');
执行该程序段后,x的值为
A.ture
B.false
C.0
D.1
答案:
D
34、有如下程序
main()
{ char s[]="ABCD", *P;
for(p=s+l; p < s+4; p++) printf ("%s\n",p);//p:
1~3
}
该程序的输出结果是
A.ABCDBCDCDD
B.ABCD
C.BCD
D.BCDCDD
答案:
D
35、 设有 int x=11; 则表达式 (x++ * 1/3) 的值是
A.3(11*1/3取整=3)
B.4
C.11
D.12
答案:
A
36、请选出正确的程序段
A) int *p; B) int *s, k;
scanf("%d",p); *s=100;
… …
C) int *s, k; D) int *s, k;
char *p, c; char *p, e;
s=&k; s=&k;
p=&c; p=&c;
*p='a'; s=p;
… *s=1;
…
A.
B.
C.
D.
答案:
C
37、下列程序执行后的输出结果是
void func1(int i);
void func2(int i);
char st[]="hello,friend!
";
void func1(int i)
{ printf("%c",st[i]);
if(i<3){i+=2;func2(i);}
}
void func2(int i)
{ printf("%c",st[i]);
if(i<3){i+=2;func1(i);}
}
main()
{ int i=0; func1(i); printf("\n");}
A.hello
B.hel
C.hlo
D.hlm
答案:
C
38、算法的表示方法有( )。
A.自然语言,传统流程图,N-S流程图,伪代码,计算机语言
B.高级语言,汇编语言,机器语言
C.C语言,QBASIC语言,InterDev
D.图形图像法,描述法,编程法
E.计算机语言
答案:
A
39、设有定义:
“long x=-123456L;”,以下能正确输出变量x的的语句是( )
A.printf("x=%d\n",x);
B.printf("x=%ld\n",x);
C.printf("x=%8dl\n",x);
D.printf("x=%LD\n",x);
答案:
B
40、合法的C语言赋值语句是( )
A.a=b=1
B.k=int(a+b);
C.a=1,b=2
D.--i;
答案:
D
填空题:
1、一球从100m高度自由落下,每次落地后又回跳到原高度的一半,再落下,
求它在第10次落地时共经过多少m?
第10次反弹多高?
程序如下:
main()
{floatSn=100,hn=Sn/2;
intn;
for(n=2;n<=100;n++)(应为n<=10)?
?
{(a)__________;
(b)___________;}
printf("第10次落地时共经过%fm\n",Sn);
printf("第10次反弹%fm\n",hn);}
答案:
Sn=Sn+2*hn,hn=hn/2
2、程序的功能:
从键盘输入若干学生的成绩,统计并输出最高成绩和
最低成绩,当输入负数时结束输入
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),x3、下面程序的功能是:
将字符数组a中下标值为偶数的元素从小到大排列,其
它元素不变。
请填空。
#include
#include
main()
{chara[]="clanguage",t;
inti,j,k;
k=strlen(a);
for(i=0;i<=k-2;i+=2)
for(j=i+2;j<=k;_______
(1)__________)
if(_________
(2)__________)
{t=a[i];a[i]=a[j];a[j]=t;}
puts(a);
printf("\n");
}
答案:
j=j+2,a[i]>a[j]
4、用来引用特定数组元素的数字称为____.
答案:
下标
5、求下面算术表达式的值
1)x+a%3*(int)(x+y)%2/4(注:
1/4=0)
设x=2.5,a=7,y=4.7
2)(float)(a+b)/2+(int)x%(int)y(5.0/2+3%2=2.5+1=3.5)
设a=2,b=3,x=3.5,y=2.5
答案:
2.5,3.5
6、设x和y均为int型变量,且x=1,y=2,则以下表达式:
0+x/y的值为___。
答案:
0
7、当a=3,b=2,c=1时,表达式f=a>b>c的值是_________
答案:
0
8、在C语言中,输入操作是由库函数________完成的,输出操作是由库函数________完成的。
答案:
scanf,printf
9、若a,b和c均是int型变量,则计算表达式后,
a值为______,b值为______,c值为__________
a=(b=4)+(c=2)
答案:
6,4,2
10、若从键盘输入58,则以下程序输出的结果是________。
main()
{inta;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
答案:
585858
11、以下程序的输出结果是___________
main()
{inta=1,b=2;
a=a+b;b=a-b;a=a-b;
printf("%d,%d\n",a,b);
}
答案:
2,1
12、下列程序段的输出结果是_____________。
intn='c';
switch(n++)
{default:
printf("error");break;
case'a':
case'A':
case'b':
case'B':
printf("good");break;
case'c':
case'C':
printf("pass");
case'd':
case'D':
printf("warm");
}
答案:
passwarm
13、要使以下程序段输出10个整数,请填入一个整数。
for(i=0;i<=____________;printf("%d\n",i+=2));
答案:
18
14、
若输入字符串:
abcde<回车>,则以下while循环体将执行___________次。
while((ch=getchar())=='e')printf("*");
答案:
0
15、下面程序的输出结果是__________。
﹟include﹤stdio.h﹥
voidmain()
{
inti=﹣200,j=25;
printf("%d,%d",i,j);
printf("i=%d,j=%d﹨n",i,j);
}
答案:
-200,25,i=-200,j=25
16、使用强制转换方法将正整数转换成字符。
本题程序如下:
﹟include﹤stdio.h﹥
voidmain()
{
charc;intI;
scanf("%d",&I);
c=("%c的ASCII码为%d﹨n",c,I);
}
本程序的执行结果为___________。
答案:
a的ASCII码为97
程序设计题:
1、编程序求1+3+5+7+9+…这样的数之和。
如果累加数大于750时,则程序终止并输出结果。
答案:
main()
{
inti=1,sum=0;
while(sum<=750)
{
sum=sum+i;
i=i+2;
}
printf("\n%d",sum);
}
参考答案:
784
2、编写程序,求在10~1000之间所有能被4除余2,被7除余3,被9除余5的数之和。
答案:
main()
{longs=0;
intm;
for(m=10;m<=1000;m++)
{
if(m%4==2&&m%7==3&&m%9==5)
s=s+m;
}
printf("%d\n",s);
}
本题参考答案:
2000
3、一只猴子一天从山上摘来一袋桃子,从这天开始,它每天都要把袋中的桃子平分为二堆,吃掉其中的一堆,然后再从剩下的桃中拿出一个解谗,等到第10天,它发现袋中只有一只桃可吃啦,问猴子总共摘了多少桃。
答案:
main()
{
inti,num;
inttemp=1;
for(i=9;i>0;i--)
{num=(temp+1)*2;
temp=num;
}
printf("\n%d",num);
}
本题答案为:
1534