C语言期末模拟试题12Word文档格式.docx
《C语言期末模拟试题12Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言期末模拟试题12Word文档格式.docx(38页珍藏版)》请在冰点文库上搜索。
2.#include<
#include<
main()
inta=1,b=4,c=2;
floatx=,y=,z;
z=(a+b)/c+sqrt((double)y)*c+x;
printf(“%f\n”,z);
}
3.#include<
inta,b,c,d;
a=c=0;
b=1;
d=20;
if(a)d=d-10;
elseif(!
b)
if(!
c)d=25;
elsed=15;
printf(“d=%d\n”,d);
运行结果:
4.main()
inti=10;
switch(i){
case9:
i+=1;
case10:
case11:
default:
printf(“%d”,i);
运行结果:
5.#include<
inta[]={1,2,3,4},i,j,s=0;
j=1;
for(i=3;
i>
=0;
i--)
s=s+a[i]*j;
j=j*10;
printf("
s=%d\n"
s);
6.func(intx)
{x=20;
intx=10;
func(x);
printf(“%d”,x);
三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
(20分,每空2分)
1.已知能被4整除而不能被100整除的或者能被400整除的年份是润年,则判断某一年是否是润年的程序如下:
intyear,leap;
scanf(“%d”,&
year);
if()
leap=1;
elseleap=0;
if()printf(“是润年”);
elseprintf(“不是润年”);
2.将100至200间不能被3整除的数输出:
intn;
for(n=100;
n<
=200;
n++)
if(n%3==0);
printf(“%d”,n);
3.判断m是否是素数
#include<
intm,i,k;
scanf(“%d”,&
m);
k=sqrt(m);
for(i=2;
i<
=k;
i++)
if(m%i==0);
if(i>
=k+1)printf(“%disaprimenumber\n”,m);
elseprintf(“%disnotaprimenumber\n”,m);
4.给定一3*4的矩阵,求出其中值最大的元素的值,及所在的行列号。
inti,j,row=0,colum=0,max;
staticinta[3][4]={{1,2,3,4}{9,8,7,6}{10,-10,-4,4}};
;
for(i=0;
=2;
for(j=0;
j<
=3;
j++)
if(a[i][j]>
max)
max=a[i][j];
printf(“max=%d,row=%d,colum=%d\n”,max,row,colum);
5.下面函数的功能是将两个字符串s和t连接起来。
char*conj(char*s,char*t)
char*p=s;
while(*s);
while(*t)
*s=;
s++;
t++;
*s=’\0’;
;
四、编程(40分)
1.计算1-1/2+1/3-1/4+…+1/99-1/100+…,直到最后一项的绝对值小于10-4为止。
(13分)
2.输入一行字符,分别统计求出其中英文字母、空格、数字和其他字符的个数并输出结果。
3.任意从键盘输入10个整数,按从小到大的顺序排序,并输出结果。
(14分)
答案
一、选择题
1、D,2、B,3、A,4、B,5、A,6、A,7、D,8、D,9、B,10、B
二、给出下列程序的运行结果
1、17,102
2、
3、d=20
4、13
5、s=1234
6、10
三、阅读程序,在标有下滑线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
1、(year%4==0&
&
year%100!
=0)||year%400==0)
leap
2、continue
3、break
4、max=a[0][0]
row=i+1
colum=j+1
5、s++
*t
return(p)
四、编程
1、
#include<
inti;
floatsum,sign;
i=1;
sum=0;
sign=;
while(i)>
=1e-4)
sum+=sign/i;
i++;
sign=-sign;
sum=%.4f"
sum);
charstr[81];
inti;
intletter,space,num,other;
charc;
printf("
Pleaseenterastring:
"
);
gets(str);
letter=space=num=other=0;
for(i=0;
str[i]!
='
\0'
;
i++)
c=str[i];
if((c>
='
A'
c<
Z'
)||(c>
a'
c<
z'
))
letter++;
elseif(c>
0'
&
9'
)
num++;
elseif(c=='
'
space++;
elseother++;
Inthisstring:
letter=%d,space=%d,num=%d,other=%d"
letter,space,num,other);
3、
{
intnum[10];
inti,j,k;
inttemp;
Pleaseenter10numbers:
\n"
for(i=0;
10;
scanf("
%d"
&
num[i]);
for(i=0;
9;
k=i;
for(j=i+1;
{
if(num[k]>
num[j])
k=j;
if(k!
=i)
{
temp=num[i];
num[i]=num[k];
num[k]=temp;
}
}
Aftersorted:
%5d"
num[i]);
选择题(后附答案)
1.以下叙述正确的是_____。
A)在C程序中,main函数必须位于程序的最前面。
B)C语言本身没有输入输出语句。
C)C程序的每行只能写一条语句。
D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误。
2.下面四个选项中,均是不合法的用户标识符的选项是。
A)AB)floatC)b-aD)_123
P_01a0gototemp
do_AintINT
3、下列四个选项中都是合法的转义字符的
A)‘\’’‘\\’‘\n’B)‘\’‘\017’‘\”’
C)‘\018’‘\f’‘xab’D)‘\\0’‘\101’‘x1f’
4、设所有变量均为整型,则表达式z=(a=2,b=5,b++,a+b)的值是:
A)7B)8C)6D)2
5、若有代数式,则不正确的C语言表达式是:
A)a/b/c*e*3B)3*a*e/b/c
C)3*a*e/b*cD)a*e/c/b*3
6、若希望当A的值为奇数时,表达式的值为”真”,A的值为偶数时,表达式的值为”假”。
则以下不能满足要求的表达式是_________。
A)A%2==1B)!
(A%2==0)
C)!
(A%2)D)A%2
7、以下程序的运行结果是:
main()
intm=6;
if(m++>
6)printf("
%d\n"
m);
e1seprintf("
%d\n"
--m);
A)4B)5C)7D)6
8、当a=1,b=3,c=5,d=4,执行完下面一段程序后x的值是:
if(a<
if(c<
d)x=1;
else
c)
if(b<
d)x=2;
elsex=3;
elsex=6;
elsex=7;
A)1B)2C)3D)6
9、阅读以下程序,当输入数据的形式为25,13,10<
CR>
正确的输出结果为
intx,y,z
scanf("
%d%d%d"
x,&
y,&
z);
printf(“x+y+z=%d\n”,x+y+z);
。
A)x+y+z=48B)x+y+z=35
C)x+y+z=35D)不确定值
10、已知各变量的类型说明如下
intk,a,b;
unsignedlongw=5;
doublex=;
则以下不符合C语言语法的表达式是:
A)x%(-3)B)w+=-2
C)k=(a=2,b=3,a+b)D)a+=a-=(b=4)*(a=3)
11、设有:
inta=1,b=2,c=3,d=4,m=2,n=2;
执行(m=a>
b)&
(n=c>
d)后n的值为_______。
A)1B)2C)0D)4
12、判断char型变量ch是否为大写字母的正确表达式是________。
A)'
A'
<
=ch<
B)(ch>
='
)&
(ch<
)
C)(ch>
)&
)D)('
=ch)AND('
=ch)
13、以下描述中正确的是_________:
A)由于do一while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B)在while循环体中,循环体至少要执行一次。
C)在do一while循环体中,循环体至少无条件的执行一次
D)do一while循环由do开始,用while结束,在while(表达式)后面不能写分号
14、已知intx=10,y=20,z=30;
以下语句执行后x,y,z的值是_______。
if(x>
y)
z=x;
x=y;
y=z;
A)x=10,y=20,z=30B)x=20,y=30,z=20
C)x=20,y=30,z=10D)x=20,y=30,z=30
15、若i为整型变量,则以下循环执行次数是:
for(i=2;
i!
)printf("
i--);
A)无限次B)0次C)1次D)2次
16、下面程序段:
for(t=1;
t<
=100;
t++)
{scanf("
x);
if(x<
0)continue;
printf("
%3d"
t);
}
A)当x<
0时整个循环结束
B)x>
=0时什么也不输出
C)printf函数永远也不执行
D)最多允许输出100个非负整数
17、若有说明:
inta[3][4];
则对a数组元素的正确引用是______。
A)a[2][4]B)a[1,3]C)a[1+1][0]D)a
(2)
(1)
18、定义如下变量和数组:
intk;
inta[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是:
for(k=0;
k<
3;
k++)printf("
a[2-k][k]);
A)369B)753C)963D)357
19、判断字符串a和b是否相等,应当使用_______.
A)if(a==b)B)if(a=b)
C)if(strcpy(a,b))D)if(strcmp(a,b))
20、对两个数组a和b进行如下初始化
chara[]="
ABCDEF"
charb[]={’A’,’B’,’C’,’D’,’E’,’F’};
则以下叙述正确的是__.
A)a与b数组完全相同B)a与b长度相同
C)a和b中都存放字符串D)a数组比b数组长度长
21、有两个字符数组a和b,则以下正确的输入语句是_________:
A)gets(a,b);
B)scanf(“%s%s”,a,b);
C)scanf(“%s%s”,&
a,&
b);
D)gets(“a”),gets(“b”);
22、下面程序段的运行结果是______
charstr[]="
ABC"
*p=str;
printf("
*(p+2));
(A)0(B)字符'
C'
的ASCII码(C)字符'
的地址(D)字符'
23、下面描述正确的是_______。
A)两个字符串所包含的字符个数相同时,才能比较字符串
B)字符个数多的字符串比字符个数少的字符串大
C)字符串”STOP”(注:
有一个空格)与”STOP”相等
D)字符串”That”小于字符串”The”
24、下面判断正确的是_______。
A)char*a=“china”;
等价于char*a;
*a=“china”;
B)charstr[10]={“china”};
等价于charstr[10];
str[]={“china”};
C)char*s=“china”;
等价于char*s;
s=“china”;
D)charc[4]=“abc”,d[4]=“abc”;
等价于charc[4]=d[4]=“abc”;
25、若用数组名作为函数调用的实参,传递给形参的是_______。
A)数组的首地址
B)数组第一个元素的值
C)数组中全部元素的值
D)数组元素的个数
26、下面函数调用语句含有实参的个数为_______。
y=func(a,b,max(d,e));
A)5B)2C)3D)4
27、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是_______。
A)float型
B)int型
C)long型
D)double型
28、在C语言中,形参的缺省存储类是
A)autoB)registerC)staticD)extern
29、以下正确的函数定义形式是__________:
A)doublefun(intx,inty)
B)doublefun(intx;
inty)
C)doublefun(intx,inty);
D)doublefun(intx,y);
30、在宏定义#definePI“”中,用宏名PI代替一个_______。
A)常量B)单精度数C)双精度数D)字符串
31、#defineADD(x)x+x
main()
intm=1,n=2,k=3;
intsum=ADD(m+n)*k;
printf(“sum=%d”,sum);
上面的程序运行结果是_________:
A)sum=9B)sum=10C)sum=12D)sum=18
32、以下有关宏替换和函数的调用叙述不正确的是________:
A)宏替换和函数的调用均占用运行时间。
B)宏名无类型,函数有类型
C)宏替换只是字符替换,不分配内存,但函数调用要分配内存
D)再调用宏时程序的长度要加长,而函数调用不变
33、以下程序的输出的结果是
{inti;
for(i=1;
i++)incre();
incre()
{staticintx=1;
x*=x+1;
x);
A)33B)22C)26D)25
34、有如下定义
structperson{charname[9];
intage;
};
strictpersonclass[10]={"
Johu"
17,
"
Paul"
19,
Mary"
18,
Adam”,16,};
根据上述定义,能输出字母M的语句是
A)prinft("
%c\n"
class[3].mane);
B)pfintf("
class[3].name[1]);
C)prinft("
class[2].name[1])
D)printf("
class[2].name[0]);
35、以下程序的输出结果是哪一项
inta[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i;
4;
p[i]=&
a[i*3];
p[3][2]);
A.输出项不合法B.6
C.8D.12
36、以下程序的输出结果是
unionmyun
{struct
intx,y,z;
}u;
intk;
}a;
{"
4B)5C)6D)1
37、以下关于结构体与共用体的说法,其中正确的是
A)共用体同一个内存段可以来存放几种不同类型的成员,但在某一时刻只能存放一个成员。
B)结构体变量所占的内存长度等于最长的成员的长度,共用体变量所占内存长度是各成员占的内存长度之和。
C)共用体每个成员分别占有自己的内存单元。
D)结构体类型可以出现在共用体类型的定义中,但共用体不能出现在结构体类型定义之中。
38、以下程序的输出结果是
longfun(intn)
longs;
if(n==1||n==2)s=2;
elses=n-fun(n-1);
returns;
%ld\n"
fun(5));
A)1B)2C)3D)4
39、下列程序段的输出结果为
intarr[]={6,7,8,9,10};
int*ptr;
ptr=arr;
*(ptr+2)+=2;
%d,%d\n"
*ptr,*(ptr+2));
A)8,10B)6,8C)7,9D)6,10
40、设有如下定义:
int(*ptr)();
则以下叙述中正确的是
A)ptr是指向一维组数的指针变量
B)ptr是指向int型数据的指针变量
C)ptr是指向函数的指针变量,该函数返回一个int型数据
D)ptr是一个函数名,该函数的返回值是指向int型数据的指针
1-5:
BCABC6-10:
CDBDA
11-15:
BCCDD16-20:
BCBDD
21-25:
BBDBA26-30:
CBAAD
31-35:
BACDD36-40:
DABD
一单项选择题(每小题1分,共10分)
1.以下4组用户定义标识符中,全部合法的一组是()
A)_totalclu_1sum
B)if-maxturb
C)txtREAL3COM
D)intk_2_001
2.以下程序的输出结果是()
#include<
main()
inta=1,b=2,c=3;
printf(“%d”,c>
b>
a);
A)2B)1C)0D)3
3.以下正确的叙述是()
A)在C语言中,main函数必须位于文件的开头
B)C语言每行中只能写一条语句
C)C语言本身没有输入、输出语句