湖北汽车工业学院C语言复习题.docx

上传人:b****7 文档编号:10259810 上传时间:2023-02-09 格式:DOCX 页数:45 大小:37.59KB
下载 相关 举报
湖北汽车工业学院C语言复习题.docx_第1页
第1页 / 共45页
湖北汽车工业学院C语言复习题.docx_第2页
第2页 / 共45页
湖北汽车工业学院C语言复习题.docx_第3页
第3页 / 共45页
湖北汽车工业学院C语言复习题.docx_第4页
第4页 / 共45页
湖北汽车工业学院C语言复习题.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

湖北汽车工业学院C语言复习题.docx

《湖北汽车工业学院C语言复习题.docx》由会员分享,可在线阅读,更多相关《湖北汽车工业学院C语言复习题.docx(45页珍藏版)》请在冰豆网上搜索。

湖北汽车工业学院C语言复习题.docx

湖北汽车工业学院C语言复习题

1设有定义:

floata=2,b=4,h=3;以下c语言表达式中与代数式1/2(a+b)h计算结果不相符的是(B)

A、(a+b)*h/2B(1/2)*(a+b)*hCh/2*(a+b)D(a+b)*h*1/2

2若有说明:

inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是(B)

Ai=*pB*p=*&jCi=&jDi=**p

3有以下程序

main()

{inta=1,b;

for(b=1;b<=10;b++)

{if(a>=8)break;

if(a%2==1){a+=5;continue;}

a-=3;

}

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

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

A4B3C5D6

4.有下程序:

main()

{inta[]={2,4,6,8,10},y=0,X,*P;

p=&a[l];for(x=l;x<3;x++)y+=p[x];

printf("%d\n,y"):

}

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

A.10B.11C.14D.15

参考答案:

C本题考查for循环及if语句。

当执行到第一个满足(i*i>=20)&&(i*i<=100)这个条件的i出现时,break跳出循环,执行下列的prinff语句。

5有以下程序

#include

main()

{inti,j;

for(i=3;i>=1;i--)

{for(j=1;j<=2;j++)printf("%d",i+j);

printf("\n");

}

}程序的运行结果是__A____。

C23

34

45

D234

345

A45

34

23

B432

543

6有以下程序执行后W结果是;

  intfun1(doublea){returna*a;}

  intfun2(doublex,doubley)

  {doublea=0,b=0;

  a=fun1(x);b=fun1(y);return(int)(a+b);}

  main()

  {doublew,w=fun2(1.1,2.0);.......}

  参考答案:

5.0

7以下程序的输出结果是___D___。

intf()

{staticinti=0;

ints=1;

s+=i;i++;

returns;

}

main()

{inti,a=0;

for(i=0;i<5;i++)a+=f();

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

A24B20C25D15

8以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序。

  voidsort(inta[],intn)

  {inti,j,t;

  for(i=O;i

  for=i+10

  if(a[i]

  }

  main()

  {intaa[10]:

{1,2,3,4,5,6,7,8,9,10},i;

  sort(&aa[3],5);

  for(i=0;i

  printf("\n");

  )

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

  A)l,2,3,4,5,6,7,8,9,10,  B)10,9,8,7,6,5,4,3,2,1,

  C)l,2,3,8,7,6,5,4,9,10,  D)l,2,10,9,8,7,6,5,4,3,

答案:

C评析:

本题并不是对数组的所有元素进行排序,而是对从a[3]开始往后的4个元素进行排序。

9下面能正确进行字符串赋值操作的语句是C

A)chars[5]={"ABCDE"};B)chars[5]={'A','B','C','D','E'};

C)char*s;s="ABCDEF";D)char*s;scanf("%s",s);

10.下面各语句行中,能正是行赋字符串操作的语句行是C

   A)CHARST[4][5]={“ABCDE”};

   B)CHARS[5]={'A','B','C','D','E'};

   C)CHAR*S;S=“ABCDE”;

   D)CHAR*S;SCANF(“%S”,S);

11已知i、j、k为int型变量,若从键盘输入:

1,2,3↙,使i的值为l、j的值为2、k的值为3,以下选项中正确的输入语句是___C___。

  A)scanf("%2d%2d%2dtt,&i,&j,&k);

  B)scanf("%d %d %d",&i,&j,&k);

  C)scanf("%d,%d,%dfI,&i,&j,&k);

  D)scanf("i=%d,j=%d,k=%d,&i,&j,&k);

答案:

C评析:

如果在"格式控制"字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。

12下列定义变量的语句中错误的是D

A)doubleint_;B)int_int;C)charForD)floatUS$

13若以下选项中的变量已正确定义,则正确的赋值语句是C

A)x1=26.8%3B)1+2=x2C)x3=0x12(D)x4=1+2=3;

14以下叙述中正确的是(C)

A)break语句只能用于switch语句体中

B)continue语句的作用是:

使程序的执行流程跳出包含它的所有循环

C)break语句只能用在循环体内和switch语句体内

D)在循环体内使用break语句和continue语句的作用相同

15.1以下函数值的类型是___A__

fun(floatx)

{floaty;y=3*x-4;returny;}

A)intB)不确定C)voidD)float

知识点:

C语言函数的缺省的函数类型

15.2以下函数fun形参的类型是___D__

fun(floatx){floaty;y=3*x-4;returny;}

A)intB)不确定C)voidD)float

16下列叙述中正确的是(A)。

 A.每个c程序文件中都必须要有一个main函数

 B.在C程序中main()的位置是固定的

 C.C程序中所有函数之间都可以相互调用,与函数所在位置无关

 D.在C程序的函数中不能定义另一个函数

  

17.设有定义:

inta,pa=&a;以下scanf语句中能正确为变量a读入数据的是A

A)scanf(“%d”,pa);B)scanf(“%d”,A);

C)scanf(“%d”,&pA);D)scanf(“%d”,pA);

18若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是(C)

A)abs(x-y)<10B)x-y>-10&&x-y<10

C)!

(x-y)<-10||!

(y-x)>10D)(x-y)*(x-y)<100

19若变量已正确定义,有以下程序段C

inta=3,b=5,c=7;

if(a>b)a=b;c=a;

if(c!

=a)c=b;printf("%d,%d,%d\n",a,b,c);其输出结果是C

A)程序段有语法错B)3,5,3C)3,5,5D)3,5,7

20以下选项中,非法的字符常量是(C)

a)‘\t’b)‘\17’c)“\n”d)‘\xaa’

21.有以下程序

main()

{ints=0,a=1,n;

scanf("%d",&n);

do

{s+=1;a=a-2;}

while(a!

=n);

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

}若要使程序的输出值为2,则应该从键盘给n输入的值是___B___。

A0B-3C-5D-1

22.有以下程序main(){inti,j;

for(i=1;i<4;i++)

{for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);

printf("\n");}}程序运行后的输出结果是B。

A1*1=1

1*2=22*2=4

1*3=32*3=63*3=9

B1*1=11*2=21*3=3

2*2=42*3=6

3*3=9

C1*1=11*2=21*3=3

2*1=22*2=4

3*1=3

D1*1=1

2*1=22*2=4

3*1=33*2=63*3=9

23若有定义语句:

doublex[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是__D__。

A*(p+1)B*pC*xDx[5]

详细解答:

本题考查数组的下标是否越界,以及指针对变量的引用

B)选项x[5],下标越界.一维数组名是地址常量(数组首地址),始终指向第一个数组元素,进行赋值p=x,指针变量p也指向第一个数组元素如下图:

24有一个函数,

以下程序段中不能根据x的值正确计算出y的值的是【 A 】。

A.y=0;if (x>=0); if (x>0) y=1;  else   y=-1;

B.if(x>=0) if (x>0) y=1; else  y=0;  else y=-1;

C.if(x>0) y=1; else if (x==0) y=0; else y=-1;

D.y=0; if (x>0) y=1; else  if (x<0) y=-1;

25以下对结构体类型变量的定义中,不正确的是C

A)

C)struct

{intn;

floatm;

}aa;

structaatdl;

D)struct

{intn;

floatm;

}tdl;

typedefstructaa

{intn;

floatm;

}AA;

AAtdl;

B)#defineAAstructaa

AA{intn;

floatm;

}tdl;

26若有定义语句:

chars[10]="1234567\0\0";,则strlen(s)的值A

A).7B).8C).9D).10

27.设变量已正确定义,则以下能正确计算f=n!

的程序段是(D)

A)f=0;B)f=1;

for(i=1;i<=n;i++)f*=i;for(i=1;i<=n;i--)f*=i;

Cf=1;D)f=1;

for(i=n;i>1;i++)f*=i;for(i=n;i>=2;i--)f*=i;

28有定义语句:

intx,y;,若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是A

A)1112<回车>B)11,12<回车>

C)11,12<回车>D)11,<回车>

29.设有定义:

charp[]={'1','2','3'},*q=p;以下不能计算出一个char型数据所占自己数的表达式是A)sizeof(p)B)sizeof(char)C)sizeof(*q)D)sizeof(p[0])

答案应该选A。

对于B,计算的是char类型的字节大小,明显不对。

C、D答案等价,计算的都是字符'1‘的所占字节数,所以也不对。

30.下列条件语句中,功能与其他语句不同的是D

A)if(a)printf("%d\n",x);elseprintf("%d\n",y);

B)if(a==0)printf("%d\n",y);elseprintf("%d\n",x);

C)if(a!

=0)printf("%d\n",x);elseprintf("%d\n",y);

D)if(a==0)printf("%d\n",x);elseprintf("%d\n",y);

A:

如果a为真(不等于0就为真),就打印x,否则打印y;

B:

如果a等于0;就打印y,否则打印x;

C:

如果a不等于0,就打印x,否则打印y;

D:

如果a等于0,就打印x,否则打印y;

A,B,C都是:

如果0就打印y,否则x;

31.有以下程序

voidfun2(chara,charb){printf("%c%c",a,b);}

chara='A',b='B';

voidfun1(){a='C';b='D';}

main()

{fun1();

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

fun2('E','F');

}

程序的运行结果是__D___。

A.CDABB.ABEFC.ABCDD.CDEF

32在c语言中,函数中变量的隐含存储类别是__________。

  A)auto  B)static  C)extern  D)无存储类别

答案:

A评析:

函数中变量的存储类别包括auto,static,extern,其中auto为隐含存储类别,static为静态存储类别,register是寄存器存储类别。

A评析:

函数中变量的存储类别包括auto,static,extern,其中auto为隐含存储类别,static为静态存储类别,register是寄存器存储类别。

33在调用函数时,如果实参是简单变量,它与对应形参间的数据传递方式是A

A单向值传递B传递方式由用户指定

C地址传递D由实参传给形,再由形参传回实参

 

34有以下程序

  main()

  {intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};

  inti,s=0;

  for(i=0;i<4;i++)s+=aa[i][1];

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

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

 A)11B)19C)13D)20

35若有定义:

intaa〔8〕;。

则以下表达式中不能代表数组元素aa〔1〕的地址是

A)&aa〔0〕+1B)&aa〔1〕C)&aa〔0〕++D)aa+1

【答案】C【解析】在C语言中,数组的地址和数组中的第一个元素的地址相同。

数组中第一个元素地址的表示方法为&aa[0],与其等价的有&aa[0]++;选项A为数组的第1个元素的地址下移一位即是第二个元素aa[l]的地址;B也为数组的第二个元素的地址,选项D中aa表示数组的地址,加1表示数组首地址后移一位,即代表数组元素中的第二个元素aa[1]的地址。

36若程序中有宏定义行:

#defineN100则以下叙述中正确的是B

A)宏定义行中定义了标识符N的值为整数100

B)在编译程序对C源程序进行预处理时用100替换标识符N

C)对C源程序进行编译时用100替换标识符N

D)在运行时用100替换标识符N

[解析]本题考查的知识点是:

宏定义。

宏定义是预处理命令,即在C源程序进行编译之前,编译程序对源程序进行编译预处理时所进行的一种替换操作。

所以选项C和D可以排除。

宏定义是用宏名代替一个字符串,也就是作简单的置换,不做正确性检查。

所以选项A的叙述也不正确,宏替换时100被当作一个字符串来替换宏名的,而不是被看作整数值100。

故本题的正确答案为B。

37以下程序的输出结果是___A___。

  f(intb[],intm,intn)

  {inti,s=0;

  for(i=m;i

  returns;

  )

  main()

  {intx,a[]:

{1,2,3,4,5,6,7,8,9};

  x=f(a,3,7);

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

  )

  A)10   B)18  C)8  D)15

答案:

A 评析:

本题中,主函数调用f函数,在f函数中执行了两次循环,第一次i=3,s=0+bi:

4,然后i的值被修改成5,仍然满足循环条件,进入第二轮循环,s=4+b[5]=4+6=10,随后,i的值被修改成7,不再满足循环条件,退出循环,返回s的值。

所以最后输出结果是10。

 38有以下程序

  main()

  {inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;

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

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

  A)16B)10C)8D)6

 

39设有如下说明

typedefstruct

{intn;charc;doublex;}STD;

则以下选项中,能正确定义结构体数组并赋初值的语句是A

A)STDtt[2]={{1,'A',62},{2,'B',75}};

B)STDtt[2]={1,"A",62,2,"B",75};

C)structtt[2]={{1,'A'},{2,'B'}};

D)structtt[2]={{1,"A",62.5},{2,"B",75.0}};

40下列函数定义中,会出现编译错误的是B

A)max(intx,inty,int*z)  B)intmax(intx,y)

   {*z=x>y?

x:

y;}    intz;

              z=x>y?

x:

y;

              returnz;

   }

C)max(intx,inty)  D)intmax(intx,inty)

   {intz;    {return(x>y?

x:

y);}

  z=x>y?

x:

y;return(z);

   }

41有以下程序

intfun(intn)

{if(n==1)return1;

else

return(n+fun(n-1));

}

voidmain()

{intx;

scanf("%d",&x);x=fun(x);printf("%d\n",x);

}执行程序时,给变量x输入10,程序的输出结果是A

A)55B)54C)65D)45

A)解析:

本程序考察的是函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用,执行结果为1+2+3+4+5+6+7+8+9+10=55。

42有如下程序

main()

{

intn[5]={0,0,0},i,k=2;

for(i=0;i

printf("%d\n",n[k]);

}该程序的输出结果是__A____。

A0B2C1D不确定的值

 

43下面程序的输出是__D____。

intm=13;

intfun2(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d\n",fun2(a,b)/m);}

A.1B.10C.7D.2

44下面程序输出的结果是B

  main()

  {inti;

  inta〔3〕〔3〕={1,2,3,4,5,6,7,8,9};

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

  printf("%d",a〔2-i〕〔i〕);

  }A)159B)753C)357D)591

45请读程序:

#include

#include

main()

{char*s1="AbCdEf",*s2="aB";

s1++;s2++;

printf("%d\n",strcmp(s1,s2));

}上面程序的输出结果是A

A)正数B)负数C)零D)不确定的值

46设有如下的程序段:

  charstr[]="Hello";char*ptr; ptr=str;执行上面的程序段后,*(ptr+5)的值为B

  A)'o'  B)'\0' C)不确定的值 D)'o'的地址

47C语言中要求操作数都为整型数据的算术符是___C___。

A、/B、!

C、%D、==

48能正确表示逻辑关系:

a≥10或a≤0的C语言表达式(D)

A、a>=10ora<=0B、a>=0|a<=10C、a>=10&&a<=0D、a>=10||a<=0

49若有定义inta[10],则a代表的是数组a的_C

A、第一个元素B、最后一个元素C、首地址D、最后一个元素的地址

50运行C源程序的命令是_D

A、ALT+F5B、ALT+F9C、CTRL+F5D、CTRL+F9

51.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是(B)

A)大写字母B)连接符C)数字字符D)下划线

52设a和b均为double型常量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是__D____。

A)6.500000  B)6  C)5.500000  D)6.000000

53若有说明:

inti,j=7,*p=&i;,则与i=j;等价的语句是(B)

A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;

54以下选项中,不能作为合法常量的是  B

A)1.234e04B)1.234e0.4C)1.234e+4D)1.234e0

55有定义语句:

chars[10];,若要从终端给s输入5个字符,错误的输入语句是D

A)gets(&s[0]);B)scanf(“%s”,s+1);C)gets(s);D)scanf(“%s”,s[1]);

56设有说明语句:

chara='\72';则变量a()

A)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法

答案是A选项,

57.1若已定义x和y为double类型,则表达式:

x=1y=x+3/2的值是:

A)1B)2C)2.0D)2.5

  解析:

该表达式就是一个逗号表达式,所以要按照运算顺序先运算x=1,所以变量x的值为1.0,然后运算y=x+3/2,此表达式中需先计算二个整数相除3/2,结果为整数1,然后再与x相加,结果为2.0。

由于逗号表达式x=1y=x+3/2的值就是其最后一个表达式即y=x+3/2的值,此值即为2.0,所以正确的答案应该是C。

57.2若已定义x和y为double类型,则表达式:

x=2y=x+3/2的值是:

C

A)3.500000B

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

当前位置:首页 > 高等教育 > 军事

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

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