C语言总复习资料.docx

上传人:b****6 文档编号:3639722 上传时间:2022-11-24 格式:DOCX 页数:46 大小:37.24KB
下载 相关 举报
C语言总复习资料.docx_第1页
第1页 / 共46页
C语言总复习资料.docx_第2页
第2页 / 共46页
C语言总复习资料.docx_第3页
第3页 / 共46页
C语言总复习资料.docx_第4页
第4页 / 共46页
C语言总复习资料.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

C语言总复习资料.docx

《C语言总复习资料.docx》由会员分享,可在线阅读,更多相关《C语言总复习资料.docx(46页珍藏版)》请在冰豆网上搜索。

C语言总复习资料.docx

C语言总复习资料

一、单项选择题(每小题2分,共计50分)

1.编写C语言源程序后要通过()和连接才能在机器上运行。

(A)编辑(B)编写(C)汇编(D)编译

2.如有语句inta=5,则下列说法正确的是()。

(A)a/2的结果为2.5(B)a/2的结果为2(C)a/2.0的结果为2(D)a%2结果为0

3.对应于scanf(“%d+%d”,&a,&b);的正确输入形式是()。

(A)3+4↙(B)3,+,4↙(C)3,4↙(D)3,+4↙

4.有以下程序

voidmain(){inti,s=0;

for(i=0;i<10;i+=2)s+=i+1;

printf(“%d\n”,s);}

程序执行后的输出结果是()。

(A)自然数1~9的累加和(B)自然数1~10的累加和

(C)自然数1~9中的奇数之和(D)自然数1~10中的偶数之和

5.有以下程序

voidmain()

{inti;

  for(i=0;i<3;i++)

    switch(i)

    { case0:

printf("%d",i);

      case1:

printf("%d",i);break;

      default:

printf("%d",i);

    }}程序运行后的输出结果是()

(A)022111(B)0012(C)000122(D)012

6.要打开一个已存在的非空文件"file"用于修改,选择正确的语句()。

(A)fp=fopen("file","r");(B)fp=fopen("file","w");

(C)fp=fopen("file","r+");(D)fp=fopen("file","w+");

7.以下叙述中正确的是()。

A)用C程序实现的算法必须要有输入和输出操作

B)用C程序实现的算法可以没有输出但必须要输入

C)用C程序实现的算法可以没有输入但必须要有输出

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';

 printf("%c,",b++);

 printf("%d\n",b-a);

}程序运行后的输出结果是()。

A)3,2B)50,2C)2,2D)2,50

11.有以下程序

成功接收文件

main()

{intm=12,n=34;

 printf("%d%d",m++,++n);

 printf("%d%d\n",n++,++m);}

程序运行后的输出结果是()。

A)12353514B)12353513C)12343514D)12343513

12.有定义语句:

intb;charc[10];,则正确的输入语句是()。

A)scanf("%d%s",&b,&c);B)scanf("%d%s",&b,c);

C)scanf("%d%s",b,c);D)scanf("%d%s",b,&c);

13.有以下程序

 main()

{intm,n,p;

 scanf("m=%dn=%dp=%d",&m,&n,&p);

 printf("%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.有以下程序

 main()

{inta,b,d=25;

 a=d/10%9;

 b=a&&(-1);

 printf("%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))

printf("%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];

printf("%d\n",j);

}程序运行后的输出结果是()。

A)42B)45C)56D)60

18.有以下程序

 main(){chara[7]="a0\0a0\0";inti,j;

i=sizeof(a);j=strlen(a);

printf("%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?

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;

printf("%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;}

main()

{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--;}

for(i=0;i<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有以下程序

 main(){

inta[3][3],*p,i;

p=&a[0][0];

for(i=0;i<9;i++)p[i]=i;

for(i=0;i<3;i++)printf("%d",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("%d%d%d\n",i,j,k);}

2.以下程序运行后的输出结果是

(2)。

 #defineS(x)4*x*x+1

main(){inti=6,j=8;

printf("%d\n",S(i+j));}

 

3.以下程序运行后的输出结果是(3)。

 main(){inta=3,b=4,c=5,t=99;

 if(bif(aprintf("%d%d%d\n",a,b,c)}

4.以下程序运行后的输出结果是(4)。

 main(){inta,b,c;

 a=10;b=20;c=(a%b<1)||(a/b>1);

 printf("%d%d%d\n",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();scanf("%d",&b);

 a=a-'A'+'0';b=b*2;

 printf("%c%c\n",a,b);}

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);

 for(i=0;i<3;i++)printf("%4d",b[i]);

 printf("\n");}

voidfun(intm,intn,intar[][4],int*br)

{inti,j,x;

 for(i=0;i{x=ar[i][0];

 for(j=0;j(7)=x; }}

10.以下程序运行后的输出结果是(10)。

 #include

main(){charch[]="abc",x[3][4];inti;

 for(i=0;i<3;i++)strcpy(x[i],ch);

 for(i=0;i<3;i++)printf("%s",&x[i][i]);

 printf("\n");}

8.以下程序运行后的输出结果是(8)。

 voidswap(intx,inty)

{intt;

 t=x;x=y;y=t;printf("%d%d",x,y);}

main(){inta=3,b=4;

 swap(a,b);printf("%d%d",a,b);}

9.以下程序运行后的输出结果是(9)。

 

#include

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

#defineN10;

main()

{inta[N]={2,17,8,3,24,53,82,1,29,101};

inti,j,k,t;

for(i=0;i<9;i++)

{k=i;

for(j=i+1;j<10;j++)

if(a[j]

if(k=i)

{t=a[j];

a[j]=a[i];

a[i]=t;

}

}}

一、单项选择题(每小题2分,共计50分)

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

三、程序改错题(本题共20分)

下面程序的功能是对a数组中的元素按从大到小的顺序排序。

其中有5处错误(包括语法错误和逻辑错误),请找出其中的错误,并改正之。

(每找对1个错误位置,得2分,每修改正确1个错误,再得2分。

#include

#defineN10;错!

应为:

#defineN10

main()

{

inta[N]={2,17,8,3,24,53,82,1,29,101};

inti,j,k,t;

for(i=0;i<9;i++)

{k=i;

for(j=i+1;j<10;j++)

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:

i+=1;

case6:

i+=1;

default:

i+=1;

}

A.5B.6C.7D.8

6.表示关系X<=Y<=Z的c语言表达式为()。

A.(X<=Y)&&(Y<=Z)B.(X<=Y)AND(Y<=Z)

C.X<=Y<=ZD.(X<=Y)&(Y<=Z)

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.  以下程序的输出结果是:

_____。

#include

main()

{

inti,s=0;

for(i=1;i<10;i+=2)

s+=i+1;

printf(“%d\n”,s);

}

2.  以下程序段的输出结果是:

________。

#include

main()

{

intm=0;

while(m++<=1)

printf("%d\n",m);

printf("%d\n",m);

}

3.  以下程序段的输出结果是:

________。

#include"stdio.h"

voidfun(intx,inty)

{x=x+y;

y=x-y;

x=x-y;

printf("%d,%d,",x,y);}

main()

{intx=2,y=3;

fun(x,y);

printf("%d,%d\n",x,y);}

4.  以下程序段的输出结果是:

_______。

#include"stdio.h"

main()

{

inta=7,b=8,*p,*q,*r;

p=&a;q=&b;

r=p;p=q;q=r;

printf("%d,%d,%d,%d\n",*p,*q,a,b);

}

5.下面程序的功能是:

从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。

请填空。

main()

{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

6.

(1)inti;

(2)i<=y(3)return(z)或returnz

三、编程题(共40分)

1.参考程序如下:

(10分)

#include“stdio.h”

main()

{inti;

longs=1,f=1;

for(i=3;i<=19;i+=2)

{f=f*(i-1)*i;

s=s+t;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1