C语言模拟试题.docx
《C语言模拟试题.docx》由会员分享,可在线阅读,更多相关《C语言模拟试题.docx(25页珍藏版)》请在冰豆网上搜索。
C语言模拟试题
模拟试题一
一、选择题(每题1分共15分)
1.设x,y为float型变量,则下列(A)为不合适的赋值语句
A.++x;B.y=(float)3;
C.x=y=0;D.x*=y+8;
注:
x没有初始值,++x时会出错。
y=float(3)是c++写法,给一个类型加上括号,表示强制转换。
浮点型数据不能用于取模(%)运算,只有整型才可以。
2.若x为int变量,则执行下列语句x的值为(D)
x=65535;
printf(“%d\n”,x);
A.65535B.1
C.无定值D.-1
注:
16位二进制(-2^15-----2^15-1)与32位二进制(-2^31--2^31-1)表示的范围不同。
65535存储在16位(TC系统)的存储器中,溢出,刚好是-1的补码。
存储在32位(VC系统)的存储器中不溢出,原样输出65535。
3.下面不正确的转义符为(C)。
A.‘\t’B.‘\a’
C.‘\081’D.‘\n’
注:
\a 响铃(BEL) 007\b 退格(BS) 008 \f 换页(FF) 012
\n 换行(LF) 010 \r 回车(CR) 013 \t 水平制表(HT)009
\v 垂直制表(VT)011\\ 反斜杠 092\?
问号字符 063
\' 单引号字符 039\" 双引号字符 034\0 空字符(NULL)000
\ddd 任意字符 三位八进制\xhh 任意字符 二位十六进制
字符常量中使用单引号和反斜杠以及字符常量中使用双引号和反斜杠时,都必须使用转义字符表示,即在这些字符前加上反斜杠。
4.在C语言中,char类数据在内存中是以(D)形式存储的
A.原码B.反码
C.补码D.ASCII码
注:
c中char属于基本类型,基本类型还包括整型,实型,枚举类型!
数据在内存中是以二进制形式存放的。
数值是以补码表示的。
整型:
一个正数的补码和其原码的形式相同。
而负数的补码方式是将其绝对值的二进制形式“按位求反再加1”
实型:
在内存中占4个字节,是按照指数形式存储的,实型数据分为小数部分和指数部分,分别存放!
计算机用二进制表示小数部分,用2的幂次来表示指数部分!
字符型:
在内存中字符的存储实际上是把字符相对应的ASCII代码放到存储单元中的。
而这些ASCII代码值在计算机中也是以二进制形式存放的。
这与整型的存储很相似。
5.以下变量名(C)是合法的。
A.breakB.$123
C.lotus_2_3D.
注:
C语言中变量名只能由字母,数字和下划线组成,且第一位只能为字母或下划线。
合法的变量名还必须是基本字以外的变量名。
(基本字是每门语言都固有的,且一般与其他语言不同!
c语言的基本字有:
struct、typedef、define、union、for、while、if、else……)
6.判断char型变量c1是否为小写字符的最简单且正确的表达式(D)。
A.‘a’<=c1<=’z‘B.(c1<=a)&&(c1<=z)
C.(‘a’<=c1)&&(‘z’>=c1)D.(c1>=’a’)&&(c1<=’z’)
7.在C语言中,int,char,float所占用的内存为(C)字节。
A.均为2个字节B.由用户自己定义
C.PC机为2,1,4D.2,2,4
注:
int为整形变量,占2个字节,共16位,值域为-32768~32767。
char为字符型变量,例如'a','b'等,存储时是存储的ASCII码,ASCII码是8位,所以char只需1个字节,例如'a'为01100001,一个字节就可以存8位。
float为单精度实型,占4字节,可放32位二进制数,而且可以是小数,值域为-3.4E+38~3.4E+38
变量其实只是一段内存空间,例如:
定义inta,开辟了2个字节的内存空间;chara,开辟1个字节内存空间;floata,开辟4个字节内存空间。
8.若有说明intx,y;不能实现以下函数关系的程序段是(B)。
y=-1(x<0);y=0(x=0);y=1(x>0)
A.if(x<0)y=-1;elseif(x==0)y=0;elsey=1;
B.y=-1;if(x!
=0)if(x>0)y=1;elsey=0;
C.y=0;if(x>=0){if(x>0)y=1;}elsey=-1;
D.if(x>=0)if(x>0)y=1;elsey=0;elsey=-1;
注:
B中y=0时,x<0,错误。
9.while(!
x)中(!
x)与下面条件(A)等价
A.x==0B.x==1
Cx!
=1D.x!
=0
注:
while(!
x),当!
x是真时才会执行循环体,!
x是真,那么就是x==0(!
x=1)。
10.以下不是无限循环的语句为(A)。
A.for(y=0,x=1;x>=++y;x++);
B.for(;;x++);
C.while
(1){x++;}
D.for(i=10;;i--)sum+=i;
注:
B和D都是无结束条件的for循环因此无限循环。
C中while
(1)条件始终为真也是无限循环。
对于A,for在执行时进行条件判断,此时x为1,等于++y,循环结束。
赞同
11.若有以下语句,则下面(B)是正确的描述。
Charx[]=”12345”;
Chary[]={‘1’,’2’,’3’,’4’,’5’};
A.x,y完全相同。
B.x,y不相同。
C.x数组长度小于y数组长度。
D.x,y字符串长度相等。
12.为了判断两个字符串s1和s2是否相等,应当使用(D)。
A.if(s1==s2)B.if(s1=s2)
C.if(strcpy(s1,s2))D.if(strcmp(s1,s2)==0)
注:
Strcmp,比较函数,strcmp(s1,s2)==0表示两个字符串相等。
13.C程序中函数返回值的类型是由(D)决定。
A.return语句中的表达式类型。
B.调用该函数的主调函数类型。
C.调用函数时临时决定。
D.定义函数时所指定的函数类型。
注:
函数返回值的类型是由定义该函数时所指定的函数定义类型决定的!
14若intt,a=5,b=6,w=1,x=2,y=3,z=4,则经过t=(a=w>x)&&(b=y>z)计算后变量t,a,b的值分别为(D)
A.0,0,0B.0,0,6
C.1,0,0D.1,0,6
注:
先执行a=w>x得到a=0,得t=0。
b=y+z没有执行。
15如果变量grade的值为1,则运行下列程序段后输出结果为(B)
switch(grade)
{case1:
printf(“a\n”);
case2:
printf(“b\n”);
case3:
printf(“c\n”);
}
A.aB.a
b
c
C.abcD.ab
注:
break在switch(开关语句)中,作用是在执行一条case后跳出语句。
如果无break语句,则将成为一个死循环而无法退出。
即顺序输出case1,2,3。
二.写出下列程序的运行结果(每题3分,共15分)
1.main()
{
inti,j,k;
charspace=’‘;
for(i=0;i<=5;i++)
{
for(j=i;j<=i;j++)
printf(“%c”,space);
for(k=0;k<=5;k++)
printf(“%c”,’*’);
printf(“\n”);
}
}
2.main()
{
intn=0;
while(n++<=2)
printf(“%d\t”,n);
printf(“%d\n”,n);
}
3.main()
{
inta[3][3]={1,2,3,4,5,6,7,8,9};
inti,j,t;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf(“%4d”,a[i][j]);
}
printf(“\n”);
}
}
4.#include“string.h”
main()
{
charstring1[20]=”abcd”;
charstring2[]=”\\cd\t”;
strcat(string1,string2);
printf(“%d”,strlen(string1));
}
5.main()
{
intcount,sum,x;
count=sum=0;
do
{
scanf(“%d”,&x);
if(x%2!
=0)continue;
count++;sum+=x;
}
while(count<5);
printf(“sum=%d”,sum);
}
假设输入的数据为:
36-291011812
三编程(共70分)
1.编写一个程序,输入一个字符串,按反序存放后再输出该字符串。
(10分)
#include
#include
chara[110];
voidconvert(chara[],intn);
intmain()
{
scanf("%s",a);
convert(a,strlen(a));
printf("%s\n",a);
return0;
}
voidconvert(chara[],intn)
{
intlen=n/2;
for(inti=0;i{
chart=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
}
2.写一个程序,能分别统计出从键盘上输入的字符串中小写字符的个数、数字字符的个数和其他字符的个数。
输入的字符串以“!
”作为结束标记。
(10分)
#include
voidmain()
{
charc;
intabc=0;
intnum=0;
intspace=0;
intother=0;
while((c=getchar())!
='!
')
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
abc++;
elseif((c>='0')&&(c<='9'))
num++;
elseif(c=='')
space++;
else
other++;
}
printf("abc=%d\nnum=%d\nspace=%d\nother=%d\n",abc,num,space,other);
}
3.编写一个求4个数中的最大数(要求用函数实现求最大数)。
(10分)
#include
intmaxnum()
{
inta[4];
for(inti=0;i<4;i