C语言开发基础练习题及答案5-2023背题版_第1页
C语言开发基础练习题及答案5-2023背题版_第2页
C语言开发基础练习题及答案5-2023背题版_第3页
C语言开发基础练习题及答案5-2023背题版_第4页
C语言开发基础练习题及答案5-2023背题版_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

试题说明

本套试题共包括1套试卷

每题均显示答案和解析

C语言开发基础练习题及答案5(500题)

C语言开发基础练习题及答案5

L[单选题]以下选项中,能正确进行字符串赋值的是

A)char*s="ABCDE”;

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

Ochars[4][5]={“ABCDE};

D)char*s;gets(s);

答案:A

解析:

2.[单选题]以下定义语句中,错误的是0。

A)char*a[3];

B)chars[10];s="test";

C)chars[10]="test";

D)inta[]={l,2};

答案:B

解析:

3.[单选题]下列选项中,关于SWitCh结构中每一个CaSe语句或default语句中的break语句,以下

说法正确的是O

A)任何时候都必须包含break语句

B)任何时候都可以省略break语句

C)当两个CaSe语句之间包含其他语句时,前一个CaSe语句中的break语句可以省

D)当两个CaSe语句之间没有任何其他语句时,前一个CaSe语句中的break语句可以省略

答案:D

解析:

4.[单选题]有以下程序

ttinclude<stdio.h>

Voidfun(char*a,char*b)

{while(*a=='*')a++;

While(*b=*a){b++;a++;}

}

Main()

{char*s="*****a*b****",t[80];

Fun(s,t);puts(t);

}

程序的运行结果是O

A)*****a*b

B)a*b

C)a*b*≠**

D)ab

答案:C

解析:

5.[单选题]假定int类型变量占用两个字节,其有定义:intx[10]={0,2,4};,则数组X在内存中所

占字节数是()。

A)3

B)6

OlO

D)20

答案:D

解析:

6.[单选题]程序运行后的输出结果是ftincludeintmain(){inti;for(i=0;i<3;i++)

switch(i){case0:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}

return0;}

A)021021

B)022111

C)012

D)000122

答案:D

解析:

7.[单选题]设j和k都是int类型,则下面的for循环语句。

For(j=0,k=0;j<=9&&k!=876;j++)scanf("%d",fek);

A)最多执行10次

B)最多执行9次

C)是无限循环

D)循环体一次也不执行

答案:A

解析:

8.[单选题]有以下程序

#include<stdio.h>

Voidfun(inta[],intn)

{inti,t;

For(i=0;i<n∕2;i++){t=aLi];a[i]=a[∏-l-i];a[n-l-i]=t;}

}

Main()

{intk[10]={l,2,3,4,5,6,7,8,9,10},i;

Fun(k,5);

For(i=2;i<8;i++)printf("%d",k[i]);

Printf("∖n");

}

程序的运行结果是O

A)345678

B)876543

C)1098765

D)321678

答案:D

解析:

9.[单选题]若有inta,b;floatx;则正确的赋值语句是Oo

A)a=l,b=2,

B)b++:

C)a=b=5

D)b=int(x);

答案:B

解析:

10.[单选题]下列程序的输出结果是0.

main()

{inta=7,b=5;

printf("%d∖n",b=b∕a);

)

A)0

B)5

Ol

D)不确定值

答案:A

解析:

IL[单选题]设Charx□="12345",y□={'1','2','3','4','5','∖0'};以下叙述中正确的是Oo

A)X数组的长度等于y数组的长度

B)X数组的长度少于y数组的长度

C)X数组与y数组的存储区域相同

D)X数组的长度大于y数组的长度

答案:A

解析:

12.[单选题]若有定义语句inta,b;doublex;则下列选项中没有错误的是()。

A)switch(x%2){case0:a++;break;case1:b++;break;default:a++;b++;}

B)switch((int)x∕2.0){case0:a++;break;case1:b++;break;default:a++;b++;}

C)switch((int)x%2){case0:a++;break;case1:b++;break;default:a++;b++;}

D)switch((int)(x)%2){case0.0:a++;break;case1.0:b++;break;default:a++;b++;}

答案:C

解析:switeh语句中,表达式的类型应与CaSe语句后的常量类型保持一致,并且SWitCh的判断条件只

能为整型或字符型,CaSe后面为常量表达式。A项,x%2得到的是浮点型数据,而CaSe语句后的常量

是整型数据,类型不一致;B项,(int)x∕2.0得到的也是浮点型数据,类型不一致;D项

,(int)x%2.0得到的是整型数据,而CaSe语句后的常量是浮点型数据,类型也不一致。答案选择C选

项。

13.[单选题]若有定义语句int

A,b;doubleX;则下列选项中没有错误的是。

A)Switch(x%2)

{case0:a++;break;

case1:b++;break;

default:a++;b++;

)

B)Switch((int)x∕2.0)

{case0:a++;break;

case1:b++;break;

default:a++;b++;

)

C)Switch((int)x%2)

{case0:a++;break;

case1:b++;break;

default:a++;b++;

)

D)Switch((int)(x)%2)

{case0.0:a++;break;

case1.0:b++;break;

default:a++;b++;

)

答案:C

解析:

14.[单选题]若有定义:inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2∕4的值是()。

Λ)2.500000

B)2.750000

C)3.500000

D)0.OOOOOO

答案:A

解析:

15.[单选题]数组名作为实参数传递给函数时,数组名被处理为().

A)该数组的长度

B)该数组的元素个数

C)该数组的首地址

D)该数组中各元素的值

答案:C

解析:

16.[单选题]已知i、j、卜为^1:型变量,若从键盘输入:1,2,3<回车>,使1的值为1、)的值为2、k的值

为3,

以下选项中正确的输入语句是

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

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

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

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

答案:B

解析:

17.[单选题]如果inta=5,b=4;则条件表达式"a<b?a:b"的值是()。

A)5

B)4

OO

D)l

答案:B

解析:

18.[单选题]为了避免在嵌套的if-else语句中产生二义性,C语言规定与else子句配对是。

A)与其缩排位置相同的if子句

B)在其之后最近的不带else的if子句

C)在其之前最近的不带else的同层if子句

D)与其在同一行上的if子句

答案:C

解析:

19.[单选题]有以下程序段

TypedefstructNODE

{intnum;structNODE*next;}OLD;

以下叙述中正确的是O

A)以上的说明形式非法

B)NoDE是一个结构体类型

C)OLD是一个结构体类型

D)OLD是一个结构体变量

答案:C

解析:本题考查的是结构体的定义。typedef关键字用于声明一个新的类型名代替已有的类型名。本

题中如果没有用typedef进行定义的话,则StrUCtNoDE为结构体类型,现在用typedef定义后,相当

于用OLD代表了StrUetNODE这一结构体类型,故OLD为结构体类型。

20.[单选题]下面程序中有错误的行是—

1main()

2{

3intx[3]={1};

4intk;

5scanf("%d",&x);

6for(k=l;k<3;k++)

7x[0]=x[0]+x[i];

8printf("x[0]=%d∖n",x[0]);

9)

A)3

B)6

C)7

D)5

答案:D

解析:数组输出不用&

21.[单选题]有以下程序#include<stdio.h>doublef(doublex);main(){doublea=0;inti;

for(i=0;i<30;i+=10)a+=f((double)i);printf(<4%5.Of∖nn,a);}doublef(doublex){return

x*x+l;}程序运行后的输出结果是Oo

A)503

B)401

C)500

D)1404

答案:A

解析:

22.[单选题]若有语句:

intx[]={0,1,2,3,4,5},*ptr=x;

则—是对数组元素的正确引用。

A)x

B)*x[3]

C)*(++ptr)

D)*(一ptr)

答案:C

解析:

23.[单选题]运行下面程序时,若从键盘输入"5",则程序的输出结果是_______.#includevoid

main(){inta;scanf("%d",fea);if(a++>5)printf("%d∖n",a);elseprintf("%d∖n",a一);

}

A)7

B)6

C)5

D)4

答案:B

解析:

24.[单选题]关于全局变量的说法错误的是—o

A)可以被多个模块共享

B)降低了函数的通用性

C)其初始值为随机数

D)可以作为函数的实参

答案:C

解析:

25.[单选题]从循环体内某一层跳出,继续执行循环外的语句是O

A)break语句

B)return语句

C)COntinUe语句

D)空语句

答案:A

解析:题号:55805

26.[单选题]有以下程序

Voidswap(char*x,char*y)

{chart;

T=*x;*x=*y;*y=t;

)

Main()

{char*sl="abc",*s2="123";

Swap(sl,s2);printf("%s,%s∖n",si,s2);

}

程序执行后的输出结果是O

A)123,abc

B)abc,123

C)lbc,a23

D)321,cba

答案:C

解析:

27.[单选题]下列关于算法的描述正确的是()

A)算法是程序设计的规则

B)算法要求必须至少有一个输入

C)算法只能用代码描述

D)算法是解决问题的具体步骤

答案:D

解析:

28.[单选题]有以下程序#include<stdio.h>voidive(x,n)intx[],n;{intt,*p;p=x+n-

l;while(x

A)l234567890

B)0987654321

Ol57924680

D)0864297531

答案:B

解析:

29.[单选题]在C语言中,if语句后的一对圆括号中有一个用以决定分支走向的表达式,该表达式()。

A)只能是关系表达式

B)只能是逻辑表达式

C)只能是关系或逻辑表达式

D)可以是任何合法表达式

答案:D

解析:

30.[单选题]下列程序段的输出结果是o

Intk,a[3][3]={9,8,7,6,5,4,3,2,1},*p=fea[l][1];

For(k=0;k<4;k+=2)printf("%dn,*(p+k));

A)52

B)51

053

D)97

答案:C

解析:

31.[单选题]数组元素下标的数据类型为()。

A)整型常量、字符型常量或整型表达式

B)字符串常量

C)实型常量或实型表达式

D)任何类型的表达式

答案:A

解析:数组下标的数据类型可以为整型、字符型常量,不可以是实型

32.[单选题]若有以下数据定义语句,则数值为4的表达式是()int

a[12]={l,2,3,4,5,6,7,8,9,10,ll,12};charc='a,,

D,g;

A)a[g-c]

B)aM

C)a['d`-'c,]

D)a[d-c]

答案:D

解析:

33.[单选题]当month等于9时,分析下列代码片段的执行结果。intdays=0;switch(month){

case2:days=28;break;case4:case6:case9:case11:days=30;break;default:

days=31;break;}Console.WriteLine(days);

A)0

B)30

C)29

D)31

答案:B

解析:

34.[单选题]有以下程序

MainO

{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,则正确的输入是

________________O

A)m=123n=456p=789

B)m=123n=456p=789

C)m=123,n=456,p=789

D)123456789

答案:A

解析:本题考查的是格式输入函数。如果在"格式控制"字符串中除了格式说明以外还有其他字符,则

在输入数据时应输入与这些字符相同的字符。根据本题的数据输入形式说明在输入数据时,必须输

入"m="、"n="、"p="字符,且中间不能含有空格。

35.[单选题]在c#的循环结构中,先执行一次,然后再判断条件的循环结构是?

A)do-while循环

B)While循环

C)for循环

D)foreach循环

答案:A

解析:

36.[单选题]执行以下程序后,输出结果是____。

^include<stdio.h>

ttdefineMAX(x,y)x>y?x:y

Voidmain()

(

Inta=5,b=6;

Printf("%d",MAX(a+2,b));

}

A)5

B)6

C)7

D)8

答案:C

解析:

37.[单选题]下列字符序列中,不可用作C语言标识符的是()。

A)abcl23

B)no.1

C)_123_

D)_ok

答案:B

解析:

38.[单选题]设已定义i和k为int类型变量,则以下for循环语句1.for(i=0,k=_l;k=l;i++,k++)2.

printf("****∖n");

A)判断循环结束的条件不合法

B)是无限循环

C)循环只执行一次

D)循环一次也不执行

答案:B

解析:

39.[单选题]以下正确的描述是()。

A)ContinUe语句的作用是结束整个循环的执行

B)只能在循环体内和SWitCh语句体内使用break语句

C)在循环体内使用break语句或ContinUe语句的作用相同

D)从多层循环嵌套中退出时,只能使用goto语句

答案:B

解析:

40.[单选题]以下叙述中正确的是()

A)int*pl;int**p2;int*p3都是合法的定义指针变量的语句

B)指针变量只能通过求地址运算符(&)来获得地址值

C)语句P=NULL;与p=∖0;是等价的语句

D)语句P=NULL;执行后,指针P指向地址为0的存储单元

答案:A

解析:B选项描述不正确,指针变量可以通过求地址运算符(&)来获得地址值,可以通过指针变获得

地址值,还可以通过标准函数获得地址值;C选项中,p=nLL;和p=0;或P=I0;等价;D选项中,语

句P=NULL;执行后,指针P并不是指向地址为0的存储单元,而是具有一个确定的值空。因此A选项正

确。

4L[单选题]有以下程序

MainO

{charStr口[10]={"China","Beijing"},*p=str;

printf("%s∖n",p+10);)

程序运行后的输出结果是O

A)China

B)Bejing

C)ng

D)ing

答案:B

解析:此题考的是指向数组元素的指针变量。p+10就指向了从首地址依次向后的第11个存储单元即字

符B的地址,所以输出Beijing,

42.[单选题]设a和b均为double型常量,且a=5.5,b=2.5,则表达式(int)a+b/b的值是_____。

A)6.500000

B)6

C)5.500000

D)6.000000

答案:D

解析:

43.[单选题]属于C语言字符集中可显示字符的是()

A)∖

B)∖n

C)∖t

D)∖b

答案:A

解析:

44.[单选题]与数学式子

9xn

2x-l

class="fr-ficfr-dibCUrSor-hover"〉对应的C语言表达式是()。

A)9*x^n∕(2*χ-l)

B)9*x**n/(2*χ-l)

C)9*pow(x,n)*(l/(2*χ-l))

D)9*pow(n,x)∕(2*χ-l)

答案:C

解析:

45.[单选题]若变量均已正确定义并赋值,以下合法的C语言表达式是O

A)x=y=5;

B)x=n%2.5;

C)x+n=l;

D)x=5=4+1;

答案:A

解析:

46.[单选题]已知字符A的ASCII代码值是65,字符变量CI的值是A,c2的值是D。则执行语句

printf("%d,%dn,cl,c2-2);的输出结果是()。

A)Λ,68

B)65,66

OA1B

D)65,68

答案:B

解析:在C语言中,字符型数据在内存中的存储形式是ASCn码值。当需要以整型格式输出字符时,输

出的也是ASCil码值。字符‘A'和'D'的ASCH码值分别为65和68,c2-2对应的ASCn码值为66。答案

选择B选项。

47.[单选题]二维数组a有m行n列,则在a[i][j]之前的元素个数为()。

A)j*n+i

B)i*n+j

C)i*n+j-l

D)i*n+j+l

答案:B

解析:

48.[单选题]在C语言中,只有在使用时才占用内存单元的变量,其存储类型是

A)auto和StatiC

B)extern和register

C)auto和register

D)StatiC和register

答案:C

解析:

49.[单选题]以下程序的正确运行结果是。

ttinclude<stdio.h>

main()

{intk=4,m=l,p;

p=func(k,m);printf("%d,",p);

p=func(k,ɪn);printf("%d"∖n",p);

}

func(inta,intb)

{staticintm=0,i=2;

i+=m+l;

m=i+a+b;

return(m);

}

A)8,17

B)8,16

C)8,20

D)8,8

答案:A

解析:

50.[单选题]有以下程序ttincludemain(){inta=7;while(a一);printf("%d∖n",a);)程序运

行后的输出结果是()。

A)-l

B)0

Ol

D)7

答案:A

解析:“++”和,,_”运算,当以前缀形式出现时,则先进行加一或减一操作,再取值,当以后缀形

式出现时,则先取值,再进行加一或减一操作。程序中执行a--,直至UWhile判断为0时才跳出循环

,执行下条语句,即a为0时再执行a-,此时跳出WhiIe循环,最终输出的结果为-1。答案选择A选

项。

51.[单选题]在函数说明时,下列项是不必要的。

A)函数名字

B)函数参数类型和名字

C)函数的类型

D)返回值表达式

答案:D

解析:

52.[单选题]已有定义“inta口={5,4,3,2,l},i=4;'',下列对a数组元素的引用中错误的是

A)A[-i]

B)A[a[O]]

C)A[2*2]

D)A[a[i]]

答案:B

解析:

53.[单选题]已有文本文件t.txt,其中的内容为:Iiaoningshenyang!。以下程序中,文件t.txt已正确

为"读"而打开,由文件指针fr指向该文件,则程序的输出结果是。

#include<stdio.h>

MainO

{FILE*fr;chars[80];

Fgets(s,6,fr);

Printf("%s∖n",s);

Fclose(fr);)

A)shenyang

B)Iiaoningshenyang

C)Iiaon

D)Iiaoni

答案:C

解析:

54.[单选题]已有声明和定义“typedefint*INTEGER;INTEGERp,*q;,,,下面叙述正确的是

A)P是int型变量

B)P是类型为int的指针变量

C)Q是类型为int的指针变量

D)程序中可用INTEGER代替int类型名

答案:B

解析:

55.[单选题]设x、y、t均为int型变量,则执行语句:x=y=3;t=++xI|++y;后,y的值为()。

A)不定值

B)4

03

D)l

答案:C

解析:

56.[单选题]有以下程序

#include<string.h>

MainO

{charp[]={'a','b','c'),q[10]={'a','b','c');

Printf("%d%d∖n",strlen(p),strlen(q));}

以下叙述中正确的是______O

A)在给P和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

B)由于P数组中没有字符串结束符,长度不能确定;但q数组中字符长度为3

C)由于q数组中没有字符串结束符,长度不能确定;但P数组中字符长度为3

D)由于P和q数组中没有字符串结束符,故长度都不能确定

答案:B

解析:strlen是计算以"\0"结束的字符串的长度的函数,函数的值为字符串中实际长度,不包括

"∖0"o题中"q[10]={'a','b','c'}"虽然给出了数组大小,即数组实际分配的存储空间,但此字符串

只占用前3个存储单元,其余存储单元系统自动加上"\0",故数组q的长度为3;由于P数组中没有字

符串结束符,故字符串的长度不能确定。

57.[单选题]为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。

A)缩排位置相同的if

B)在其之前未配对的if

C)在其之前未配对的最近的if

D)同一行上的if

答案:C

解析:

58.[单选题]对inta[5][5]中a[i][j]元素不正确的引用是。

A)*(*(a+i)+j)

B)*(a[i]+j)

C)a[i][j]

D)*(a+i*5+j)

答案:D

解析:

59.[单选题]设有以下定义和语句

Charstr[20]="Program",*p;P=Str;

则以下叙述中正确的是O

A)*P与str[O]中的值相等

B)Str与P的类型完全相同

C)Str数组长度和P所指向的字符串长度相等

D)数组Str中存放的内容和指针变量P中存放的内容相同

答案:A

解析:本题考查的是指针变量对数组的引用。

60.[单选题]关于形参和实参的关系,不正确的是—o

A)实参可以是常量、变量或表达式

B)实参与形参的个数必须相等

C)形参和对应的实参的类型必须一致

D)形参可以是常量、变量或表达式

答案:D

解析:

61.[单选题]有以下程序:

StructSTU{charname[10];intnum;};

Voidfl(structSTUc)

{structSTUb={"LiSiGuo",2042};c=b;}

Voidf2(structSTU*c)

{structSTUb={nSunDan",2044};*c=b;}

Main()

{structSTUa={"YangSan",2041},b={"WangYin",2043);

fl(a);f2(&b);

printf("%d%d∖n",a.num,b.num);}

执行后输出结果是O

A)20412044

B)20412043

C)20422044

D)20422043

答案:A

解析:f2函数传递的是变量的地址,可以实现数据的交换,而fl函数中是传递的值,执行完fl后

,c的值是变了,但main函数中的a的值并未变化。也就是说由于“单向传送”的“值传递”方式

,形参值的改变无法传给实参。

62.[单选题]若用数组名作为函数的实参,传递给形参的是。。

A)数组的首地址

B)数组第一个元素的值

C)数组中全部元素的值

D)数组元素的个数

答案:A

解析:

63.[单选题]C语言程序的基本单位是,

A)程序行

B)语句

C)函数

D)字符

答案:C

解析:

64.[单选题]有以下程序段(注:rand()是产生随机整数的函数)

Inti,n;

For(i=0;i<8;i++)

(

N=rand()%5;

Switch(n)

(

Case1:

Case3:printf("%d∖n",n);break;

Case2:

Case4:printf("%d∖n",n);continue;

Case0:exit(0);

)

Printf("%d∖n",n);

)

以下关于程序段执行情况的叙述,正确的是。

A)for循环语句固定执行8次

B)当产生的随机数n为4时结束循环操作

C)当产生的随机数n为1和2时不做任何操作

D)当产生的随机数n为0时结束程序运行

答案:D

解析:

65.[单选题]有以下程序,程序运行时输入:1,2,3,则输出的结果为()。

^include<stdio.h>

voidmain(){

Int

A,b,c;

Scanf("%d%d%d",&a,&b,&c);

Printf("a+b+c=%d∖n",a+b+c);

A)6

B)a+b+c=6

0123

D)不确定的值

答案:D

解析:

66.[单选题]一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依

次出栈,则元素出栈的顺序是()。

A)12345ΛBCDE

B)EDCBA54321

C)ABCDE12345

D)5432IEDCBA

答案:B

解析:栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择B)。

67.[单选题]下列程序错误行的是

(1)main()

(2){

(3)inta[3]={1};

(4)inti;

(5)scanf("%d",&a);

(6)for(i=l;i<3;i++)a[0]=a[0]+a[i];

(7)printf("%d∖n",a[0]);

(8))

A)7

B)5

C)3

D)6

答案:B

解析:

68.[单选题]以下叙述中正确的是()

A)当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

B)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖

C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据

D)C语言中的文件是流式文件,因此C语言只能顺序存取数据

答案:A

解析:文件一旦使用完毕,应该使用关闭文件函数把文件关闭,以避免文件数据丢失等错误,所以选

项A正确;若使用fopen打开文件函数打开文件时,指定打开方式为a,则可以向文件追加信息,而

不是覆盖原文件内容,B错误;在文件被打开后,使用文件定位函数rewind或fseek数可以将文件

指针移到文件的任何位置,所以在写操作完成后,可以直接将文件指针定位到文件首,接着读数据

,而不需要先关闭文件,再打开读取,C错误;使用文件定位函数可以随机读写文件,D错误;所以

本题答案为A。

二、多选题

69.[单选题]有以下程序

Fun(intx,inty){return(x+y);}

Main()

{inta=l,b=2,c=3,sum;

sum=fun((a++,b++,a+b),c++);

printf("%d∖n",sum);}

执行后的输出结果是______O

A)6

B)7

C)8

D)9

答案:C

解析:本题考查的是函数的正确调用。在fun((a++,b++,a+b),c++)中,先算括号内的(a++,b++,a+b)

逗号运算,即先算出a++的值,a=2;再算出b++的值,b=3;最后算出a+b的值,a+b=2+3=5,整个逗

号表达式的值为最后a+b的值即为5;接下来调用fun函数,此时原语句变为:sum=fun(5,c++);

c++表示在使用C以后再将C的值加1,结果为:5+3=8o

70.[单选题]下列字符数组长度为5的是

A)chara[]={'h','a','b','c','d');

B)charb[]={'h','a','b','c','d','∖0');

C)charc[10]={'h',"a',"b','c',"d'};

D)chard[6]={'h',"a','b',"c",'∖0'};

答案:A

解析:

71.[单选题]下面的说法正确的是()

A)charx,*y,**str;同时定义了三个变量,是合法的语句

B)数组说明符的一对方括号中只能使用整数常量

C)单精度值可以作为数组下标

D)若有定义floatarr[2];则Print("%f",array[l.5]);是合法的语句

答案:A

解析:C语言中几个变量可以同时定义,选项A正确;数组说明符的一对方括号中可以使用整型常量和

整型符号常量两种常量表达式,选项B、C、D错误;本题答案为A

72.[单选题]已知intk=l;,下列4个表达式中与其他三个表达式的值不相同的是._o

A)k—

B)k-=1

C)-k

D)k-1

答案:A

解析:

73.[单选题]有以下程序#include"stdio.h"voidmain(){int

c;whiIe((c=getchar())!=1∖n')switch(c-'2'){case0:case1:putchar(c+4);case2:

putchar(c+4);break;case3:putchar(c+3);default:PUtChar(C+2);break;}printf("∖n");}通过

键盘输入446755,执行后的输出结果是()。

A)888988

B)668966

088898787

D)66898787

答案:C

解析:

74.[单选题]以下能对具有10个元素的一维数组a进行正确初始化的语句是O

A)nta[10]={};

B)inta[10]=(0,0,0,0,0);

C)inta[10]={10*l);

D)intaL]={O};

答案:C

解析:

75.[单选题]putchar函数可以向终端输出一个().

A)整形变量表达式

B)实型变量值

C)字符串

D)字符或字符型变量值

答案:D

解析:

76.[单选题]以下程序的输出结果是____S

ftinclude<stdio.h>

Voidmain()

(

Char*s="12134211";

Intv[4]={0,0,0,0),k,i;

For(k=0;s[k];k++)

(

Switch(s[k])

(

Case'l':i=0;

Case'2':i=l;

Case'3':i=2;

Case'4':i=3;

V[i]++;)

For(k=0;k<4;k++)

Printf("%d",v[k]);

)

A)4211

B)0008

C)4678

D)8888

答案:B

解析:字符串指针变量的初始化;字符串的结束标志字符:'∖0';字符数组的应用;表达式与逻辑值的

对应关系;字符在计算机存放的是ASCn值;自增运算符的应用;for循环的执行顺序;SWitCh的执行顺

序;default的功能。

77.[单选题]以下数组定义中不正确的是0。

A)inta[2][3];

B)intb□[3]={0,l,2,3};

Ointd[3][]={{l,2},{1,2,3},{1,2,3,4}};

D)intc[100][100]={0};

答案:C

解析:

78.[单选题]为了避免在嵌套的条件语句if-else中产生二义性,C语言规

定:else子句总是与配对。

A)缩排位谿相同的if

B)其之前最近的没有else配对的if

C)其之后最近的if

D)同一行上的if

答案:B

解析:

79.[单选题]设有说明"charw;intx;floaty;doublez;”,则表达式''w*x+z-y”值的数据

类型为()。

A)float

B)char

C)int

D)double

答案:D

解析:

80.[单选题]已知year为整型变量,不能使表达式(year%4==0&&year%100!=0)IlyearIMoo==O的值

为“真”的数据是OO

A)1990

B)1992

C)1996

D)2000

答案:A

解析:

81.[单选题]若有声明"doublex=3,

C,*a=&x,*b=fec;,,,则下列语句中错误的是o

A)A=b=O;

B)A=&c,b=a;

C)&a=&b;

D)*b=*a;

答案:C

解析:

82.[单选题]所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是()。

A)7

B)8

06

D)2

答案:B

解析:

83.[单选题]有如下定义

structperson{charname[9];intage;);

structpersonclass[10]={''Johu”,17,

“Paul”,19,

“Mary”,18,

"Adam16,};

根据上述定义,能输出字母M的语句是

A)printf("%c∖n”,class[3].mane);

B)pfintf(α%c∖nw,class[3].name[1]);

C)Printf(''%c∖n”,class[2].name[1]);

D)Printf(''%c∖n”,class[2].nameLθ]);

答案:D

解析:

84.[单选题]C语言中下面哪个不是循环语句?

A)dowhile

B)if

C)while

D)for

答案:B

解析:

85.[单选题]下面叙述正确的是

A)2∕3与2.0/3.0等价

B)(int)2.0/3与2/3等价

C)++5与6等价

D)A'与"A"等价

答案:B

解析:

86.[单选题]以下关于运算符优先顺序的描述中正确的是。。

A)关系运算符〈算术运算符〈赋值运算符<逻辑运算符

B)赋值运算符〈逻辑运算符〈关系运算符‹算术运算符

C)算术运算符〈关系运算符〈赋值运算符〈逻辑运算符

D)逻辑运算符〈关系运算符‹算术运算符(赋值运算符

答案:B

解析:

87.[单选题]有如下程序,该程序的执行结果是。。main(){inti,sum;for(i=l;i<=3;sum++)

sum+=i;printf(w%d∖nw,sum);}

A)6

B)3

C)死循环

D)0

答案:C

解析:

88.[单选题]关于建立函数的目的,以下正确的说法是()。

A)提高程序的执行效率

B)提高程序的可读性

C)减少程序的篇幅

D)减少程序文件所占内存

答案:B

解析:

89.[单选题]有两个关系R和T如下:则由关系R得到关系T的操作是()。

A)投影

B)交

C)选择

D)并

答案:A

解析:关系T是由关系R的第1、3列的元组组成,这是对关系R进行投影运算的结果。可以简单理解为

:选择运算是对行(元组)的操作,投影运算是对列的操作。投影运算是对列的操作。投影是从表

中选出指定的属性值组成新表,是单目运算,答案选择A选项。

90.[单选题]以下程序运行后的输出结果是()o#include<stdio.h>main(){int

x=10,y=20,t=0;if(x==y)t=x;x=y;y=t;printf("%d%d∖n",x,y);}

A)100

B)200

OlO20

D)2010

答案:B

解析:

91.[单选题]有两个关系R、S如下:由关系R通过运算得到关系S,所使用的运算为()。

A)选择

B)投影

C)插入

D)连接

答案:B

解析:投影运算是从表中选出指定的属性值组成新表,是单目运算,是指对关系内的域指定可引入新

的运算。本题中S是在原有关系R的内部进行的,是由R中原有的那些域的列所组成的关系。答案选

择B选项。

92.[单选题]在WhiIe(e)语句中的e与下面条件表达式等价的是。

A)e==0

B)e==l

C)e!=l

D)e!=0

答案:D

解析:

93.[单选题]设有定义inti;,i为任意偶数时,下列表达式合法且值为真的是_____o

A)i/2==0

B)i%2==0

C)i∕2.O==O

D)i%2.O==O

答案:B

解析:

94.[单选题]下列四项中定义数组的正确方式是—o

A)intn;

scanf("%d",fe∏);

inta[n];

B)WefineN5

inta[N];

C)inta(3);

D)inta[3][];、

答案:B

解析:

95.[单选题]在C语言中,调用函数除函数名外,还必须有Oo

A)(

B)实际参数

C)函数返回值

D)函数预说明

答案:A

解析:

96.[单选题]若有说明语句:inta[2][4];,则对a数组元素的正确引用是

ʌ)a[θ][3]

B)a[0][4]

C)a[2][2]

D)a[2][2+1]

答案:A

解析:a[0~l][0~3]

97.[单选题]已知:inta;floatb;scanf("%d,%f",&a,&b);,使a和b的值分别为10和1.5,则正确的

输入是o

A)101.5

B)10,l.5

C)a=10,b=l.5

D)a=10b=l.5

答案:B

解析:

98.[单选题]设有如下定义:

Structsk

(

inta;

floatb;

}data,*p;

P=⅛data;

则对data中的成员a的正确引用是()。

A)(*p).data,a

B)(*p).a

C)p->data.a

D)p.data,a

答案:B

解析:

99.[单选题]若fp为文件指针,且文件已正确打开,i为Iong型变量,以下程序段的输出结果是(

)o

fseek(fp,0,SEEK_EN

D);

i=ftell(fp);

printf("i=%ld∖n",i);

A)-l

B)fp所指文件的长度,以字节为单位

OO

D)2

答案:B

解析:

100.[单选题]若有定义intx;y;并已正确给变量赋值,则以下选项中与表达式(χ-y)?(x++):(y++)中

的条件表达式(χ-y)等价的是

A)(χ-y<0Iχ-y>O)

B)(χ-y<O)

C)(χ-y>O)

D)(χ-y==O)

答案:A

解析:

IOl.[单选题]下面判断正确的是OO

A)char*a="china";等价于char*a;*a="china";

B)charStr[10]={"china");等价于Charstr[10];str[]={"china");

C)char*s="china";等价于char*s;s="china";

D)charc[4]="abc",d[4]="abc";等价于charc[4]=d[4]="abc";

答案:C

解析:

102.[单选题]设a、b、c、d、m、n均为int型变量,且a=5、b=6、C=7、d=8、m=2、n=2,则逻辑表达

式(m=a›b)&&(n=c〉d)运算后,n的值为。

A)l

B)O

C)3

D)2

答案:D

解析:

103.[单选题]()o设有程序段

intk=10;

while(k=0)k=k-l;则下面描述正确的是。

A)while循环执行10次

B)循环是无限循环

C)循环体语句一次也不执行

D)循环体语句执行一次

答案:C

解析:

104.[单选题]以下叙述中正确的是

A)在C语言中,预处理命令行都以开头

B)预处理命令行必须位于C源程序的起始位置

C)ttinclude〈studio,h>必须放在C程序开头

D)C语言的预处理不能实现宏定义和条件编译的功能

答案:A

解析:

105.[单选题]有以下程序voidswap(char*x,char*y){chart;t=*x;*x=*y;*y=t;}

main(){char*sl="abc",*s2="123";swap(si,s2);printf("%s,%s∖n",si,s2);}程序执行后的

输出结果是()

A)123,abc

B)abc,123

C)lbc,a23

D)321,cba

答案:C

解析:

106.[单选题]下面关于函数形参的声明中正确的是。

A)Inta[]

B)Inta[][]

OInta[]={0}

D)Inta[2]□

答案:A

解析:

107.[单选题]以下叙述中正确的是O

A)在C语言中,逻辑真值和假值分别对应1和0

B)关系运算符两边的运算对象可以是语言中任意合法的表达式

C)对于浮点变量X和y,表达式:χ==y是非法的,会出编译错误

D)分支结构是根据算术表达式的结果来判断流程走向的

答案:B

解析:A选项中,在C语言中,逻辑真值对应非0;C选项中,表达式:x==y是合法的;D选项中,分支

结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值。因此B选项正确。

108.[单选题]已有定义"ina=5,b;floatc=2;",下列表达式中语法正确是()

A)b=a%c

B)a>0?b=a:b=-a

C)b=a∕2=c

D)b=a=c∕2

答案:D

解析:

109.[单选题]在调用方法的过程中会发生实参与形参之间的数据传递,那么系统会O

A)把形参的值传给被调方法的实参

B)把实参的值传给被调方法的形参

C)把被调方法的形参值传给实参

D)把被调方法的实参值传给等行参

答案:B

解析:

110.[单选题]有下列程序:

MainO{

Intx=8;

For(;x>0;X-){

If(x%3){

Printf("%d,",x-);

Continue;

)

Printf("%d,",-x);

程序的运行结果是()

A)7,4,2,

B)8,7,5,2,

09,7,6,4,

D)8,5,4,2,

答案:D

解析:

111.[单选题]如有定义语句inta口={l,8,2,8,3,8,4,8,5,8};,则

数组a的大小是_()—.

Λ)10

B)ll

08

D)不定

答案:A

解析:

112.[单选题]单精度型变量的类型说明符是o

A)int

B)double

C)float

D)char

答案:C

解析:

113.[单选题]有如下程序

Main()

{intn=8;

While(n>6){n—;printf("%d",n);}

}

该程序段的输出结果是O

A)98

B)76

087

D)78

答案:B

解析:

114.[单选题]在C语言中,能代表逻辑值"真"的是().

A)True

B)大于O的数

C)非O整数

D)非O的数

答案:D

解析:

115.[单选题]下面函数中能正确计算n!(nG7)的是。

A)Longf(longn)

Returnn*f(n-l);

B)Longf(longn)

{if(n<=l)return1;

elsereturnn*f(n);

)

C)Longf(longn)

{staticlongs,i;

For(i=l;i<=n;i++)s=s*i;

Returns;

)

D)Longf(longn)

{longs=l,i;

for(i=l;i<=n;i++)s=s*i;

returns;

)

答案:D

解析:

116.[单选题]下面程序段的运行结果是()。inta=l,b=2,c=2,t;while(a{t=a;a=b;b=t;c—

;}printf(rt%d,%d,%dw,a,b.c);

A)l,2,0

B)2,1,0

01,2,1

D)2,1,1

答案:A

解析:

117.[单选题]下列关于栈叙述正确的是()。

A)栈顶元素最先能被删除

B)栈顶元素最后才能被删除

C)栈底元素永远不能被删除

D)栈底元素最先能被删除

答案:A

解析:栈是先进后出的数据结构,因此栈顶元素最后入栈却最先被删除,栈底元素最先入栈却最后被

删除。答案选择A选项。

118.[单选题]下列说法中正确的是()。

A)break

B)break

C)break

D)continue能结束循环,而break只能结束本次循环。

答案:C

解析:

119.[单选题]若i、j已定义为int类型,则以下程序段中内循环体的总的执行次数是()。

A)20

B)25

024

D)30

答案:A

解析:

120.[单选题]若有定义和语句inta口={l,2,3,4,5,6,7,8,9,10},*p=a;,则值为3的表达

式是()。

A)p+=2,*(p++);

B)p+=2,*++p;

C)p+=3,*p++;

D)p+=2,++*p;

答案:A

解析:

121.[单选题]有以下程序:

ttinclude"stdio.h"

MainO{

Intt;

Scanf("%d",&t);

If(t++!=6)

Printf("%d∖n",t);

Else

Printf("%d∖n",t-);

Printf("∖n");)

执行时输入:6回车,则输出结果是______o

A)7

B)8

06

D)5

答案:A

解析:

122.[单选题]下列变量定义中合法的是OO

A)short_a=l-.Ie-I;

B)doubleb=l+5e2.5;

C)longdo=0xfdaL;

D)float2_and=l-e-3;

答案:A

解析:

123.[单选题]在调用函数时,如果实参是简单变量,它对应形参之间的数据传递方式是()

A)由实参传给形参,再由形参传回实参

B)传递方式由用户指定

C)地址传递

D)单向值传递

答案:D

解析:

124.[单选题]下面不是常量的选项是一。

A)'a'

B)a

Oa

D)97

答案:C

解析:

125.[单选题]已有定义"charc='Γ;intx=300;floatw=35000;doubled=3.1234567el0;",则下面

表达式求值时除一外其结果都可能是不准确的()

A)x=w∕c

B)w=d∕x

C)w=d∕le5f

D)w=x+c

答案:D

解析:

126.[单选题]有以下程序段intk=0;while(k=l)k++;WhiIe循环执行的次数是()。

A)无限次

B)I次

C)语法错误,不能执行

D)一次也不执行

答案:A

解析:

127.[单选题]C语言的跳转语句中,对于break和ContinUe说法正确的是()

A)break语句只应用与循环体中

B)ContinUe语句只应用于循环体中

C)break是无条件跳转语句,COntinUe不是

D)break和COntinUe的跳转范围不够明确,容易产生问题

答案:B

解析:

128.[单选题]以下叙述中正确的是()。

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

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

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

D)用C程序实现的算法可以既没有输入也没有输出

答案:C

解析:输入、输出是算法的两个基本特性。要求有0个或多个输入;1个或多个输出。

129.[单选题]下述正确的语句是Oo

A)intx=y=z=0;

B)intz=(x+y)++;

C)x=+3==2;

D)d%=2.5;

答案:C

解析:

130.[单选题]在C语言中,要求运算数必须是整型的运算符是()。

A)/

B)=++

C)*=

D)%

答案:D

解析:

131.[单选题]以下语句中,不能求a,b最大值的是。。

A)if(c=a>b);

B)c=a<b?b:a;

C)c=b<a?a:b;

D)c=a>b?a:b;

答案:A

解析:

132.[单选题]使用语句SCanf(上=%色丫=%£",&乂,&丫);输入变量乂、y的值(口代表空格),正确的输入是(

)o

A)1.25,2.4

B)1.25□2.4

C)x=1.25,y=2.4

D)x=1.25□y=2.4

答案:c

解析:

133.[单选题]若有:

intx=43,y=0;

charch='A';

则表达式(x>=yMch<'B'&&!y)的值为。

A)0

B)l

C)语法错

D)假

答案:B

解析:

134.[单选题]下列哪一个不属于C语言的基本数据类型—o

A)整型

B)字符型

C)浮点型

D)指针型

答案:D

解析:

135.[单选题]执行语句:scanf("x=%f,y=%f",&x,&y);,使得x、y均为L2,则正确的输入形式

是______o

A)1.2,1.2

B)1.21.2

C)x=l.2,y=l.2

D)x=l.2y=l.2

答案:C

解析:

136.[单选题]以下函数调用语句中实参的个数是().

func((el,e2),(e3,e4,e5));

A)2

B)3

C)5

D)语法错误

答案:A

解析:

137.[单选题]若函数中有定义语句:“intn;",则o

A)系统将自动给n赋初值O

B)系统将自动给n赋初值T

C)变量n中的值无定义

D)变量n没有值

答案:C

解析:

138.[单选题]结构体变量在程序执行期间()。

A)所有成员一直驻留在内存中

B)只有一个成员驻留在内存中

C)部分成员驻留在内存中

D)没有成员驻留在内存中

答案:A

解析:

139.[单选题]下列选项中,不是转义字符的是()

A)∖∖

B)V

0074

D)\0

答案:C

解析:

140.[单选题]70、已知:inta[10];则对a数组元素的正确引用是Oo

A)a[10]

B)a[3.5]

C)a(5)

D)a[O]

答案:D

解析:

141.[单选题]有以下程序

ftinclude<stdio.h>

voidmain()

{inta,b,c=246;

a=c∕100%9;

b=(-l)&&(-l);

printf("%d,%d∖∏",a,b);

)

输出结果是_()_.

A)2.1

B)3,2

04.3

D)2,-l

答案:A

解析:

142.[单选题]以下非法的赋值语句是

A)n=++i;

B)++(i+l);

Oj++;

D)x=(j-);

答案:B

解析:

143.[单选题]在定义任何一个函数时,下列选项中不可缺少的是

A)函数名前的数据类型

B)函数名后的一对圆括号

C)形参声明

D)函数体中的语句

答案:B

解析:

144.[单选题]以下可作为fopen的第一个参数的正确格式是。

A)c:user∖text.txt

B)c:∖user∖text.txt

C)"c:∖user∖text.txt"

D)"c:WuserWtext.txt"

答案:D

解析:

145.[单选题]下列叙述错误的是()。

A)定义一个指针变量时必须说明该指针变量指向数据的类型

B)一个变量的指针就是该变量的地址

C)两个指针变量不能做相减运算

D)两个指针变量可以做比较运算

答案:C

解析:指针之间可以相减,但不可以相加:两个同一类型的指针变量是可以相减的,他们的意义表示

两个指针指向的内存位置之间相隔多少个元素

两个相同类型的指针变量之间可以比较大小。指针之间的大小比较的意义,表示在内存中他们指向

的位置的高低关系。

146.[单选题]已知:intx=0;,则表达式!x的值等于。

A)0

B)l

C)O.O

D)1.0

答案:B

解析:

147.[单选题]以下不是无限循环的语句为。

A)for(y=0,x=l;x>++y;x=i++)i=x;

B)for(;;x++=i);

C)while(l){x++;}

D)for(i=10;;i-)sum+=i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论