2024年C语言基础知识习题_第1页
2024年C语言基础知识习题_第2页
2024年C语言基础知识习题_第3页
2024年C语言基础知识习题_第4页
2024年C语言基础知识习题_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

第二章:C语言概述

1.如下(劭是不正确的转义字符。

A.'\\'B.'\"C.'020'D.''0'

2.组成C语言程序的基本单位是(©).

A.函数B.变量C.于程序D.语句

3.C语言要求:在一个源程序中,main()函数的位置(C)。

A.必须在最开始B.必须在系统调用的库函数背面

C.能够任意D.必须在最后

4.为求出return语句返PI计算100!的成果,此困数的类型阐明应为(D)。

A.intB.longC.unsigncdlongD.选项A,B,C.都不对:ABC的数值范围都不够

5.C语言中的标识符只能由字母、数字和下划线3种字符组成,且第一个字符(C)。

A.必须为字母

B.必须为下划线

C.必须为字母或下划线

D.能够是字母、数字和下划线中的任意一个

6.如卜.选项中合法的用户标识符是(D)。

A.intB.a#C.5memD._243

7.C语言中的简单数据类型有(C)。

A.整型、实型、逻辑型B.整型、字符型、逻辑型

C.整型、实型、字符型D.整型、实型、字符型、逻辑型

8.如下选项中不正确的整型常量是(B)。

A.-37B.32,758C.326D.6

9.如下选项中合法的C语言字符常量是(A)。

A.'\t'B.'A"C.67D.A

10.如下选项中不正确的实型常量是(A)。

A.123B.le4C.3.640E-1D.0.35

11.如下选项中合法的C语言赋值语句是(D).

A.a=b=34B.a=34,b=34C.—i;D.m=(int)(x+y);

12.设int类型的数据长度为两个字节,则unsignedint类型数据的取值范围是(B)。

A.0〜255B.0〜65535C.-32768〜32767D.-256〜255

第三章:运算符与体现式(原先给的答案诸多错误)

I.如下论述中不正确的是(B)。

A.在C程序中,%是只能用于整数运算的运算符

B.在C程序中,无论整数还是实数,都能准确无误地表示

C.若a是实型变量,C程序中a=20是正确的,因此实型变量允许被整型数赋值

D.以上表述都是正确的

2.若变量x、y、z均为double类型且已正确赋值,不能正确表示x/yXz的C语言体现式是(A)。

A.x/y*zB.x*(l/(y*z))C.x/y*l/zD.x/y/z

3.设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的值为(C)。

A.OB.lC.2D.3

4.设w、x、y、z、m均为ini型变量,有如下程序段:

w=1;x=2;y=3;z=4;

m=(w<x)?w:x;m=(m<y)?m:y;m=(m<z)?m:z;

则该程序运行后,m的值是(D)。

A.4R.3C.2D.l

5.如下程序的输出成果是(C)。

#include<stdio.h>

main()

{inta=5,b=4,c=6,d;

printf(,/%d\n,,d=a>b?(a>c?a:c):(b));

A.5B.4C.6D.不确定

6.在C语言中,假如下面的变量都是int类型,则输出的成果是(A)。

sum=pad=5;pad=sum++,pad++,++pad;

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

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

7.如卜.程序的输出成果是(B)。

#include<stdio.h>

main()

{inti=()l(),j=l();

piintf("%d,%d\n",++i.j-);

)

A.11,10B.9,10C.()l(),9D.10,9

8.已知inii;floalf;,由如下选项中正确的语句是(D)。

A.(intf)%i;B.int(f)%i;C.int(f%i);D.(in()f%i;

9.若有定义:inlx=3,y=2;floata=2.5,b=3.5;则下面体现式的值为(B)。

(x+y)%2+(int)a/(int)b

A.1.0B.lC.2.0D.2

10.假设所有变量均为整型,则体现式(a=2,b=5,a++,b++,a+b)的值为(C)。

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

11.若有定义"intx=Ly=l;\体现式(!x||y--)的值是(B)。

A.OB.lC.2D.-l

12.有如下程序:

main()

{unsignedchara.h.c;

a=0x3;

b=a|0x8;

c=b«1;

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

)

程序运行后的输出成果是①)。

A.-1112B.-6-13C.1224D.1122

13.若已定义x和y为double类型,则体现式x=l,y=x+3/2的值是(C)。

A.lB.2C.2.0D.2.5

14.执行如下程序段后,c3的值为(A)。

intcl=I,c2=2,c3;

c3=1.0/c2*cl;

A.OB.0.5C.lD.2

15.如下程序的输出成果是(D)。

#include<stdio.h>

main()

{inty=3,x=3,z=l;

printf("%d%d\n",(++x,y++),z+2);

}

A.34B.42C.43D.33

第四章:基本语句

1.如下选项中不是C语句的是C0

A){inti;i++;printf("%d\n",i);}B);

C)a=5.c=10D){1}

2.执行如下程序时输入1234567.程序的运行成祟为B.

#include<stdio.h>

inain()

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

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

)

A)17B)46C)15D)9

3.若有定义chara;intbifloatc:d3ubled;»则体现式a*b+c-d成果为型A。

A)doubleB)intC)floatD)char

4.若有定义intab,则用语句sanf("%d%d”,&a,&b):输入a,b的值时,不能作为输入数据分隔符的是△

A),B)空格C)回车D)[Tab]键

5.运行下面的程序,假如从键盘上输入:

ab<回车〉

c<回车〉

def<回车〉

则输出成果为

#defineN6

#include<sldio.h>

main()

charc[N];

inti=0;

for(;i<N;c[i]=gctchar(),i++);

for(i=0;i<N;i++)putchar(c[i]);printf("\nM);

)

A)

a

b

d

B)

a

b

c

d

C)

ab

c

d

D)abcdef

6.如下程序的输出成果是A.

科include<stdio.h>

main()

{printf("%f',2.5+l*7%2/4);

)

A)2.500000B)2.750000C)3.375000D)3.00000()

7.依照定义和数据的输入方式,输入语句的正确形式是生。

已经有定义:float

数据的输入方式:4.52

3.5

A)scanf("%f,%f',&fl,&f2);B)&⑵;

C)scanf("%3.2f%2.1T,&fID)scanf("%3.2f,%2.1P,&fl

8.如下程序不用第3个变量,实现将两个数进行对调的操作,请填空。

#include<stdio.h>

main()

{inta.b;

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

printf("a=%db=%d",a.b);

a=a+b:b=a-b:a=B;

prinifC'a=%db=%d\n\a.b);

)

A)a+bB)a-bC)b*aD)a/b

第五章:选择结构

I如下选项中.能正确表示a右I。或aWO的关系体理式是D,

A)a>=IOora<=0B)a>=10|a<=0C)a>=10&&a<=0D)a>=10||a<=0

2.假定所有变量均已正确定义,下列程序段运行后x的值是_B_。

a=b=c=O;x=35;

if(!a)x-;

elseif(b);

if(c)x=3;

elsex=4:

A)34B)4C)35D)3

3.如下程序的输出成果_A_0

#inckide<stdio.h>

main()

{inta.b.c=246;

a=c/100%9;

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

printf("%<l,%d\n',,a,b);

)

A)2,1B)3,2C)4,3D)2,-l

4..已知a=l、b=3、c=5、d=5,下列程序段运行后,x的值是_B_

if(a<b)

if(c<d)x=l;

else

if(a<c)

if(b<d)x=2;

elsex=3;

elsex=6;

elsex=7;

A)1B)2C)3D)6

5.能正确表示a和b同时为正或同时为负的体现式是D

A)(a>=0||b>=0)&&(a<0||b<0)B)(a>=0&&b>=0)&&(a<0&&b<0)

C)(a+b>0)&&(a+b<=0)D)a*b>0

6.如下程序的输出成果是_C__。

#include<stdio.h>

main()

{inta=-l.b=l:

if((++a<0)&&!(b—<=0))

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

else

prinif("%d%d\n",b,a):

)

A)-11B)01C)10D)00

7.下列有关switch语句和break语句的结论中,正确的是_B

A)break语句是switch语句中的一部分

B)在switch语句中能够依照需要使用或不使用break语句

C)在switch语句中必须使用break语句

D)break语句只能用于switch语句中

8.若有定义inta=Lb=O;,则执行如下语句后,输出为_B_。

switch(a)

{case1:

switch(b)

(case0:printf("**0**");break;

case1:printf("**l**"kbreak;

)

case2:printfC'**2**");bretk;

1

A)**()**B)**Q**«*2**

C)**0****l****2**D)有语法错误

9.如下程序的输出成果是A。

#include<sidio.h>

main()

{intx=l,a=0,b=0;

switch(x)

{case0:b++;

case1:a++;

case2:a++;b++;

)

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

)

A)a=2,b=lB)a=l,b=lC)a=l,b=0D)a=2,b=2

10.如下程序的输出成果是—C_o

#includc<stdio.h>

main()

{inta=12,b=5,c=-3;

if(a>b)

if(b<0)c=0;

elseC++;

printf("%d\n".c);

1

A)0B)1C)-2D)-3

11.阅读如下程序:

#include<stdio.h>

inain()

{intx;

scanf("%d",&x);

if(x-<5)printf("%d",x);

elseprintf("%d".x++);

)

程序运行后,假如从键盘输入5,则输出成果是_B—。

A)3B>4C)5D)6

12.两次运行下面的程序,假如从键盘上分别输入6和4,则输出的成果是A

#include<stdio.h>

main()

(intx;

scanf("%d".&x):

if(x++>5)printf("%d",x);

elseprintf("%d\n".x-);

A)7和5B)6和3C)7和4D)6和4

第6章循环结构

1.在while(x)语句中的x与下面条件体现式等价的是。I)

A)x==0B)x==lC)x!=lD)x!=0

2.如下程序的输出成果是。I)

#includc<stdio.h>

main()

{intkj,m;

for(k=5:k>=kk-)

(m=0;

for(j=kj<=S:j++)

m=m+k*j;

}

prinif(M%d\n",m);

)

A)124B)25C)36D)15

3.如下程序的输出成果是。D

#include<stdio.h>

main()

{intx=10,y=10,i;

for(i=0;x>8;y=++i)

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

}

A)10192B)9876C)10990D)101091

4.如下程序的输出成果是。A

a=l;b=2:c=2:

whilc(a<b<c){t=a;a=b;b=l;c-;)

printf("%d.%d.%d".a.b.c);

A)1,2,0B)2,1,0C)1,2,1D)2,1,1

5.如下for循环体的执行次数是。C

#includc<sidio.h>

main()

{intij;

for(i=0.j=1:i<=j+1;i+=2,j-)printf("%d\n'\i);

)

A)3B)2C)1D)0

6.有如下程序:

#include<stdio.h>

mam()

{intn=9;

while(n>6){n-;printf("%d"ji):)

)

该程序段的输出成果是。B

A)987B)87608765D)9876

7.有如下程序段:A

intk=0:

while(k=l)k++;

while循环执行的次数姑。

A)无限次B)有语法借,不能执行。一次也不执行D)执行一次

8.如卜.程序中,while循环的循环次数是.D

#include<stdio.h>

main()

{inti=0;

while(i<10)

{if(i<l)continue;

if(i==5)break;

i++;

}

1

A)1B)IO

C)6D)死循环,不能确定次数

9.如下程序的输出成果是。B

#include<stdio.h>

inain()

{inti=0.a=0;

while(i<20)

{for(:;)

{if((i%10)==0)break;

elsci-;

}

i+=ll;a+=i;

)

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

}

A)21B)32C)33D)ll

10.语句while(!E);中的条件!E等价于。A

A)E==0B)E!=1C)E!=0D)~E

IL如卜的for循环。C

for(x=0,y=0;(y!=123)&&(x<4):x++);

A)是无限循环B)循环次数不定

C)循环执行4次D)循环执行3次

12.执行如下程序段的成果是。E

intx=23;

do

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

}while(!x);

A)打印出321B)打印出23

C)不打印任何内容D)陷入死循环

第7章:数组

1.有如下程序:

#includc<stdio.h>

#include<string.h>

main()

{chara[]=fa,;b,;c,;d\'e\'f,'g'/h'AO');

inti,j;

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

prinif("%d.%d\n',.i.j);

)

程序运行后的输出成果是。I)

A)9,9B)8,9C)L8D)9,8

2.如下程序中函数reverse。的功效是将a所指数组中的内容进行逆置存储。

科include<stdio.h>

voidreverse(inta[],intn)

inti.t;

fbr(i=O;i<n/2;i++)

{t=a[i];a[i]=a[n-1-iJ;a[n-1-i]=t;}

)

main()

inib|IOJ={1,2,3,4,5,6,7,8,9,10);inti,s=O;

reverse(b,8);

for(i=6;i<IO;i++)s+=b[i];

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

)

则程序运行后的输出成果是。A

A)22B)IOC)34D)30

3.有如下程序:

main(intargc,char*argv(J)

intn.i=O;

while(argv[l][i]!='\O')

{n=fun():i++:)

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

}

intfun()

staticints=0;

s+=l;

rclurns;

}

假设程序经编译、连接后生成可执行文献cxam.cxc,若键入如下命令行

cxain123V回乍〉

则运行成果为。A

A)6B)8C)3D;4

4.如下程序的输出成果是。A

#include<stdio|fh>

#include<stringf-f-h>

main()

charstr[12]={'s7tVr,'iVnVg');

prinlf("%d\n",strlcn(slr));}

A)6B)7C)llD)12

5.若有阐明:inta[3][4];,则对数组a元素非法引用的是。I)

A)a[0][2*l]B)a[l][3]C)a[4-2][0]D)a[0][4]

6.若有阐明:inla[][4]={0,0};,则如下选项中,不正确的是。D

A)数组a的每个元素都可得到初值。

B)二维数组a的第一维大小为1

C)因为二维数组a中初值的个数不能被第二维大小的值整除,则第♦维的大小等于所得商数再加1,故数组a的

行数为1

D)只有元素a[0][0]和可得到初值0,其他元素均得不到初值0

7.如下程序中有错误的一行是,D

(1)main()

(2){

(3)intaf31=(ll:

(4)inli;

⑸scanf("%d".&a);

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

(7)printf("%f\n';a[0]);

(8)}

A)3B)6C)7D)5

8.若有阐明:inia山3]={123,4,5,6,7};,则a数组第一维的大小是。3

A)2B)3C)4D:无确定值

9.若有数组定义:chararray]]='China";,则数组array所占的空间为。C

A)4个字节B)5个字节C)6个字节D)7个字节

10.如下程序的输出成果是。A

#includc<stdio.h>

#includc<string.h>

main()

charan•⑵[4];

strcpy(arr."you");strcpy(arr[IJ,"me");

arrf0]|3]='&':

printf("%s\n',,arr);

)

A)you&mcB)youC)mcD)crr

11.有如下程序:

#inckide<stdio.h>

main()

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

for(i=0;i<k;i++)n[il=n[i]+l;

prinlf("%<i\n",nlkj);

)

该程序的输出成果是。D

A)不定值B)2C)lD)0

12.如下程序的输出成果是。A

#includc<sldio.h>

main()

inta[3][3]=({l,2}.{3,4}.{5.6}}.i,j,s=O;

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

for(j=0:j<i:j++)s+=a[i][j]:

printf("%<i\n",s);

)

A)14B)19C)20D)21

13.当执行如下程序时,假如输入ABC,则输出成果是。A

科include<stdio杆h>

#include〈string杆h>

main()

{charss(101="1,2,3,4,5";

gets(ss);strcat(ss."6789"):printf(,,%s\n",ss);

)

A)ABC6789B)ABC67C)12345ABC6D)ABC456789

14.如下程序的输出成果是。A

#include<stdio.h>

f(intb|],intn)

inti,s=0;

fbr(i=m;i<n;i=i+2)s=s+b[i];

returns;

)

main()

intx,a|]={1,2,3,4,5,6,7,89);

x=f(a,3.7);

prinlf("%<l\n",x);

1

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

15.如下程序中函数sort。的功效是对数组a中的数据进行由大到小的排序。

#include<stdio.h>

voidsort(intn)

{inti.j.t;

fbr(i=O;i<n-l;i++)

for(j=i+l:j<n;j++)

if(a(i]<a|j])(t=a(i];a[i]=a|j);a(j|=t;}

)

main()

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

sort(&aa[3],5);

for(i=0;i<10;i++)printf("%d,",aa|i]);

printf("\n");

)

程序运行后的输出成果是。C

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

01.2,3,8,7,6,5,4,9,10,D)1,2,10,9,8,7,6,5,4.35

16.对两个数组a和b进行如下初始化:

charalJ="ABCDEF";

charb[]={,AVB,;C,,D\,EVF);

则如下论述正确的是。D

A)数组a与数组b完全相同B)数组a与数组b长度相同

C)数组a与数组b中都存储字符串D)数组a比数组b长度长

17.有如下程序段:D

chara[3],b|J="China";

a=b;

printfC%s",a);

则。

A)运行后将输出ChinaB)运行后将输出ChC)运行后将输出ChiD)编译犯错

18.判断字符串si是否不小于字符串s2,应当使用。D

A)if(sl>s2)B)if(strcmp(sl,s2))C)if(strcnip(s2,sl)>0)D)if(strcmp(sl,s2)>0)

19.如下程序的输出成果是。A

#includc<sidio.h>

main()

{charch[7]={"12ab56"};

inti,s=O;

for(i=0;ch[i]>=,0'&&ch[i]<='9,;i+=2)

s=IO*s+ch[i]-'O';

printfC'%d\n",s);

)

A)IB)1256C)12ab56D)1

20.当运行如卜程序时,从健盘输入:AhaMA[空格]Aha<回车>,则程序的输出成果是。A

#include<stdio.h>

inain()

{chars[80],c='a';

inti=0;

scanf("%s”,s);

while(s[i]!='\O')

(if(s[i]==c)s[i]=s[i]-32;

elseif(s[i]==c-32)s[i]=s[i]+32;

i++;

)

puts(s);

)

A)ahAMaB)AbAMaC)AhAMa[空格]ahAD)ahAMa[空珞]ahA

操作题:

1.下列给定程序中,函数fun()的功效是:将形参a所指数组中的前半部分元素中的值与后半部

分元素中的值对换。形参n中存储数组中数据的个数,若n为奇数,则中间的元素不动。

例如:若a所指数组中的数据为:1、2、3、4、5、6、7、8、9,则调换后为:6、7、8、9、5、

1、2、3、4。

请在空白处填入正确内容,使程序得出正确的成果。

(源程序在考生文献夹“WEXAM\OOOOOOOO"下)

不得增行或删行,也不得更改程序的结构!

#inchide<stdio.h>

科defineN9

voidfun(inta[].intn)

{inti,t,p;

p=(n%2==0)?n/2:n/2+1;

fbr(i=0;i<n/2;i++)

{t=afi];

ali]=alp+i];

a[p+i]=t;

I

)

main()

(intb[N|={i,2,3,4,5,6,7,8,9),i;

printf("\nTheoriginaldata:\nM);

for(i=O;i<N;i++)

printf("%4d",b|i]);

prinif("\n");

fun(b.N);

printf("\nThcdataaftermo\ing:\n");

for(i=0:i<N;i++)

printf("%4d",b|i));

printf("\n"):

}

第八章函数

1.如下函数值的类型是。A

fun(floatx)

{floaty:

y=3*x-4;

returny;

)

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

2.如下程序的输出成果是。B

#inckide<stdio.h>

inta,b;

voidfun()

{a=100;b=200;}

main()

{inta=5,b=7;

fun();

prinlf("%d%d\n",a,b);

)

A)100200B)57C)00D)75

3.如下程序的输出成果是。C

#include<stdio.h>

intx=3;

main()

(inti;

for(i=l;i<x;i++)incrc();

)

incre()

(staticintx=l;

x*=x+l;

prinlf("%d",x);

)

A)33B)22C)26D)25

4.如下程序的输出成果是。B

#include<stdio.h>

intt(intn)

{if(n==l)rclumI;

elsereturnf(n-l)+l;

)

main()

{inti.j=O;

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

j+=f(i);

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

}

A)4B)3C)2D)1

5.如下程序的输出成果是。A

#include<stdioh>

intd=l;

fun(intp)

intd=5;

d+=p++;

printf("%d",d);

)

main()

{inta=3;

fun(a);

d+=a++;

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

)

A)84B)96C)94D)85

6.函数调用strcal(strcpy(sirl.slr2).slr3)的功效是。C

A)将字符串st"复制到字符串si”中后再连接到字符串sir3之后

B)将字符串和1连接到字符串str2之后冉熨制到字符即和3之后

。将字符串str2复制到字符串strl中后再将字符串str3连接到字符串stil之后

D)将字符串*r2连接到字符串sirl之后再将字符串sirl受制到字符串SU3中

7.有如下程序:

intsub(intn)

if(n<5)return0;

elseif(n>l2)return3:

return1;

if(n>5)return2;

)

main()

inta=10;

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

)

该程序的输出成果是。B

A)0B)IC)2D;3

8.如下程序的输出成果是。C

#include<stdio.h>

intd=l;

fun(intp)

{staticintd=5;

d+=p;

printf("%<l",d);

return(d);

)

main()

{inta=3:

prinlf("%d\n",fun(a+fun(d))):

}

A)699B)6690615151))6615

9.在一个源文献中定义的外部变量的作用域为。D

A)本文献的所有范闱B)本程序的所有范围

C)小国数的所有范围D)从定义该变量的位置开始至小义献结束

10.如下论述中正确的是。B

A)全局变量的作用域一定比局部变量的作用域范围大

B)静态(static)类别变量的生存期贯通于整个程序的运行期间

C)函数的形参都属于全局变量

D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值

II.如下对C语言函数的描述中,正确的是。A

A)C程序由一个或一个以上的函数组成B)C函数既能好嵌套定义又能够递归调用

C)函数必须有返回值,否则不能使用函数D)C程序中调用关系的所有函数必须放在同•个程序文献中

12.C语言中形参的默认存储类别是。A

A)自动(auto)B)静态(static)C)存储器(register)D)外部(extern)

13.如下论述中不正确的是。B

A)在C语言中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B)在C函数中,最佳使用全局变量

C)在C语言中,形式参数只是局限于所在函数

D)在C语言中,函数名的存储类别为外部

14.C语言中函数返回值的类型由决定。D

A)relurn语句中的体现式类型B)调用函数的主调函数类型

。调用函数时的暂时类型D)定义函数时所指定的函数类型

15.C语言要求,调用一个函数时,实参变量和形参变量之间的数据传递是。C

A)地址传递B)由实参传给形参,并由形参返回给实参

C)值传递D)由用户指定传递方式

16.在C语言中。D

A)函数的定义能够圾套,但函数的调用不能够嵌套

B)函数的定义和调用均能够嵌套

C)函数的定义和调用均不能够嵌套

D)函数的定义不能够嵌套,但函数的调用能够嵌套

17.如下函数调用语句中,含有的实参个数是。A

fun(x+y,(eI,e2),fun(xy.d,(a,b)));

A)3B)4C)6D)8

18.如下程序的输出成果是。C

#inciude<sidio.h>

fun(intx)

{staticinta=3;

a+=x;

rciurn(a);

}

main()

{intk=2,m=i,n;

n=fun(k);

n=fun(m);

prinif("%d".n);

)

A)3B)4C)6D)9

19.如下程序的输出成果是。0

#include<stdio.h>

intt'unc(inla,inlb)

(return(a+b);)

main()

{intx=2,y=5,z=8,r:

r=func(func(x,y),z);

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

}

A)12B)13C)14D)15

第9章指针

1.在阐明语句:int*f();中,标识符f代表的是。D

A)一个用于指向整型数据的指针变量B)一个用于指向一维数组的行指针

。一个用于指向函数的指针变量D)一个返回仅为指针型的函数名

2.如下程序的输出成果是。A

#includc<sldio.h>

#includc<slring.h>

main()

{char*p="abcde\Ofghjik\O";

printf(,'%d\n",$trlen(p));

)

A)12B)15C)6D)5

3.设有如下语句,则不是对a数组元素的正确引用,其中OWi<IO°D

inta[IO]=[0,1,2,3,4,567,8,9},*p=a;

A)a[p-a]B)*(&a[i])C:p[i]D)*(*(a+i))

4.如下程序段的输出成果是。A

int*var.ab;

ab=IOO;var=&ab:ab=*var+10;

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

A)110B)100C)0D)出现错误

5.设有如下的程序段:B

charstr[]="Hello";

char*ptr;

ptr=str;

执行上面的程序段后,*(p〔r+5)的值为。

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

6.若有如下定义和语句:A

#include<stdio.h>

inia=4,b=3,*p,*q,*w;

p=&a:q=&b:w=q:q=NULL;

则如下选项中错误的语句是。

A)*q=0;B)w=p;C)♦p=a;D)*p=*w;

7.下面函数的功效是。B

sss(s,t)

char*s,*l;

{while((*s)&&(*t)&&(*t++==*s++));

rcturn(*s-*();

)

A)求字符串的长度B)比较两个字符串的大小

。将字符串$复制到字符串I中D)将字符串S接续到字符串I中

8.有如下程序:

#include<stdlib.h>

main()

char*p.*q;

p=(char*)malloc(sizeof(char)*20);q=p;

scanf("%s%s",p,q)iprintf("%s%s\n",p,q);

)

若从键盘输入:abcdefc回车〉,则输出成果是。A

A)defdefB)abcdefC)abcdD)dd

9.若有如下阐明和定义:

typedefint*INTEGER;

INTEGERp.*q:

如下论述正确的是。B

A)p是ini型变量B)p是基类型为int的指针变量

C)q是基类型为ini的指针变量D)程序中可用INTEGER替代ini类型名

10.阐明语句int*(*p)();的含义是。D

A)p是一个指向ini型数组的指甘

B)p是指针变量,它组成了指针数组

C)p是一个指向函数的指针,该函数的返回值是一个整型

D)p是一个指向函数的指针,该函数的返回值是一个指向整型的指计

11.已知char选择正确的语句。C

A)p*=3;B)p/=q;C)p+=3;D)p+=q:

12.已知inli,x⑶[4];,则不能将的值赋给变量i的语句是。C

A)i=*(*(x+l)+I);B)i=x[l][i];

C)i=*(*(x+l)):D)i=*(x[l]+l);

13.下列程序的输出成果是。B

#include<stdio.h>

intb=2;

intfunc(int*a)

{b+=*a;return(b);

1

main()

{inta=2,res=2;

res+=func(&a);

printf("%(l\n",res);

}

A)4B)6C)8D)1O

14.有如下程序段:

int*p,a=10,b=l;

p=&a;a=*p+b;

执行该程序段后,a的值为。B

A)12B)llC)1OD)编译犯错

15.对于基类型相同的两个指钎变量之间,不能进行的运算是。C

A)<B)=C)+D)-

16.如下程序的输出成果是。C

科include<sldio.h>

inain()

{charch⑵[5]={"6937","8254"),*p[2];

inti,j.s=O:

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

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

forO=0;p[i]|j|>'\0'j+=2)

s=10*s+pli][j]-'0';

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

)

A)69825B)63825C)6385D)693825

17.当调用函数时,实参是•个数组名,则向函数传递的是。B

A)数组的长度B)数组的首地址

。数组每一个元素的地址D)数组每个元素中的值

18.若有阐明谙句:in【a,b,c,*d=&c:,则能止确从键盘读入3个整数分别赋给变量a、b、c的诺句是。A

A)scanf("%d%d%d".&a,&b.d);B)scanf("%d%d%d".&a.&b,&d);

C)scanf("%d%d%d",a,b,d);D)scanf(,,%d%d%d",a,b,*d);

19.若定义:inta=511,*b=&a;,则prinlf("%d\n",*b);的输出成果为。D

A)无确定值B)a的地址C)512D)51l

第10章编译预处理和动态存储分派

】.对下面程序段,止确的判断是。B

#defineA3

#defineB(a)«A+l)*a)

x=3*(A+B(7));

A)程序错误,不许嵌套宏定义B)x=93

C)x=21D)程序错误,宏定义不许有参数

2.如下程序的输出成果为。B

#include<stdio.h>

#dcfincF(y)3.84+y

#definePR(a)printf("%d",(int)(a))

#defincPRINT(a)PR(a);pulchar('\n')

main()

{intx=2;

PRINT(F(3)*x);

)

A)8B)9C)10D)11

3.如下说法中正确的是。C

A)#define和prinlf都是C语句B)#define是C语句,而prinif不是

C)prinif是C语句,但#define不是D)#define和prinlf都不是C语句

4.如下程序的愉出成果是。C

#definef(x)x*x

#includc<stdio.h>

inain()

{inta=6.b=2,c;

c=f(a)/f(b):

printf("%d\nM,c):

)

A)9B)6C)36D)I8

5.如下程序运行后,输出成果是。B

#definePT5.5

#defineS(x)PT*x*x

#include<stdio.h>

main()

(inta=l.b=2;

printf("%4.1f\n".S(a+b));

)

A)49.5B)9.5C)22.0D)45.0

6.卜列程序执行后的输出成果是。B

#defineMA(x)x*(x-l)

#include<stdio.h>

main()

{inta=l.b=2;printf("%d\n".MA(l+a+b));

)

A)6B)8C)1OD)12

7.有如下程序:

#defineN2

#dcfincMN+l

#detineNUM2*M+l

main()

(inti;

tbr(i=l;i<=NUM;i++)printf("%d\n",i);

I

该程序中的for循环执行的次数是。C

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

8.程序中头文献lypel.h的内容是:

#defineN5

#defineMlN*3

程序如下:

#includc"typcl.h"

#defineM2N*2

main()

(inti;

i=Ml+M2;printf("%d\n",i);

)

程序编译后运行的输出成果是。C

A)10B)20C)25D)30

9.如下正确的描述为。C

A)每个C语言程序必须在开头使用预处理命令#include<sldio.h>

B)预处理命令必须位于C源程序的首部

C)在C忠言中预处理命令都以"#"开头

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

10.从下列选项中选择不会引起二义性的宏定义是。I)

A)#definePOWER(x)x*xB)#definePOWER(x)(x)*(x)

C)#definePOWER(x)(x*x)D)#definePOWER(x)((x)*(x))

11.设有如下宏定义:

#defineN3

#defineY(n)((N+l)*n)

则执行语句”z=2*(N+Y(5+D)丁后,z的值为。C

A)犯错B)42C)48D)54

12.若有•宏定义#defineMOD(x,y;x%y,则执行如下语句后的输出为。B

iniz,a=i5,b=100;

z=MOD(b.a);

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

A)ilB)10C)6D)宏定义不合法

13.如下程序的输出成果是D

#include<stdio.h>

inta[3][3]={l,2,3,4,5,6,7,8,9},*p;

main()

p=(int*)nialloc(sizeof(int));

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

free(p);

)

f(int*s.intp[H3])

{*s=p[1)(11:)

A)IB)4C)7D)5

第11章结构体与共用体

1.在16位的PC机上使用C语言,若有如下定义:D

structdata

{inti;

charch:

doublef;

}b;

则结构变量b占用内存的字节数是。

A)IB)2C)8D)11

2.设有如下阐明和定义语句,则下面体现式中值为3的是。D

structs

{inti;

structs*i2;

);

staticstructsa[3]={1.&a[I].2.&a(2].3.&a[O]);

staticstructs*ptr;

ptr=&a(IJ:

A)ptr->i++B)ptr++->IC)*ptr->iD)++ptr->i

3.有如下程序:

main()

union{

unsignedintn;

unsignedcharc;

}ul;

ul.c='A';

printf("%c\n",ul.n);

)

执行后输出成果是C

A)产生语法错B)随机值C)AD)65

4.设有如下阐明语句:C

structstu

(inta;

floatb;

}stutype;

则下面的论述正确的是。

A)sirucl是结构体类型名B)s【ruclstu是用户定义的结构体变量名

C)siutype是用户定义的结构体变量名D)a和b都是结构体变量名

5.如F程序输出成果是B

#include<stdio.h>

lypedefunion

(longi;

intk[5|;

charc;

}DATE;

structdate

intcat;

DATEcow:

doubledog;

}too;

DATEmax:

muin()

(pnntl("%d\n",sizcof(structdate)+sizcof(max));

)

A)25B)30C)18D)8

6.如下对结构体变量slul中组员age的非法引用是。B

structstudent

{intage;

intnum;

}stul,*p;

p=&stul:

A)stuI.ageB)student.ageC)p->ageD)(*p).age

7.下列程序中,结构体变量a所占内存字节数是。C

unionU

(charst[4];

inti;

longI:

);

structA

(intc;

unionUu;

}a;

A)4B)5C)6D)8

8.设有如下阐明语句:

structex

intx;floaty;charz;

}example;

则下面的论述中不正确的是。B

A)strucl是结构体类型的核心字B)cxamplc是结构体类型名

C)x,y,z都是结构体组员名D)struclex是结构体类型名

9.若有下面的阐明和定义:

structtest(

intml;charm2;floatm3;

unionuu(

charul[5];

intu2[2];

}ua;

}myaa;

则sizeof(structtest)的值是。A

A)12B)16C)14D)9

10.已知:

union

(inti;

chare;

floata;

}test;

则sizeof(test)的值是。A

A)4B)5C)6D)7

II.如下对C语言中联合类型数据的正确论述是。C

A)•旦定义了•个联合变量后,即可引用该变量或该变量中的任意组员

B)一个联合变量中能够同时存储其所有组员

C)一个联合变量中不能同时存储其所有组员

D)联合类型数据能够出目前结构体类型定义中,但结构类型数据不能出目前联合类型定义中

结构体操作题:

1.下列给定程序是建立一个带头节点的单向链表,并用随机函数为各节点赋值。函数fun的功

效是将单向链表节点(不包括头节点)数据域为偶数的值累加起来,并且作为函数值返同。

请更正函数fun中的错误,使它能得出正确的成果。

注意:不要改动main函数

温馨提示

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

最新文档

评论

0/150

提交评论