c语言期末测试题附答案Word格式文档下载.doc
《c语言期末测试题附答案Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《c语言期末测试题附答案Word格式文档下载.doc(11页珍藏版)》请在冰点文库上搜索。
i,&
j,&
k);
printf(“%d,%d,%d\n”,i,j,k);
A)12345678B)123,456,78C)123,45678D)123,*45678
3、判断char类型的变量c1是否为数字字符的正确表达式为【】。
A)(c1>
=0)&
&
(c1<
=9)B)(c1>
=’0’)&
=’9’)
C)’0’<
=c1<
=’9’D)(c1>
=’0’)||(c1<
4、若有语句inta=1,b=2,c=3;
则以下值为0的表达式是【】。
A)’a’&
’b’B)a<
=bC)((a>
b)||(b<
c)D)(!
(a+b)==c&
a)
5、已知:
inta[2][3];
则对数组元素的非法引用是【】
A.*(a[0]+2)B.a[1][3]C.a[1][0]D.*(*(a+1)+2)
6、在循环语句的循环体中执行break语句,其作用是【】。
A)跳出该循环体,提前结束循环
B)继续执行break语句之后的循环体各语句
C)结束本次循环,进行下次循环
D)终止程序运行
7、执行语句for(i=10;
i>
0;
i--);
后,变量i的值为【】。
A)10B)9C)0D)1
8、若有int*p1,*p2,k;
不正确的语句是【】
A.p1=&
kB.p2=p1
C.*p1=k+12D.k=p1+p2
9、在函数中未指定存储类别的局部变量,其隐含的存储类别是【】
A.静态(static) B.外部(extern)
C.自动(auto) D.寄存器(register)
10、如下程序的输出结果是【】
main()
{intx=2,a=0,b=0;
switch(x)
{case2:
a++;
b++;
case1:
++a;
b--;
break;
case0:
b++;
}
printf("
a=%d,b=%d\n"
a,b);
}
A.a=2,b=0B.a=2,b=1C.a=1,b=1D.a=1,b=0
11、表示关系a<
b<
=c的C语言表达式为【】
A.(a<
b)&
(b<
=c)B.(a<
b)AND(b<
=c)
C.(a<
=c)D.(a<
12、有以下程序
#include<
stdio.h>
main()
{intx;
scanf(“%d”,&
x);
if(x<
=3)
;
else
if(x
!
=10)printf(“%d\n”,x);
}
程序运行时,输入的值在哪个范围才会有输出结果。
【】
A.不等于10的整数B.大于3且不等于10的整数
C.大于3或不等于10的整数D.小于3的整数
13、break语句的正确用法是【】
A.无论在任何情况下,都中断程序的执行,退出到系统下一层。
B.在多重循环中,只能退出最靠近的那一层循环语句。
C.跳出多重循环。
D.只能修改控制变量。
14、若a,b,c,d均为整型变量,执行以下程序段后的t的值为【】
#defineMAX(A,B)(A)<
(B)?
(A):
(B)
................
a=5;
b=3;
c=3;
d=4;
t=MAX(a+b,c+d)*10;
A.70B.7C.8D.80
15、执行以下程序段后,m的值为【】
inta[6]={1,2,3,4,5,6},m,*p;
p=&
a[0];
m=(*p)*(*(p+2))*(*(p+4));
A)15B)14C)13D)12
第二部分非选择题(共70分)
二、判断题(本大题共10小题,每题1分,共10分,答T表示说法正确.答F表示说法不正确,本题只需指出正确与错误,不需要修改)
16.字符型数据不可以进行加减运算。
【】
17.函数定义与函数的声明是一回事。
18.在C语言中函数能嵌套调用,也能嵌套定义。
【】
19.在C语言中switch语句必须使用break语句。
【】
20.for循环中的三个表达式都可以省略。
【】
21.do-while循环是先进行循环体语句,后判断表达式。
【】
22.只能在main()函数中定义静态变量。
【】
23.char*s1=“Ilovechina”;
定义了一个指针变量s1,它的初值为字符串“Ilovechina”的首地址。
【】
24.int*p[4];
与int(*p)[4];
的作用相同,都是定义了一个指向数组的指针。
【】
25.预处理命令行最后也是以分号(;
)结尾的。
【】
三、填空题(本大题共6小题,每题3分,共18分。
)
26、在C语言中*作为单目运算符时表示____________,作为双目运算符时表示__________,而作为一种标记时表示______________。
27、表达式(a=3*5,a*4),a+5中a的值是__________,整个表达式的值是_________。
28、设有如下的类型说明:
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
若数组所占内存单元的起始地址为446且整型数据占2个字节,则p+5=_______,*(p+5)=______。
29、若定义了如下的共用体类型变量x和结构类型变量y,则x和y所占用的内存字节数分别为_________和__________。
unionstu1structstu2
{intnum;
{intnum;
charname[5];
charname[5];
chars;
}x;
chars;
}y;
30、在TC中CTRL+F9的功能是__________、__________和_____________。
31、有以下程序
{charc1,c2;
scanf(“%c”,&
c1)
while(c1<
65||c1>
96)scanf(“%c”,&
c2=c1+32;
printf(“%c,%c”,c1,c2);
程序运行输入65回车后,能否输出结果。
(请回答能或不能)______。
四、简答题(本大题共2小题,每题3分,共6分。
32、C语言中变量的存储类别有几种?
局部变量的缺省存储类别是哪种。
33、请解释以下与一个C程序有关的3种文件(需要说明这些文件是什么文件、如何形成的):
(1)file.c
(2)file.obj(3)file.exe
五、阅读程序回答问题(本大题共4小题,每题5分,共20分)
34、#include<
voidmain()
{inta=10,b=18;
fun1(a,b);
intfun1(intx,inty)
{if(x>
y)
printf("
a>
b\n"
);
elseif(x<
y)printf("
a<
elseprintf("
a==b\n"
问题:
(1)写出程序的运行结果;
(2)分别列出形参和实参;
(3)解释#include<
。
35、intfun(inta)
{intb=0;
staticintc=3;
b=b+1;
c=c+1;
return(a+b+c);
main()
{inta=2,i;
for(i=0;
i<
3;
i++)
printf(“%d”,fun(a));
(1)写出该程序的运行结果;
(2)如果将staticintc=3;
语句改写成intc=3;
,则运行结果如何变化?
为什么?
36、main()
{inta[2][3]={1,2,3,4,5,6},b[3][2],i,j;
printf(“arraya:
\n”);
for(i=0;
i<
=1;
i++)
{for(j=0;
j<
=2;
j++)
{printf(“%5d”,a[i][j]);
b[j][i]=a[i][j];
}/*第七行*/
printf(“\n”);
printf(“arrayb:
{for(j=0;
j++)
printf(“%5d”,b[i][j]);
(1)写出程序的运行结果;
(2)如果将第七行中的b[j][i]=a[i][j];
语句改写成b[i][j]=a[i][j];
,则结果如何变化。
37、#include<
voidfun(int*p1,int*p2)
{ intt;
t=*p1;
*p1=*p2;
*p2=t;
}
{ intx,y;
int*p1,*p2;
scanf("
%d%d"
&
x,&
y);
p1=&
x;
p2=&
y;
if(x>
y)fun(p1,p2);
printf("
x=%d,y=%d"
x,y);
(1)该程序的功能是什么;
(2)程序中的*和&
分别代表什么运算符?
(3)若输入53,则运行结果如何?
六、编写程序(本大题共1小题,共10分。
38、输入两个正整数m和n,求其最大公约数和最小公倍数。
(先画N-S图,然后再编写程序代码)
七、程序填空(本大题共1小题,共6分。
39、invert()函数的功能是将一个字符串str的内容倒序存放。
例如:
字符串str原内容为:
abcde,函数调用后变为:
edcba。
voidinvert(charstr[])
{inti,j,k;
j=______________;
for(i=0;
strlen(str)/2;
i++,j--)
{k=str[i];
str[i]=str[j];
str[j]=_____________;
}
}
{chartest[]="
abcde"
invert(test);
printf("
%s\n"
test);
A100002座位号:
《计算机技术基础(C语言)》试卷A标准答案
班级:
一、单项选择题(本大题共15小题,每题只有一个正确答案,答对一题得2分,共30分)
1、D2、C3、B4、D5、B
6、A7、C8、D9、C10、A
11、A12、B13、B14、A15、A
16、F17、F18、F19、F20、T
21、T22、F23、T24、F25、F
26、指向(1份),乘(1分);
定义的变量是指针变量(1分)
27、15(2分),20(1分)
28、456(2分),6(1分)
29、5(2分)、8(1分)
30、编译(1分)、连接(1分)、运行(1分)
31、不能(3分)
32(3分)、32、C语言中变量的存储类别有几种?
变量的存储类别分为两大类:
静态存储类和动态存储类。
具体包含四种:
自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。
局部变量的缺省存储类别是auto变量。
33(3分)、请简单说明C程序的执行过程。
答:
(1)file.c是源文件,通过编辑得到;
(2)file.obj是目标文件,即计算机能够处理的由二进制指令组成的文件,通过对源文件进行编译得到;
(3)file.exe是可执行文件,通过将目标文件与其他目标文件或库函数连接得到。
五、阅读程序回答问题(本大题共4小题,每题5分,共20分)
34、(
(1)(2分)程序的运行结果:
b
(2)(1分)形参:
x,y;
实参:
a,b
(3)(2分)#include<
是文件包含预处理命令,是将标准输入输出头文件stdio.h包含到该程序中。
35、
(1)(2分)运行结果789
(2)(3分)运行结果变成777
因为在原来的程序中用static定义的变量c是局部静态变量,具有全局寿命,而修改后,变量c变成了局部动态变量,在函数调用出现时给这个变量分配内存单元。
36、
(1)(3分)运行结果arraya:
arrayb:
12314
45625
36
(2)(2分)输出结果为:
arraya:
12312
45645
随机数随机数
37、
(1)该程序的功能是由小到大输出两个数
(2)*表示指向运算符;
&
表示取地址运算符。
(3)x=3,y=5
输入n,m
n<
m
TF
t=n;
n=m;
m=t;
p=n*m;
m!
=0
r=n%m;
m=r;
最大公约数n,最小公倍数p/n
38、输入两个正整数m和n,求其最大
公约数和最小公倍数。
(先画N-S流程图,
然后编写程序)。
{intp,r,m,n,t;
scanf(“%d,%d”,&
n,&
m);
if(n<
m)
{t=n
n=m
m=t
p=n*m
while(m!
=0)
{r=n%m
m=r
zuidagongyueshu:
%d\n”,n);
zuixiaogongbeishu:
%d\n”,p/n);
39、
(1)strlen(str)-1(3分),
(2)k(3分)
计算机技术基础试题第11页(共8页)