《C语言程序设计》期末复习题Word格式.docx
《《C语言程序设计》期末复习题Word格式.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》期末复习题Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
A.可以用*p表示s[0]
B.s数组中元素的个数和p所指字符串长度相等
C.s和p都是指针变量
D.数组s中的内容和指针变量p中的内容相等
9.以下正确的函数定义是()。
A.doublesum(intx,inty)B.doublesum(intx,y)
{z=x+y;
returnz;
}{intz;
C.sum(x,y)D.doublesum(intx,inty)
{intx,y;
doublez;
{doublez;
z=x+y;
}z=x+y;
}
10.已知学生信息描述为
structstudent
{
intno;
charname[20];
charsex;
struct{intyear;
intmonth;
intday;
}birth;
};
structstudents;
设变量s中的“生日”应是“1984年11月11日”,下列对“生日”的正确赋值方式是()。
A.year=1984;
month=11;
day=11;
B.birth.year=1984;
birth.month=11;
birth.day=11;
C.s.year=1984;
s.month=11;
s.day=11;
D.s.birth.year=1984;
s.birth.month=11;
s.birth.day=11;
11.下列数据中,为字符串常量的是()。
A.′A′B.Howdoyoudo.C."
A"
D.$abc
12.以下运算符中,优先级最高的运算符是()。
A.||B.%C.!
D.==
13.执行以下程序段后,输出结果和a的值是()。
inta=10;
printf("
%d"
++a);
A.10和10B.10和11C.11和10D.11和11
14.有定义语句:
intx,y;
若要通过scanf("
%d%d"
&
x,&
y);
语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,正确的是()。
A.1112<
回车>
B.11,<
空格>
12<
C.11,12<
D.11,<
12<
15.下列定义数组的语句中,正确的是( )。
A.intx[0..10];
B.intx[];
C.#defineN10D.intN=10;
intx[N];
intx[N];
16.若已定义x为int类型变量,下列语句中说明指针变量p的正确语句是()。
A.intp=&
x;
B.int*p=x;
C.*p=*x;
D.int*p=&
17.以下不是无限循环的语句为()。
A.for(y=0,x=1;
x>
++y;
x=i++)i=x;
B.for(;
;
x++=i);
C.while
(1){x++;
D.for(i=10;
i--)sum+=i;
18.有以下函数,函数的功能是( )。
intfun(char*x,char*y)
{ intn=0;
while((*x==*y)&
*x!
='
\0'
){x++;
y++;
n++;
returnn;
A.将y所指字符串赋给x所指存储空间
B.查找x和y所指字符串中是否有'
C.统计x和y所指字符串中最前面连续相同的字符个数
D.统计x和y所指字符串中相同的字符个数
19.语言中,定义结构体的保留字是()。
A.unionB.structC.enumD.typedef
20.应用缓冲文件系统对文件进行读写操作,关闭文件的函数名为()。
A.openB.fopenC.closeD.fclose
21.在C语言中,if语句后的一对原括号中,用以决定分支的流程的表达式()。
A.只能用逻辑表达式B.只能用关系表达式
C.只能用逻辑表达式或关系表达式D.可用任意表达式
22.假设所有变量均为整型,表达式:
a=2,b=5,a>
b?
a++:
b++,a+b的值是()。
A.7B.8C.9D.2
23.若有如下代码,则a的值为()。
inta=1,b=2,c=3;
if(a>
b)a=b;
c)a=c;
A.1B.2C.3D.不一定
24.假定所有变量均已正确定义,下列程序段运行后x的值是()。
k1=1;
k2=2;
k3=3;
x=15;
if(!
k1)x--;
elseif(k2)x=4;
elsex=3;
A.14B.4C.15D.3
25.以下for循环的执行次数是for(x=0,y=0;
(y=123)&
(x<
4);
x++);
()。
A.是无限循环B.循环次数不定C.4次D.3次
26.以下运算符中,优先级最高的运算符是()。
A.||B.%C.!
D.==
27.有定义语句:
%d,%d"
语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是()。
28.chara[10];
不能将字符串"
abc"
存储在数组中的是()。
A.strcpy(a,"
);
B.a[0]=0;
strcat(a,"
C.a="
D.inti;
for(i=0;
3;
i++)a[i]=i+97;
a[i]=0;
29.以下程序段char*alp[]={"
ABC"
"
DEF"
GHI"
intj;
puts(alp[1]);
的输出结果是()。
A.AB.BC.DD.DEF
30.若执行fopen函数时发生错误,则函数的返回值是()。
A.地址值B.0C.1D.EOF
二、读程序,写出程序的运行结果
1.以下程序的输出结果是()。
#include<
stdio.h>
voidmain()
{intx=0,y=1,a=0,b=0;
switch(x)
{
case0:
switch(y)
case0:
a++;
case1:
b++;
a=a+5;
b=b+5;
printf(“a=%d,b=%d\n”,a,b);
2.以下程序的输出结果是()
#include<
voidmain()
{intx=-5,y=2,z=1;
if(x<
y)
if(y<
0)z=0;
elsez=z+1;
printf(“%d\n”,z);
3.以下程序的输出结果是:
()
#include"
stdio.h"
voidmain()
intj,k,x[4][4],y[4][4];
for(j=0;
j<
4;
j++)
for(k=0;
k<
k++)
x[j][k]=j+k;
y[k][j]=x[j][k];
{for(k=0;
printf("
%d"
y[j][k]);
\n"
4.以下程序的输出结果是:
{inti,j;
for(i=j=1;
10;
j++,i++)
if(j==5)
break;
if(i%2)
continue;
i=%d,j=%d\n"
i,j);
5.若有以下程序段,则输出结果是(
)。
voidmain()
chars2[]="
\"
c:
\\abc.dat\"
"
printf(“%s\n”,s2);
}
6.以下程序的输出结果是:
intfun(intn)
{ints;
if(n==1||n==0)s=5;
elses=n+fun(n-1);
returns;
{
%ld\n"
fun(3));
7.以下程序的输出结果是:
{inta[]={2,4,6,8,10};
inty=120,x,*p;
p=&
a[1];
for(x=0;
x<
x++)y+=*(p+x);
printf("
y=%d\n"
y);
8.以下程序的输出结果是:
#include<
voidsub(ints[],inty)
staticintt=3;
y=s[t];
t--;
inta[]={1,2,3,4},i,x=0;
i<
i++)
sub(a,x);
printf(“%d”,x);
printf(“\n”);
9.以下程序段运行后x的值是:
k2=0;
10.以下程序的输出结果是:
main()
{ints=0,n;
for(n=0;
n<
n++)
{switch(n)
{default:
s+=5;
case1:
s+=1;
case2:
s+=2;
case3:
s+=3;
%d\n"
s);
11.以下程序段运行后sum的值是:
inta[3][3]={{3,5},{8,9},{12,35}},i,sum=0;
i++)sum+=a[i][2-i];
12.以下程序的输出结果是:
intmain()
inti=10,n=0,m=0;
do
if(i%2!
=0)
n=n+i;
else
m=m+i;
i--;
}while(i>
=0);
n=%d,m=%d\n"
n,m);
return0;
13.以下程序的输出结果是:
inta,b;
for(a=1,b=1;
=100;
a++)
if(b>
20)break;
if(b%4==1)
{
b=b+4;
continue;
}
b=b-5;
b=%d\n"
b);
14.以下程序的输出结果是:
funa(inta)
{intb=0;
staticintc=4;
a=c++,b++;
return(a);
{inta=2,i,k;
2;
i++)
k=funa(a++);
k);
15.以下程序的输出结果是:
voidmain(void)
chara[]="
ABCDEFGH"
b[]="
abcDefGh"
char*p1,*p2;
intk;
p1=a;
p2=b;
=7;
if(*(p1+k)==*(p2+k))
printf("
%c"
*(p1+k));
16.以下程序的输出结果是:
string.h>
inti;
charstr1[30]="
str2[3][5]={"
defg"
hij\0"
klm"
for(i=1;
strcat(str1,str2[i]);
puts(str1);
17.以下程序的输出结果是:
intm=7,n=4;
floata=38.4,b=6.4,x;
x=m/2+n*a/b+1/2;
%.4f\n"
x);
18.以下程序段的输出结果是:
inta=3,b=2,c=1;
b>
c)a=b;
elsea=c;
a);
19.以下程序的输出结果是:
intfunc(intx,inty)
{return(x+y);
inta=1,b=2,c=3,d=4,e=5;
func((a+b,b+c,c+a),(d+e)));
20.下列程序执行后的输出结果是()。
inta[3][3],*p,i;
a[0][0];
for(i=0;
9;
i++)p[i]=i+1;
a[1][2]);
21.以下程序的输出结果是:
voidfun(inta[]);
{inti,a[5]={1,2,3};
fun(a);
for(i=0;
5;
%5d"
a[i]);
voidfun(inta[])
{inti;
a[i]+=5;
22.以下程序的输出结果是:
{inti,f[10];
f[0]=f[1]=1;
for(i=2;
f[i]=f[i-2]+f[i-1];
f[i]);
23.以下程序的输出结果是:
{intm=1,n=2,*p=&
m,*q=&
n,*r;
r=p;
p=q;
q=r;
%d,%d,%d,%d\n"
m,n,*p,*q);
24.以下程序的输出结果是:
charstr[20]="
abcdef"
strcpy(str,"
opqrst"
str[5]='
strlen(str)-1;
putchar(str[i]);
三、程序填空
1.任意输入一个非负的整数x,求该数的逆序数y,并判断x、y能否被17整除。
{intx,a,y,t;
请输入一个非负的整数\n"
scanf("
x);
t=x;
【1】
{a=x%10;
//取得个位数字
【2】;
//获得逆序数
x=x/10;
//去掉个位数字
}while(【3】);
if(【4】)printf("
x能被17整除\n"
elseprintf("
x不能被17整除\n"
if(y%17==0)printf("
y能被17整除\n"
y不能被17整除\n"
2.有一行文字,要求删去某一个字符。
此行文字和要删去的字符均由键盘输入,要删去的字符以字符形式输入(如输入a表示要删去所有的a字符)。
#include<
voidmain()
{/*str1表示原来的一行文字,str2表示删除指定字符后的文字*/
charstr1[100],str2[100];
charch;
inti=0,k=0;
printf(“pleaseinputansentence:
\n”);
gets(【5】);
ch);
for(i=0;
【6】;
if(str1[i]!
=ch)
{str2[【7】]=str1[i];
k++;
str2[【8】]='
\n%s\n"
str2);
3.下面给定程序中函数fun的功能是:
求k!
,所求阶乘的值作为函数值返回。
例如:
若k=10,则应输出:
3628800。
请按要求把程序补充完整,使它能得出正确的结果。
longfun(intk)
{if(k>
0)
return(【9】);
elseif(【10】)
return1L;
{intk=10;
%d!
=%ld\n"
k,fun(k));
4.函数fun的功能是:
逆置数组元素中的值。
形参n给出数组中的数据的个数。
若a所指数组中的数据依次为:
1、2、3、4、5、6、7、8、9,则逆置后依次为:
9、8、7、6、5、4、3、2、1。
请按要求把空白部分补充完整。
voidfun(inta[],intn)
{ inti,t;
for(i=0;
【11】;
{t=a[i];
a[i]=a[n-1-【12】];
【13】=t;
} }
5.下面的程序是输出1~100之间的全部素数,其中函数prime的功能是判断一个数n是否是素数。
当n是素数时,函数prime的返回值为1;
当n不是素数时,函数prime的返回值为0。
请按要求把程序补充完整。
math.h>
intprime(intn)
{inti;
=sqrt(n);
if(【14】)return0;
return1;
【15】;
if(【16】)printf("
%5d"
i);
6.下面程序的功能是:
由键盘输入10个整数,计算这10个整数中的奇数和与偶数和。
{inta,b,c,i;
a=c=0;
=10;
{scanf("
b);
if(【17】)a=a+b;
else【18】;
偶数的和=%d\n"
奇数的和=%d\n"
c);
7.下面给定程序的功能是:
从键盘输入的字符中统计数字字符的个数,用换行符结束循环。
{intn=0,c;
c=getchar();
while(【19】)
{if(【20】)
n++;
【21】个数字\n"
n);
8.程序的功能是:
求矩阵的转置。
stdlib.h>
std