C语言习题.docx

上传人:b****7 文档编号:9380248 上传时间:2023-02-04 格式:DOCX 页数:41 大小:26.46KB
下载 相关 举报
C语言习题.docx_第1页
第1页 / 共41页
C语言习题.docx_第2页
第2页 / 共41页
C语言习题.docx_第3页
第3页 / 共41页
C语言习题.docx_第4页
第4页 / 共41页
C语言习题.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

C语言习题.docx

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

C语言习题.docx

C语言习题

一、单选(共100分)单项选项题

1.以下叙述中错误的是()。

A、可以通过赋初值的方式确定数组元素的个数

B、数组名代表的是数组所占存储区的首地址,其值不可改变

C、当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息

D、对于double类型数组,不可以直接用数组名对数组进行整体输入或输出

答案:

C

2.()可以不进行函数类型说明。

A、以上都是

B、被调函数的定义在主调函数定义之前时

C、在所有函数定义前,已在函数外预先说明了被调函数类型

D、被调函数的返回值是整型或字符型时

3..以下正确的说法是()。

A、用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译,系统会自动调用

B、用户可以重新定义标准库函数,如若此,该函数将失去原有定义

C、系统不允许用户重新定义标准库函数

D、用户若需要调用标准库函数,调用前必须重新定义

4.有以下程序

#include

voidmain()

{

intn,*p=NULL;

*p=&n;

printf(“Inputn:

”);scanf(“%d”,&p);printf(“outputn:

”);

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

}

该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是

A、printf(“%d\n”,p);

B、*p=&n;

C、scanf(“%d”,&p)

D、intn,*p=NULL;

5.以下关于编译预处理的叙述中不正确的是()

A、预处理命令是在正式编译之前先行被处理的

B、预处理命令行必须位于源程序的开始部分

C、一条有效的预处理命令行必须单独占据一行

D、C源程序中凡是以“#”号开始的控制行都是预处理命令行

6.设函数中有整型变量n,为保证其在未赋初值的情况下初值为0,应选择的存储类别是()。

A、auto或register

B、register

C、static

D、auto

答案:

C

7.在C语言中,switch语句后一对圆括号中表达式的类型()。

A、只能是整型或实型

B、只能为int型

C、可以是整型或字符型

D、可以是任何类型

答案:

D

8.以下关于return语句的叙述中正确的是()。

A、没有return语句的自定义函数在执行结束时不能返回到调用处

B、一个自定义函数中可以根据不同情况设置多条return语句

C、定义成void类型的函数中可以有带返回值的return语句

D、一个自定义函数中必须有一条return语句

9.若要用下面的程序片段使指针变量P指向一个存储型变量的动态存储单元:

int*p;

p=______malloc(sizeof(int));

空格应填入()。

A、(int*)

B、int*

C、(*int)

D、int

10.下列语句组中,正确的是

A、chars[7];s={"Olympic"};

B、chars[7];s="Olympic";

C、char*s;s={"Olympic"};

D、char*s;s="Olympic";

答案:

D

11.下面说法正确的是:

A、在C程序中,注释说明只能位于一条语句的后面

B、一个C源程序必须包含一个main函数

C、C程序的基本组成单位是函数

D、一个C源程序可由一个或多个函数组成

12.实参和形参之间的数据是()传递。

A、用户指定

B、值

C、互传

D、地址

13.以下叙述中错误的是

A、用typedef可以为各种类型起别名,但不能为变量起别名

B、可以用typedef将已存在的类型用一个新的名字来代表

C、用typedef定义新的类型名后,原有类型名仍有效

D、可以通过typedef增加新的类型

14.对下述程序段正确的描述是()。

#include

main()

{intx=0,y=0,z=0;

if(x=y+z)

printf("***");

else

printf("###");

}

A、输出###

B、输出***

C、可以编译,但不能通过连接,因而不能运行

D、有语法错误,不能通过编译

答案:

A

15.以下函数按每行8个输出数组中的数据

voidfun(int*w,intn)

{inti;

for(i=0;i

{_____________

printf(“%d”,w[i]);

}

printf(“\n”);

}

下划线处应填入的语句是

A、if(i%8==0)continue;

B、if(i/8==0)continue;

C、if(i%8==0)printf(“\n”);

D、if(i/8==0)printf(“\n”);

答案:

C

16.在C语言中,函数返回值的类型最终取决于()

A、函数定义时形参的类型

B、return语句中表达式值的类型

C、调用函数时主调函数所传递的实参类型

D、函数定义时在函数首部所说明函数类型

17.设有语句:

inta=1,b=2,*p1=&a,*p2=&b;以下可使指针p1指向变量b的语句是()。

A、*p1=p2

B、*p1=*p2

C、p1=p2

D、p1=*p2

18.若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是()

A、main()

{

floatfun(inti,intj);

……x=fun(i,j);……

}

floatfun(inta,intb){……}

B、floatfun(inta,intb){……}

main()

{……x=fun(i,j);……}

C、floatfun(int,int);

main()

{……x=fun(2,10);……}

floatfun(inta,intb){…..}

D、main()

{……x=fun(2,10);……}

floatfun(inta,intb){……}

19.以下函数调用语句中含有()个实参。

func((exp1,exp2),(exp3,exp4,exp5));

A、5

B、2

C、4

D、1

20.voidmain()

{

intx[8]={8,7,6,5,0,0},*s;

s=x+3;

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

}

执行后输出结果是()

A、6

B、0

C、5

D、随机值

答案:

B

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

#include

main()

{

intnum=0;

while(num<=2)

{

num++;

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

}

}

A、1

B、123

C、12

D、1234

答案:

B

22.若变量已正确定义,要求程序段完成求5!

的计算,不能完成此操作的程序段是:

A、i=1;p=1;do{p*=i;i++;}while(i<=5);

B、for(i=1;i<=5;i++){p=1;p*=i;}

C、i=1;p=1;while(i<=5){p*=i;i++;}

D、for(i=1,p=1;i<=5;i++)p*=i;

23.若变量已正确定义,有以下程序段:

#include

main()

{

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

}

其输出结果是:

A、3,5,7

B、3,5,3

C、3,5,5

D、程序段有语法错误

答案:

B

24.对下述程序,()是正确的判断。

#include

main()

{

intx,y;

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

if(x>y)

x=y;y=x;

else

x++;y++;

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

}

A、若输入数据4和3,则输出4和4

B、若输入数据3和4,则输出4和5

C、若输入数据4和3,则输出3和4

D、有语法错误,不能通过编译

答案:

D

25.设x和y均为int型变量,则执行下面的循环后,y的值为()。

for(y=1,x=1;y<=50;y++)

{

if(x>=10)break;

if(x%2==1)

{

x+=5;

continue;

}

x-=3;

}

A、8

B、4

C、6

D、2

答案:

26.表达式18/4*sqrt(4.0)/8值的数据类型为()。

A、不确定

B、float

C、double

D、int

答案:

C

27.有以下程序

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、123456789

B、m=123n=456p=789

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

D、m=123n=456p=789

答案:

D

28.在下列选项中,没有构成死循环的程序段是()。

A、ints=36;

while(s);

B、for(;;)

C、intk=1000;

do{++k;}

while(k>=1000);

D、inti=100;

while

(1)

{i=i%100+1;

if(i>100)break;

}

29.有以下程序

#include

voidfun(inta[],intn)

{

inti,t;

for(i=1;i

{

t=a[i];

a[i]=a[n-1-i];

a[n-1-i]=t;

}

}

main()

{

intk[10]={1,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")

}

程序运行的结果是()。

A、321678

B、876543

C、1098765

D、325678

答案:

D

30.请选出以下语句的输出结果是()。

printf("%d\n",strlen("\t\"\065\xff\n"));

A、输出项不合法,无正常输出

B、14

C、8

D、5

答案:

D

31.下面程序的输出结果是()。

#include

main()

{

inti,k,a[10],p[3];

k=5;

for(i=0;i<10;i++)a[i]=i;

for(i=0;i<3;i++)p[i]=a[i*(i+1)];

for(i=0;i<3;i++)k+=p[i]*2;

printf("%d\n",k)

}

A、23

B、21

C、22

D、20

答案:

B

32.C语言中目标文件的后缀是:

A、.h

B、.obj

C、.exe

D、.c

答案:

B

33.负数在计算机的存储形式:

A、原码、反码、补码任意一种

B、反码

C、补码

D、原码

答案:

A

34.下面函数的功能是()。

intfunl(char*x)

{

char*y=x;

while(*y++);

return(y-x-1);

}

A、将字符串x连接到字符串y后面

B、比较两个字符串的大小

C、将字符串x复制到字符串y

D、求字符串的长度

35.以下程序的运行结果是()

#defineMIN(x,y)(x)<(y)?

(x):

(y)

voidmain()

{

inti=10,j=15,k;

k=10*MIN(i,j);

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

}

A、150

B、15

C、100

D、10

答案:

B

36.下面正确的字符常量是()。

A、''

B、'\\''

C、'W'

D、"a"

答案:

C

37.请读下面的程序。

#include

main()

{

inta,b;

for(a=1,b=1;a<=100;a++)

{

if(b>=20)break;

if(b%3==1)

{

b+=3;

continue;

}

b-=5;

}

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

}

上面程序的输出结果是()。

A、10

B、8

C、9

D、7

答案:

B

38.在说明语句:

int*f();中,标志符f代表的是()。

A、一个返回值为指针型的函数名

B、一个用于指向一维数组的行指针

C、一个用于指向函数的指针变量

D、一个用于指向整型数据的指针变量

39.下面四个选项中,开关条件的选项是()。

A、if

B、switch

C、signed

D、auto

40.有以下程序

#include

intf(intx,inty)

{

return((y-x)*x);

}

main()

{

inta=3,b=4,c=5,d;

d=f(f(a,b),f(a,c));

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

}

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

A、7

B、9

C、8

D、10

答案:

B

41.下面的程序中()有错误(每行程序前面的数字是行号)。

1#include

2main()

3{

4floata[3]={0,0};

5inti;

6for(i=0;i<3;i++)scanf("%d",&a[i]);

7for(i=1;i<3;i++)a[0]=a[0]+a[i];

8printf("%f\n",a[0]);

9}

A、第8行

B、第4行

C、第6行

D、没有

42.运行以下程序后,如果从键盘上输入6514<回车>,则输出结果为:

#include

voidmain()

{intm,n;

printf("Enterm,n:

");

scanf("%d%d",&m,&n);

while(m!

=n)

{

while(m>n)m-=n;

while(n>m)n-=m;

}

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

}

A、m=-1

B、m=2

C、m=1

D、m=3

答案:

C

43.有以下程序

#include

main()

{

intx=8;

for(;x>0;x--)

{

if(x%3){printf("%d,",x--);continue;}

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

}

}

程序的运行结果是:

A、8,5,4,2,

B、8,7,5,2,

C、9,7,6,4,

D、7,4,2,

答案:

A

44.以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是:

A、switch(a==1)

{case1:

a=b;break;

case0:

a++;

}

B、switch(a==1)

{case0:

a=b;break;

case1:

a++;

}

C、switch(a)

{default:

a++;break;

case1:

a=b;

}

D、switch(a){

case1:

a=b;break;

default:

a++;

}

45.下述程序输出的结果是()。

#include

voidfun1()

{

intx=0;

x++;

printf("%d,",x);

}

voidfun2()

{

staticintx;

x++;

printf("%d,",x);

}

main()

{

inti;

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

{

fun1();

fun2();

}

}

A、1,1,2,1,3,1,

B、1,1,1,1,2,3,

C、1,1,1,2,1,3,

D、1,1,2,2,1,3,

答案:

C

46.设有定义:

floata=2,b=4,h=3;下面表达式与代数式子(a+b)*h/2结果不相同的是()。

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

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

C、9

D、(a+b)*h/2

47.设有说明int(*ptr)[m];其中的标志符ptr是()。

A、具有m个指针元素的一维指针数组,每个元素都只能指向整型量

B、指向m个整型变量的函数指针

C、一个指向具有m个整型元素的一维数组的指针

D、m个指向整型变量的指针

48.以下程序段()。

inta=10;

while(a);--a;

A、有语法错误.

B、循环执行10次

C、循环执行一次

D、是死循环

49.已有定义intx;f1oaty;且执行scanf("%3d%f",&x,&y);语句,若从第一列开始输入数据12345678,则y值为

A、123.000000

B、45.000000

C、678.000000

D、无定值

答案:

50.若有定义:

inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()。

A、0.000000

B、2.750000

C、3.500000

D、2.500000

答案:

D

51.在C语言中,一维数组的定义方式为:

类型说明符数组名;

A、[常量]

B、[整型表达式]

C、[整型常量]或[整型常量表达式]

D、[整型常量表达式]

答案:

C

52.#include

voidfun(int*a,int*b)

{int*c;

c=a;a=b;b=c;

}

voidmain()

{intx=3,y=5,*p=&x,*q=&y;

fun(p,q);printf(“%d,%d,”,*p,*q):

fun(&x,&y);printf(“%d,%d\n”;*p,*q);

}

程序运行后的输出结果是

A、5,3,5,3

B、3,5,3,5

C、5,3,3,5

D、3,5,5,3

答案:

B

53.在C的源程序中如果使用了开平方根函数sqrt,则在源程序中应包含下面()预编译命令

A、#include

B、#include

C、#include

D、#include

54.关于循环嵌套,以下哪种说法是错误的:

A、循环嵌套跳转时,禁止跳入同层的另一循环中。

B、循环嵌套跳转时,禁止从外层跳入内层。

C、外层循环可以包含两个以上内循环,彼此之间可以相互交叉。

D、三种循环可以相互嵌套,层数不限。

55.下面对函数嵌套的叙述中,正确的叙述为()。

A、函数定义和调用均可以嵌套

B、函数定义不可以嵌套,但函数调用可以嵌套

C、函数定义和调用均不能嵌套

D、函数定义可以嵌套,但函数调用不能嵌套

56.有两个字符数组a,b,则以下能正确为a,b进行赋值的语句是()。

A、gets(a);gets(b);

B、scanf("%s%s",&a,&b);

C、getchar(a);getchar(b);

D、gets(a,b);

57.设函数fun的定义形式为:

voidfun(charch,floatx){…}

则以下对函数fun的调用语句中,正确的是().

A、fun(32,32);

B、t=fun('D',16.5);

C、fun('65',2.8);

D、fun("abc",3.0);

58.调用一个函数,此函数中没有return语句,下列说法正确的是:

该函数()。

A、返回一个不确定的值

B、返回若干个系统默认值

C、能返回一个用户所希望的函数值

D、没有返回值

59.若有说明:

intn=2,*p=&n,*q=p;,则以下非法的赋值语句是()。

A、p=n;

B、*p=*q;

C、n=*q;

D、p=q;

答案:

A

60.在宏定义#definePI3.1415926中,用宏名PI代替一个()

A、字符串

B、单精度数

C、双精度数

D、常量

答案:

A

61.sizeof(double)是()。

A、一个整型表达式

B、一个双精度型表达式

C、一个不合法的表达式

D、一种函数调用

答案:

A

62.以下对字符数组的描述中错误的是()。

A、不可以用关系运算符对字符数组中的字符串进行比较

B、字符数组中的字符串可以整体输入、输出

C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值

D、字符数组中可以存放字符串

答案:

C

63.若有说明语句:

inty[][4]={0,0};则下面叙述不正确的是()。

A、只有元素y[0][0]和y[0][1]可得到初值0,其余元素均得不到初值0

B、二维数组y的行数为1

C、该说明等价于inty[][4]={0};

D、数组y的每个元素都可得初值0

答案:

A

64.有以下程序

#include

voidfun(char*a,char*b)

{

while(*a==’*’)a++;

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

}

voidmain()

{

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

fun(s,t);puts(t);

}

程序的运行结果是

A、

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

当前位置:首页 > 高等教育 > 农学

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

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