C语言总复习资料Word文档格式.docx
《C语言总复习资料Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言总复习资料Word文档格式.docx(46页珍藏版)》请在冰豆网上搜索。
D)用C程序实现的算法可以既没有输入也没有输出
8.以下不能定义为用户标识符的是()。
A)MainB)_0C)_intD)sizeof
9.以下选项中不能作为合法常量的是()。
A)1.234e04B)1.234e0.4C)1.234e+4D)1.234e0
10.数字字符0的ASCII值为48,若有以下程序
main()
{chara='
1'
b='
2'
;
%c,"
b++);
%d\n"
b-a);
}程序运行后的输出结果是()。
A)3,2B)50,2C)2,2D)2,50
11.有以下程序
成功接收文件
{intm=12,n=34;
%d%d"
m++,++n);
%d%d\n"
n++,++m);
程序运行后的输出结果是()。
A)12353514B)12353513C)12343514D)12343513
12.有定义语句:
intb;
charc[10];
则正确的输入语句是()。
A)scanf("
%d%s"
&
b,&
c);
B)scanf("
b,c);
C)scanf("
b,c);
D)scanf("
b,&
13.有以下程序
{intm,n,p;
scanf("
m=%dn=%dp=%d"
m,&
n,&
p);
%d%d%d\n"
m,n,p);
}若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是()。
A)m=123n=456p=789B)m=123n=456p=789C)m=123,n=456,p=789D)123456789\
14.有以下程序
{inta,b,d=25;
a=d/10%9;
b=a&
&
(-1);
%d,%d\n"
a,b);
A)6,1B)2,1C)6,0D)2,0
15.有以下程序
main()
{inti=1,j=2,k=3;
if(i++==1&
(++j==3||k++==3))
%d%d%d\n"
i,j,k);
}
A)123B)234C)223D)233
16.若整型变量a、b、c、d中的值依次为:
1、4、3、2。
则条件表达式a>
b||c>
d的值为()
A)1B)0C)3D)4
17.有以下程序
main(){
intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<
7)if(p[i]%2)j+=p[i];
j);
}程序运行后的输出结果是()。
A)42B)45C)56D)60
18.有以下程序
main(){chara[7]="
a0\0a0\0"
inti,j;
i=sizeof(a);
j=strlen(a);
%d%d\n"
i,j);
A)22B)76C)72D)62
19.以下能正确定义一维数组的选项是()。
A)inta[5]={0,1,2,3,4,5};
B)chara[]={0,1,2,3,4,5};
C)chara={'
A'
'
B'
C'
};
D)inta[5]="
0123"
20有以下程序
intf1(intx,inty){returnx>
y?
x:
y;
}
intf2(intx,inty){returnx>
y:
x;
main(){inta=4,b=3,c=5,d=2,e,f,g;
e=f2(f1(a,b),f1(c,d));
f=f1(f2(a,b),f2(c,d));
g=a+b+c+d-e-f;
%d,%d,%d\n"
e,f,g);
A)4,3,7B)3,4,7C)5,2,7D)2,5,7
21.已有定义:
chara[]="
xyz"
b[]={'
x'
y'
z'
,以下叙述中正确的是()。
A)数组a和b的长度相同B)a数组长度小于b数组长度
C)a数组长度大于b数组长度D)上述说法都不对
22.有以下程序
voidf(int*x,int*y)
{intt;
t=*x;
*x=*y;
*y=t;
}
{inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;
p=a;
q=&
a[7];
while(p{f(p,q);
p++;
q--;
8;
i++)printf("
%d,"
a[i]);
A)8,2,3,4,5,6,7,1,B)5,6,7,8,1,2,3,4,C)1,2,3,4,5,6,7,8,D)8,7,6,5,4,3,2,1,
23有以下程序
inta[3][3],*p,i;
p=&
a[0][0];
9;
i++)p[i]=i;
a[1][i]);
}程序运行后的输出结果是()。
A)012B)123C)234D)345
24以下叙述中错误的是()。
A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B)数组名代表的是数组所占存储区的首地址,其值不可改变
C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”出错信息
D)可以通过赋初值的方式确定数组元素的个数
25为了判断两个字符串s1和s2是否相等,应当使用()。
A)if(s1==s2)B)if(s1=s2)C)if(strcpy(s1,s2))D)if(strcmp(s1,s2))
二、阅读程序填空(每小题3分,共30分)
1.以下程序运行时,若从键盘输入:
102030<
回车>
,输出的结果是
(1)。
#include
main()
{inti=0,j=0,k=0;
scanf("
%d%*d%d"
i,&
j,&
k);
printf("
2.以下程序运行后的输出结果是
(2)。
#defineS(x)4*x*x+1
main(){inti=6,j=8;
S(i+j));
3.以下程序运行后的输出结果是(3)。
main(){inta=3,b=4,c=5,t=99;
if(bif(aprintf("
a,b,c)}
4.以下程序运行后的输出结果是(4)。
main(){inta,b,c;
a=10;
b=20;
c=(a%b<
1)||(a/b>
1);
a,b,c);
5以下程序运行后的输出结果是(5)。
main(){charc1,c2;
for(c1='
0'
c2='
9'
c1printf("
\n"
6.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:
B33<
,则输出结果是(6)。
#include
main(){chara,b;
a=getchar();
a=a-'
+'
b=b*2;
%c%c\n"
7.以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。
请填空。
voidfun(int,int,int(*)[4],int*);
main(){inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,b);
i++)printf("
%4d"
b[i]);
voidfun(intm,intn,intar[][4],int*br)
{inti,j,x;
i{x=ar[i][0];
for(j=0;
j(7)=x;
}}
10.以下程序运行后的输出结果是(10)。
main(){charch[]="
abc"
x[3][4];
inti;
i++)strcpy(x[i],ch);
%s"
x[i][i]);
8.以下程序运行后的输出结果是(8)。
voidswap(intx,inty)
t=x;
x=y;
y=t;
%d%d"
x,y);
main(){inta=3,b=4;
swap(a,b);
%d%d"
9.以下程序运行后的输出结果是(9)。
voidfun(char*s,intp,intk){inti;
for(i=p;
i}
main(){chars[]="
abcdefg"
fun(s,3,strlen(s));
puts(s);
三、程序改错题(本题共20分)
下面程序的功能是对a数组中的元素按从大到小的顺序排序。
其中有5处错误(包括语法错误和逻辑错误),请找出其中的错误,并改正之。
(每找对1个错误位置,得2分,每修改正确1个错误,再得2分。
)
#include<
stdio.h>
#defineN10;
{inta[N]={2,17,8,3,24,53,82,1,29,101};
inti,j,k,t;
{k=i;
for(j=i+1;
j<
j++)
if(a[j]<
a[k])k=j;
if(k=i)
{t=a[j];
a[j]=a[i];
a[i]=t;
}}
1.D2.B3.A4.C5.B
6.C7.C8.D9.B10.C
11A12B13A14B15D
16B17B18C19B20A
21C22D23D24C25D
二、阅读程序题(每小题3分,共30分)
1.103002.813.45994.102005.0918273645
6.1B7.br[i]8.43349.abcfg10.abcbcc
错!
应为:
#defineN10
{
inta[N]={2,17,8,3,24,53,82,1,29,101};
inti,j,k,t;
for(j=i+1;
if(a[j]<
错!
if(a[j]>
a[k])
if(k=i)错!
if(k!
=i)
{
t=a[j];
错!
t=a[k];
a[j]=a[i];
a[k]=a[i];
a[i]=t;
一.单项选择题(每小题2分,共30分)
一个程序的执行是从()。
A.本程序的main函数开始,到main函数结束
B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。
C.本程序的main函数开始,到本程序文件的最后一个函数结束。
D.本程序文件的第一个函数开始,到main函数结束。
2.设有以下定义:
defineD2
inta=0;
doubleb=1.25;
charc=’A’;
则下面语句中错误的是()。
A.a++;
B.b++;
C.c++;
D.D++;
3.有如下输入语句:
scanf(“x=%d:
y=%d”,&
x,&
y);
为使变量x的值为2002,
变量y的值为11,那么从键盘输入数据的正确格式为()。
A.200211B.x=2002:
y=11
C.x=2002y=11D.x=2002,y=11
4.设有变量定义intx=5,n=5;
计算表达式x+=n++后,变量x,n值分别为()。
A.11,6B.10,5C.10,6D.5,6
5.已知inti=5;
执行下列语句后,变量i的值为()。
switch(i)
{case4:
i+=1;
case5:
case6:
default:
A.5B.6C.7D.8
6.表示关系X<
=Y<
=Z的c语言表达式为()。
A.(X<
=Y)&
(Y<
=Z)B.(X<
=Y)AND(Y<
=Z)
C.X<
=ZD.(X<
7.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是()。
A.1B.2C.2.0D.2.5
8.表达式strcmp(“box”,“boss”)的值是一个()。
A、正数B、负数C、0D、不确定的数
9.判断字符串是否相等,应当使用()。
A.if(a==b)B.if(a=b)C.if(strcpy(a,b))D.if(!
strcmp(a,b))
10.以下叙述中不正确的是()。
A.在不同的函数中可以使用相同名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在main()函数中定义的变量是全局变量,可以被文件中的其它函数使用
11.若i和j已定义为int类型,则以下程序段中内循环体的总的执行次数是()。
for(i=5;
i;
i--)
for(j=0;
j<
4;
j++)
{.........}
A.25B.20C.24D.30
12.若有以下说明和语句:
structworker
{
intno;
char*name;
}work,*p=&
work;
则以下引用方式不正确的是()。
A.work.noB.(*p).noC.work->
noD.p->
no
13.设有定义:
inta,*pa=&
a;
则以下语句中能正确为变量a读入数据的是()。
A.scanf(“%d”,&
pa);
B.scanf(“%d”,a);
C.scanf(“%d”,pa);
D.scanf(“%d”,*pa);
14.有如下定义
structperson
{charname[9];
intage;
structpersonclass[10]={“Johu”,17,“Paul”,19,“Mary”,18,“Adam16,};
根据上述定义,能输出字母M的语句是()。
A.printf(“%c\n”,class[3].name);
B.printf(“%c\n”,class[3].name[1]);
C.printf(“%c\n”,class[2].name[1]);
D.printf(“%c\n”,class[2].name[0]);
15.若有说明inti,j=2,*p=&
i;
,则能完成i=j赋值功能的语句是()。
A.i=*p;
B.*p=j;
C.i=*j;
D.i=**p;
阅读和分析下列程序,根据程序写出程序的输出结果或填空。
(1~4小题每小题3分,5~6小题每空3分,共30分)
1.
以下程序的输出结果是:
_____。
main()
inti,s=0;
for(i=1;
i<
i+=2)
s+=i+1;
printf(“%d\n”,s);
2.
以下程序段的输出结果是:
________。
main()
{
intm=0;
while(m++<
=1)
printf("
m);
3.
#include"
stdio.h"
voidfun(intx,inty)
{x=x+y;
y=x-y;
x=x-y;
%d,%d,"
{intx=2,y=3;
fun(x,y);
printf("
4.
_______。
#include"
inta=7,b=8,*p,*q,*r;
p=&
q=&
b;
r=p;
p=q;
q=r;
%d,%d,%d,%d\n"
*p,*q,a,b);
5.下面程序的功能是:
从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。
{floatx,max,min;
scanf(“%f”,&
x);
max=x;
min=x;
while(
(1))
{if(x>
max)max=x;
if(
(2))min=x;
scanf(“%f”,(3))
printf(“\nMax=%f\nMin=%f\n”,max,min);
6.
函数fun的功能是求xy(y>
=1),请填空。
doublefun(doublex,inty)
(1)
doublez;
for(i=1,z=1;
(2);
i++)
z=z*x;
(3)
三、编程题(共40分)
1.编写一程序求出表达式s=1!
+3!
+5!
+…….+19!
(10分)
2.编写一个strlen函数,它能对一个字符串测出其长度,函数返回值就是字符串的长度。
(注:
长度不包括字符串结束标志“\0“)。
(10分)
3.假设在磁盘文件in.dat中存放着如下格式的10个整数:
583723618492932
试编写程序实现如下功能:
编写函数input从文件in.dat中读出所有数据;
编写函数sort将这组数据按从小到大的顺序排列;
编写函数output将排序后的数据输出到文件out.dat中。
在主函数中依次调用以上函数。
(20分)
二.单项选择题(每小题2分,共30分)
1.A2.D3.B4.C5.D
6.A7.C8.A9.D10.D
11.B12.C13.C14.D15.B
三.阅读和分析下列程序,根据程序写出程序的输出结果或填空。
1.30
2.1
2
3
3.3,2,2,3
4.8,7,7,8
5.
(1)x>
=0
(2)x<
min(3)&
x
6.
(1)inti;
(2)i<
=y(3)return(z)或returnz
1.参考程序如下:
#include“stdio.h”
main()
{inti;
longs=1,f=1;
for(i=3;
=19;
i+=2)
{f=f*(i-1)*i;
s=s+t;