C语言期末练习题及答案2Word文件下载.docx
《C语言期末练习题及答案2Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言期末练习题及答案2Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
![C语言期末练习题及答案2Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-12/9/334960de-12c2-441f-bbd0-6f6675cb1b19/334960de-12c2-441f-bbd0-6f6675cb1b191.gif)
fun(A,2,9);
for(i=0;
i<
5;
i++)printf("
%d"
A[i]);
程序运行后的输出结果是()(1.5分)
A.10234B.12344C.12334D.12234
5.下面程序的输出是()
{
intk=11;
printf("
k=%d,k=%o,k=%x\n"
k,k,k);
}(1.5分)
A.k=11,k=12,k=13B.k=11,k=13,k=13
C.k=11,k=013,k=oXbD.k=11,k=13,k=b
6.以下程序段的输出为:
intx=011;
printf("
%d\n"
++x);
(1.5分)
A.12B.11C.10D.9
7.执行下述程序的输出结果是()。
#include<
stdio.h>
string.h>
char*p1,*p2,str[50]="
ABCDEFG"
;
p1="
ABCD"
p2="
efgh"
strcpy(str+1,p2+1);
strcpy(str+3,p1+3);
%s\n"
str);
A.AfghDEFGB.ABfhDC.AfghDD.AfgD
8.以下语句的输出结果是()
inta=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
%d,%d,%d\n"
a,b,c);
A.0,0,5B.-10,5,-10C.5,0,5D.5,0,-10
9.阅读程序
intfunC(intB[],intn)
inti,r;
r=1;
for(i=0;
i++)
r=r*B[i];
return(r);
}
intx,A[]={2,3,4,5,6,7,8,9};
x=funC(A,3);
x);
执行下述程序的输出结果是()(1.5分)
A.720B.120C.24D.6
10.下列选项中,可作为C语言合法整数的是()(1.5分)
A.10110BB.0386C.0XffaD.x2a2
11.若有以下定义,则对A数组元素的正确引用是()
intA[5],*p=A;
A.*&
A[5]&
nbsp;
B.A+2C.*(p+5)D.*(A+2)
12.有以下程序
voidfun(int*a,inti,intj)
intt;
if(i<
j)
t=a[i];
a[i]=a[j];
a[j]=t;
fun(a,++i,--j);
}
main()
inta[]={1,2,3,4,5,6},i;
fun(a,0,5);
for(i=0;
6;
a[i]);
执行后输出结果是()(1.5分)
A.654321B.432156
C.456123D.123456
13.若定义如下变量和数组_________。
intj;
intx[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是_________。
for(j=0;
jprintf("
x[j][2-j]);
A.159
B.147
C.357
D.369
14.有以下程序:
{
inta=1,b=2,m=0,n=0,k;
k=(n=b>
a)||(m=aprintf("
%d,%d\n"
k,m);
A.0,0B.0,1C.1,0D.1,1
15.sizeof(float)是()(1.5分)
A.一个双精度型表达式B.一个整型表达式
C.一种函数调用D.一个不合法的表达式
16.在C语言的循环语句for,while,do-while语句中,用于直接中断最内层循环的语句是()(1.5分)
A.switchB.continueC.breakD.if
17.有以下程序
#include“stdio.h”
{printf("
NULL);
A.0B.1
C.-1D.NULL没定义,出错
18.
以下程序的输出结果是()
char*a[5]={"
how"
"
do"
you"
!
};
char**p;
inti;
p=a;
4;
%s"
p[i]);
A.howdoyoudo!
B.how
C.howdoyoudoD.hdyd
19.执行下面的程序后的输出结果为()
intx,y,z;
x=20,y=40,z=15;
while(y>
x)
x+=4,y-=4;
z/=2;
%d,%d,%d"
x,y,z);
A.40,36,30B.32,8,7C.32,28,7D.32,28,7.5
20.函数调用:
strcat(strcpy(str1,str2),str3)的功能是()(1.5分)
A.将串str1复制到串str2中后再连接到串str3之后
B.将串str1连接到串str2之后再复制到串str3之后
C.将串str2复制到串str1中后再将串str3连接到串str1之后
D.将串str2连接到串str1之后再将串str1复制到串str3中
二、判断题(共10题,共10分)
1.do-while语句构成的循环不能用其他语句构成的循环来代替()(1分)()
2.在for语句的一般形式中,表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。
()(1分)()
3.函数strcpy(字符数组1,字符串2)作用是将字符数组1复制到字符串2中去。
(1分)()
4.break语句只结束本次循环,而不是终止整个循环的执行。
continue语句则是结束整个循环过程,不再判断执行循环的条件是否成立。
5.在执行switch语句时,多个case语句不可以共用一组执行语句()(1分)()
6.不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰。
7.静态存储方式是在程序运行期间根据需要进行动态的分配存储空间的方式。
8.关系表达式的值是一个逻辑值,它的值为“真”或“假”。
逻辑表达式的值也是一个逻辑量,它的值也为“真”或“假”()(1分)()
9.如果被调用函数的定义出现在主调函数之前,可以不必加以声明()(1分)()
10.条件运算符的结合方向为“自左而右”。
三、填空题(共10题,共20分)
1.说明下列程序的功能________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________。
#include
voidmain()
inti,j;
floata[3][3],b[3][3],c[3][3],x;
ifor(j=0;
j{
scanf("
%f"
&
x);
a[i][j]=x;
j{
&
b[i][j]=x;
ifor(j=0;
jc[i][j]=a[i][j]+b[i][j];
i{
\n"
);
for(j=0;
c[i][j]);
}(2分)
2.阅读程序,写出执行该程序的输出结果____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________。
#include
inta=1,j=2;
inti=2;
func();
a=%d,i=%d,j=%d\n"
a,i,j);
func()
inti=5;
a=%d,i=%d\n"
a,--i);
i++;
a++;
if(a
a--;
j+=3;
a=%d,j=%d\n"
a,j);
}(2分)
3.可执行的c语言程序由一个或多个________组成。
(2分)
4.求1+2+3+4…+10之和。
main()
{intsum=0,i;
for(i=1;
i____________________________________;
printf(“%d”,sum);
5.执行下述程序的输出结果是________________________________
#include"
stdio.h"
staticchara[]="
language"
char*ptr=a;
while(*ptr)
%c"
*ptr-32);
ptr++;
6.以下程序输出的结果是____。
{inta=5,b=4,c=3,d;
d=(a>
b>
c);
d);
7.写一函数,将两个字符串连接。
voidconcatenate(charstring1[],charstring2[],charstring[])
{inti,j;
string1[i]!
=’\0’;
____________________________________________________________________________________;
string2[j]!
j++)
{chars1[100],s2[100],s[100];
\ninputstring1:
s1);
\ninputstring2:
s2);
concatenate(s1,s2,s);
thenewstringis%s"
s);
8.下述算术表达式的结果值是________。
(4+5)*3*(5/2)(2分)
9.设有变量说明语句
inta=25,b=14,c=19;
执行以下由三目运行符“”“:
”所构成的条件表达式语句,其输出结果是____________________________________________________________________。
a++printf("
***a=%d,c=%d\n"
a,b,c)
:
###a%d,b=%d,c=%d\n"
10.以下程序的输出结果是____。
voidsub(int*a,intn,intk)
if(ksub(a,n/2,2*k);
*a+=k;
voidmain()
intx=0;
sub(&
x,8,1);
四、读程序题(共5题,共20分)
1.以下程序的输出结果为____________________________________________________________________________
#include"
voidmain()
intk,i,j;
i{
for(k=1;
kfor(j=0;
}(4分)
2.阅读程序,写出执行该程序的输出结果____________________________________
floataverage(int*pa,intn)
floatavg=0.0;
n;
avg+=*(pa+i);
return(avg/n);
inta[5]={2,4,6,8,10};
floatmean;
mean=average(a,5);
mean=%f\n"
mean);
}(4分)
3.阅读程序,写出执行该程序的输出结果________________________________________________________。
#include<
intfunc(inta)
staticintx=10;
inty=1;
x+=a;
y++;
return(x+y+a);
inti=3;
while(i<
8)
%d"
func(i++));
4.请写出执行下述程序的输出结果________________________________________________________________________________________________________。
#include<
inti=100,j=34,k=-63,m=4;
intu=-15,v=71,w=27;
i+=j;
j-=k;
k*=-m;
m/=3*j-1;
u%=v-2*w;
i=%d,j=%d,k=%d,m=%d,u=%d"
i,j,k,m,u);
5.
inty=18,t=0,j,a[8];
do
{
a[t]=y%2;
y=y/2;
t++;
}while(y>
=1);
for(j=t-1;
j>
=0;
j--)
a[j]);
程序的运行结果是____________________
(4分)
五、程序设计题(共2题,共20分)
1.编写程序,根据键入的正整数n(1n10),输出相应的杨辉三角形图案。
例如当n=5时,将输出(最后一行前面有3+5=8个空格符)。
1
11
121
1331
14641
15101051
要求使用一维数组。
(10分)
2.采用函数调用方法求两个数中的最大值(10分)
1.标准答案:
C
2.标准答案:
3.标准答案:
D
4.标准答案:
5.标准答案:
6.标准答案:
7.标准答案:
8.标准答案:
A
9.标准答案:
B
10.标准答案:
11.标准答案:
12.标准答案:
13.标准答案:
14.标准答案:
15.标准答案:
16.标准答案:
17.标准答案:
18.标准答案:
19.标准答案:
20.标准答案:
错误
正确
1.程序第一段的功能是按行顺序输入数组a的元素。
程序第二段的功能是按行顺序输入数组b的元素。
程序第三段的功能是顺序累加数组a和数组b的对应元素,并将和存于数组C的对应元素中。
最后,按行顺序输出数组C的全部元素。
1.a=1,i=4
a=2,i=4
a=3,i=4
a=3,j=5
a=2,j=8
a=1,j=11
a=1,i=2,j=11
1.函数;
1.sum=sum+i;
1.LANGUAGE;
1.0;
1.string[i]=string1[i];
2.string[i++]=string2[j];
3.string[i]='
\0'
1.54;
1.###a=26,b=13,c=19;
1.7;
1.****
****
****;
1.6.000000;
1.1924303745;
1.i=134,j=97,k=252,m=0,u=-15;
1.10010;
inti,j,n;
inta[11]={1};
Entern(1scanf("
n);
/*设输入5*/
i{
for(j=1;
=;
j--)
a[j]=a[j-1]+a[j];
"
%6d"
a[j]);
{intmax(intx,inty);
/*对max函数的声明*/
inta,b,c;
scanf("%d,%d",&
a,&
b);
c=max(a,b);
printf("Maxis%d"
c);
}
intmax(intx,inty)/*定义有参函数max*/
intz;
z=x>
y?
x:
y;
return(z);