c语言考试题Word格式.docx
- 文档编号:840297
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:14
- 大小:21.24KB
c语言考试题Word格式.docx
《c语言考试题Word格式.docx》由会员分享,可在线阅读,更多相关《c语言考试题Word格式.docx(14页珍藏版)》请在冰点文库上搜索。
}MYTYPE;
MYTYPEa;
{printf("
%d\n"
sizeof(a));
}
A.2B.8C.14D.24
二、填空题(每空1分,共11分)
1、字符串"
A"
在内存中占用的字节数为。
2、C语言中的标识符只能由字母、下划线和组成。
3、若有定义语句“inta=25,b=14,c=19;
"
以下语句的执行结果是
if(a++<
=25&
&
b--<
=2&
c++)printf("
***a=%d,b=%d,c=%d\n"
a,b,c);
elseprintf("
###a=%d,b=%d,c=%d\n"
4、有如下定义a[]="
B\172\\\'
a%%"
;
strlen(a));
的结果为。
5、若有定义:
inta[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i;
for(i=0;
i<
4;
i++)p[i]=&
a[i*3];
则*(*(p+1)+2)的值为,*p[2]的值为。
若数组的首地址为2000,则p[1]指向的地址为。
6、设a=2,b=3,x=3.5,y=2.5,则表达式(float)(a+b)/2+(int)x%(int)y的结果是。
7、设x、y都是int型变量,初值都为1,则执行表达式:
--x&
y++后,y的值为。
8、语句for(i=1;
i==10;
i++)continue;
循环的次数是。
9、以下程序输出。
{enumem{em1=3,em2=1,em3};
char*aa[]={"
AA"
"
BB"
CC"
DD"
%s%s%s\n"
aa[em1],aa[em2],aa[em3]);
三、写程序结果(每题5分,共35分)
1、#include
{intx,y,z;
x=1,y=2,z=3;
x+=y+=z;
printf("
1:
z+=x>
y?
x++:
y++);
x=0x02ff;
y=0xff00;
2:
(x&
y)>
>
4|0x005f);
x=y=z=-1;
++x||++y&
++z;
3:
%d,%d,%d\n"
x,y,z);
2、#definef(x)x*x
{inta=6,b=2,c;
c=f(a+b)/f(b);
printf(“%d\n”,c);
3、fun(intk)
,k);
if(k>
0)
fun(k-1);
main()
{intw=5;
fun(w);
\n"
);
4、#include
{intx=1,y=0;
switch(x)
{case1:
switch(y)
{case0:
printf(“first\n”);
break;
case1:
printf(“second\n”);
case2:
printf(“third\n”);
5、#include
{intk=4;
func(k);
func(k);
func(inta)
{staticintm=0;
m+=a;
m);
6、structst
{intx;
int*y;
}*p;
ints[]={30,20};
structsta[]={1,&
s[0],2,&
s[1]};
{p=a;
%d,"
p->
x);
++(*(++p)->
y));
7、假定在当前盘目录下有2个文本文件,其名称和内容如下:
文件名:
a1.txta2.txt
内容:
ABCDEF#abcdef#
#include"
stdio.h"
{FILE*fp;
voidfc();
if((fp=fopen("
a1.txt"
r"
))==NULL)
{printf("
Cannotopenfile!
exit
(1);
else{fc(fp);
fclose(fp);
a2.txt"
voidfc(fp1)
FILE*fp1;
{charc;
while((c=fgetc(fp1))!
='
#'
)putchar(c);
四、程序填空(每空2分,共14分)
1、下面程序求矩阵a的主对角线元素之和,请填空。
{inta[3][3]={2,4,6,8,10,12,14,16,18};
intsum=0,i,j;
for(i=0;
3;
①)
for(j=0;
②;
j++)
if(i==j)sum=sum+③;
sum=%d\n"
sum);
2、下列函数coy把字符数组S2中的全部字符复制到字符数组S1中,复制时’\0’也要复制过去,’\0’后面的字符不用。
coy(chars1[],chars2[])
{inti;
s2[i]!
=①;
i++)
s1[i]=s2[i];
②;
3、下面程序的功能是将字符串a中的下标为奇数的元素由小到大排序,其他元素不变,请填空。
{chara[]="
students"
t;
inti,j;
for(i=1;
7;
i+=2)
for(j=i+2;
j<
8;
if(②)
{t=a[i];
a[i]=a[j];
a[j]=t;
puts(a);
c语言考试题
(二)
一.填空题(每题2分,共20分)
1.C语言基本数据类型有:
_______________________________;
构造类型有:
_____________________________________。
P.13
2.C语言源程序注注释符号是:
________________________________,
为表明层次结构,C语言源程序通常采用_____________________格式编写。
P.4
3.源程序TEST.C经编译产生的目标文件是:
________________________;
经连接处理后,产生的可执行文件是:
__________________________。
4.strlen(“1234\0xy)的值为:
_____________________________;
sizeof(float)的值为:
____________________________
5.二维数组a[10][50]最后一行的首地址为:
_________________________;
最后一个元素的首地址为:
____________________________________。
6.C标准库函数中,数学函数的原型在:
________________头文件中,自定义头文件D:
\MYC\MY.H应如何包含到源程序文件中:
_________________________。
P.130
7.已知函数定义为:
intstat(int a,float*p)
{……………}
则此函数的两个参数类型分别是_______________、_____________________。
8.设intx,y,z=4;
x=y=++z;
x=(y>
z)?
x+2;
x++;
则x的值是:
_________;
设inta=0,b=0,c=0;
c=++a||b++;
,则a、b、c值分别是:
_____________。
9.与if(x=0)等价的写法是if(!
x);
判断两个(float)变量x,z是否相等一般:
if(fabc(x-z)<
1e-6)。
10.已知赋值语句zhang.year=1985;
可判断zhang是_______________类型的变量;
定义文件指针的C语句是:
_________________________________。
二.单项选择题(每题1分,共10分)
1.组成C程序的基本单位是____________________________。
A.函数B.标识符C.表达式D.语句
2.设int类型的数据长度为2字节,则该类型数据的取值范围是__________________。
A.0至65536B.0至65535
C.-32767至32768D.-32768至32767
3.在C语言中,逻辑值“真”是用_____________________表示的。
A.预定义为真值的宏B.非零数
C.正数D.非零整数
4.C语言对于嵌套if语句规定else总是与_____________________匹配。
A.与最外层的ifB.与之前最近的if
C.与之前最近的不带else的ifD.与最近的{}之前的if
5.数组定义chara[10]={`a`,`b`,`c`}:
包括了几个元素____________________。
A.3B.9C.4D.10
6.数组名作为实参传给被调用的函数时,形参获得的是_____________________。
A.该数组第一个元素的值B.该数组所有元素的值
C.该数组第一个元素的首地址D.该数组所有元素的首地址
7.为表示关系x≥y≥z,正确的C语言表达式为_________________________。
A.(x>
=>
y>
=z)B.(x>
=y)AND(y>
=z)
C.(x>
=y)&
(y>
=z)D.(x>
y)&
8.根据定义inta[]={1,2,3},i,*p=a;
从语法分析_________________是不正确的。
A.a[p-a]B.*(&
a)C.pD.*(*(a+i))
9.若有语句scanf(“%d%d”,&
a,&
b);
要使变量a,b分别得到12和34;
正确的输入形式为____________________________。
A.1234B.12,34C.1234D.12:
34
10.unionuex{inti;
floatf;
charc;
}ex;
则sizeof(ex)的值是____________________。
A.4B.5C.6D.7
三.分析程序,写出运行结果。
(每题4分,共20分)
1.源程序如下,运行时假定键盘输入字符串为``2004``
#include
voidmain(void)
{
intn=0;
charc;
while((c=getchar())!
=`\n`)/*字符型数字*/
if(c>
=`0`&
c<
=`9`)
n=n*10+c-`0`;
/*数字*/
printf(“value=%d|n”,n);
结果为:
value=2004。
2.源程序如下:
intnum[9]={399,398,397,396,395,299,290,311,301};
intscore[9]={81,85,59,77,90,66,89,93,73};
intiMax,iPos,i;
iPos=0;
iMax=score[iPos];
for(i=1;
9;
if(score>
iMax)
iPos=i;
iMax=score[iPox];
printf(“num=%d,score=%d”,num[iPos];
score[iPos]);
num=311,score=93。
3.源程序如下,运行时假定键盘输入数据为:
12345678910
inti,a[10];
int*p;
p=a;
for(i=0;
10;
scanf(“%d“,p++);
for(p=a;
p<
SPAN>
;
p++)
if(*p%2)printf(“%3d”,*p);
13579。
4.源程序如下,两次运行,分别输入数据13和21
intn,s;
scant(“%d”,&
n);
s=panduan(n);
if(s==1)printf(“yes\n”);
elseprintf(“no\n);
intpanduan(intn)
intk,j;
k=(int)sqrt((double)n);
for(j=2;
=k,j++)
if(n%j==0)break;
if(j>
k)retum
(1);
elseretum(0);
结果为yes
no
5.源程序如下,运行时假定键盘输入字符为:
AxByCz
charstr[80];
inti;
gets(str);
str!
=`\0`;
if(str>
=`a`&
str<
=`z`)str-=32;
elseif(str>
=`A`&
=`Z`)str+=32;
puts(str);
aXbYcZ。
四.下列程序中每个划线处有一个错误,改正划线中的错误,使其实现题目要求。
(每体4分,共20分)
1.求s=1+2+3+、、、、、、、+100
include改正为_________________________。
voidsum(void)改正为_________________________。
ints,i;
for(s=0,i=1;
=100;
s=s+i++;
改正为__________________________。
printf(“s=%f”,s)改正为__________________________。
2.源程序实现求x
doublepow(float.int)改正为_________________________。
inti,n;
floatx;
scanf(“%f,%d”,&
x,&
n);
for(i=1;
i<
9;
printf(“%d,%e\n”,i,pow(i,x);
}改正为______________________。
doublevvpow(floatx,intn)
inti;
doublep=0;
改正为______________________。
i++)>
改正为_______________________。
p*=x;
retum(p);
3.源程序实现排升序。
inti,j,iMin,a[10]={4,3,5,1,10,12,2,6,7,9},iTemp;
for(i=0;
i++)
iMin=0;
改正为_______________________。
for(j=i+1;
j<
10;
if(a[iMin]<
iMin="
j;
if(iMin==i)改正为_________________________。
{iTemp=a;
a[iMin]=a;
改正为_________________________。
a[iMin]=iTemp;
printf(“%4d”,a):
4.源程序为求平均值。
inti,sum;
改正为____________________。
floatavg;
intsc[10],*p=sc;
for(i=0,i<
i++)改正为____________________。
scanf(“%d”,p++);
sum+=*p;
avg=sum/10;
改正为___________________。
printf(“avg=%f”,avg);
5.源程序求eX=1+x+x2/2!
+……+xn/n!
前n+1项之和
voidmain(void>
floatexp,x,t;
scanf(“%f,%d”,&
x,&
t=0;
exp=1.0;
for(i=1;
=n;
if(t<
1e-6)loop;
改正为__________________。
t+=x/i;
exp*=t;
printf(“\n%15.6f”,exp);
五.编程题(每题6分,共30分)
1.根据以下程序框架,编写子函数,实现交换两个整型变量x和y的值。
voidswap(int*,int*);
voidmain(void)
intx,y;
scanf(“%d,%d”,&
y);
swap(&
printf(“%d,%d”,x,y);
voidswap()
2.设某班人数36人,参加C语言考试,用一维数组score[36]存放考试成绩,已给出一部分程序,完善以下程序,使其实现统计并输出不及格人数及百分比。
floatscoer[36],precent;
intcount=0;
36;
scanf(“%f”,&
score);
3.完善以下程序使其实现由键盘任意输入一串字符,统计其中大写字母个数iA、小写字母个数ia、其他字符个数iother。
charstr[80];
inti,iA=0,ia=0,iother=0;
4.完善以下程序使其实现求方阵主和辅对角线元素之和及其转置矩阵,设方阵用二维数组a表示,转置矩阵用t表示,sl和s2表示主和辅对角线元素之和。
inta[3][3]={1,3,5,7,9,11,13,15,11};
inti,j,s1,s2;
intt[3][3];
printf(“%d,%d,\n”,s1,s2);
j++)
printf(“%3d”,t[j]);
5.已知字符数组str[80],编写返回指针的子函数,实现在其中查找字符ch首次出现的位置。
char*lstrchar(char*,char);
charc,*p,str[80];
gets(str);
scanf(“%c”,&
c);
p=lstrchar(str,c);
if(p==NULL)printf(“char%cnotfound\n”c);
elseprintf(“Thepositionis%d”,p-str);
char“lstrchar()
{}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 考试题