C语言习题集含答案11.docx

上传人:b****5 文档编号:8238233 上传时间:2023-01-30 格式:DOCX 页数:12 大小:22.05KB
下载 相关 举报
C语言习题集含答案11.docx_第1页
第1页 / 共12页
C语言习题集含答案11.docx_第2页
第2页 / 共12页
C语言习题集含答案11.docx_第3页
第3页 / 共12页
C语言习题集含答案11.docx_第4页
第4页 / 共12页
C语言习题集含答案11.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

C语言习题集含答案11.docx

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

C语言习题集含答案11.docx

C语言习题集含答案11

一、单选题:

(1)在C语言提供的合法的关键字是(d)【单词拼写】

A)swicthB)cherC)CaseD)default

(2)在C语言中,合法的字符常量是(b)

A)'\084'【不能有八】B)'\x43'C)'ab'D)"\0"

(3)若有定义和语句:

chars[10]:

s="abcd";printf("%s\n",s);

则结果是(以下u代表空格)(d)

A)输出abcdB)输出a

C)输出abcduuuuuD)编译不通过

(4)若有定义和语句:

int**pp,*p,a=10,b=20;

pp=&p;p=&a;p=&b;printf("%d,%d\n",*p,**pp);

则输出结果是:

(d)

A)10,20B)10,10C)20,10D)20,20

(5)若有以下定义和语句:

intu=010,v=0x10,w=10;【这样确实可以,‘\010’效果一样】

printf("%d,%d,%d\n",u,v,w);

则输出结果是(a)

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

(6)若有以下定义和语句

charc1='b',c2='e';

printf("%d,%c\n",c2-c1,c2-'a'+"A");

则输出结果是(d)

A)2,MB)3,E

C)2,E?

D)输出项与对应的格式控制不一致,输出结果不确定

(7)若有以下定义:

chars[20]="programming",*ps=s;

则不能代表字符o的表达式是(d)【Ps是一维地址】

A)ps+2B)s[2]C)ps[2]D)ps+=2,*ps

(8)若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是(a)

for(i=5;i;i--)

for(j=0;j<4;j++){...}

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

(9)若有以下定义和语句:

char*s1="12345",*s2="1234";

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

则输出结果是(a)

A)4B)5C)9D)10

(10)若有以下定义和语句:

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

则不能表示a数组元素的表达式是(b)

A)*pB)a[10]C)*aD)a[p-a]

(11)下面程序的输出是(c)

main()

{char*s="121";

intk=0,a=0,b=0;

do

{k++;

if(k%2==0){a=a+s[k]-'0';continue;}

b=b+s[k]-'0';a=a+s[k]-'0';

}

while(s[k+1]);

printf("k=%da=%db=%d\n",k,a,b);

A)k=3a=2b=3B)k=3a=3b=2

C)k=2a=3b=2D)k=2a=2b=3

(12)下面程序的输出是(a)

main()

{unsigneda=32768;

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

}运行结果:

-32768

A)a=-32768B)a=32767

C)a=-32767D)a=-1

(13)若有以下定义:

floatx;inta,b;则正确的switch语句是(c)

A)switch(x)B)switch(x)

{case1.0:

printf("*\n");{case1,2:

printf("*\n");

case2.0:

printf("**\n");case3:

printf("**\n");

}}

C)switch(a+b)D)switch(a+b);

{case1:

printf("\n");{case1:

printf("*\n");

case1+2:

printf("**\n");case2:

printf("**\n");

}}

(14)以下程序输出的结果是(d)

main()

{charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;

for(k=1;k<3;k++)

printf("%s\n",&w[k][k]);

}

A)ABCDB)ABCD

FGHEFG

KLIJ

M

C)EFGD)FGH

JKKL

O

(15)若数组名作实参而指针变量作形参,函数调用实参传给形参的是(d)

A.数组的长度B.数组第一个元素的值

C.数组所有元素的值D.数组第一个元素的地址

(16)若变量已正确定义并赋值,下面符合C语言语法的表达式是(b)

A)a:

=b+1B)a=b=c+2C)int18.5%3D)a=a+7=c+b

(17)C语言中运算对象必须是整型的运算符是(a)

A)%=B)/C)=D)〈=

(18)若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是(c)

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

(19)若变量a、i已正确定义,且i已正确赋值,合法的语句是(d)

A)a==1B)++i;C)a=a++=5;D)a=int(i);

(20)若有以下程序段,

intc1=1,c2=2,c3;

c3=1.0/c2*c1;

则执行后,c3中的值是(a)

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

(21)有如下程序

main()

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

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

}

运行该程序的输出结果是(d)

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

(22)能正确表示逻辑关系:

“a≥=10或a≤0”的C语言表达式是(d)

A)a>=10ora<=0B)a>=0|a<=10

C)a>=10&&a<=0D)a>=10||a<=0

(23)有如下程序

main()

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

switch(x)

{case0:

b++;

case1:

a++;

case2:

a++;b++;}

printf(“a=%d,b=%d\n”,a,b);}

该程序的输出结果是(a)

A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2

(24)有如下程序

main()

{floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x<10.0)y=1.0/x;

elsey=1.0;

printf(“%f\n”,y);}

该程序的输出结果是(c)

A)0.000000B)0.250000C)0.500000D)1.000000

(26)有如下程序

main()

{inti,sum;

for(i=1;i<=3;sum++)sum+=i;

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

}

该程序的执行结果是(c)

A)6B)3C)死循环D)0

(27)有如下程序

main()

{intx=23;

do

{printf(“%d”,x--);}while(!

x);}

该程序的执行结果是(b)

A)321B)23C)不输出任何内容D)陷入死循环

(28)有如下程序

main()

{intn=9;

while(n>6){n--;printf(“%d”,n);}}

该程序段的输出结果是(b)

A)987B)876C)8765D)9876

(29)设有说明语句:

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

A)包含1个字符B)包含2个字符

C)包含3个字符D)说明不合法

(30)有如下函数调用语句

func(rec1,rec2+rec3,(rec4,rec5);

该函数调用语句中,含有的实参个数是(d)

A)3B)4C)5D)有语法错

(31)有如下程序

intfunc(inta,intb)

{return(a+b);}

main()

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

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

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

该程序的输出的结果是(d)

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

(32)有如下程序段

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

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

执行该程序段后,a的值为(b)

A)12B)11C)10D)编译出错

(33)对于基类型相同的两个指针变量之间,不能进行的运算是(a)

A)

(34)有如下程序

longfib(intn)

{if(n>2)return(fib(n-1)+fib(n-2));

elsereturn

(2);

}

main()

{printf(“%d\n”,fib(3));}

该程序的输出结果是(b)

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

(35)在C语言中,函数的隐含存储类别是(a)

A)autoB)staticC)externD)无存储类别

(36)有如下程序

#defineN2

#defineMN+1

#defineNUM2*M+1

main()

{inti;

for(i=1;i<=NUM;i++)printf(“%d\n”,i);

}

该程序中的for循环执行的次数是(b)

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

(37)有以下函数

charfun(char*p)

{returnp;}

该函数的返回值是(d)

A)无确切的值B)形参p中存放的地址值

B)一个临时存储单元的地址D)形参p自身的地址值

(38)有如下程序段

inta=14,b=15,x;

charc=’A’;

x=(a&&b)&&(c<’B’);

执行该程序段后,x的值为(d)

A)trueB)falseC)0D)1

(39)有如下说明

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

则数值为9的表达式是(b)

A)*p+9B)*(p+8)C)*p+=9D)p+8

(40)若有以下的定义:

intt[3][2];能正确表示t数组元素地址的表达式是(cd)

A)&t[3][2]B)t[3]C)t[1]D)t[2]

(41)有如下程序

main()

{charch[2][5]={“6937”,”8254”},*p[2];

inti,j,s=0;

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

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

for(j=0;p[i][j]>’\0’;j+=2)

s=10*s+p[i][j]-‘0’;

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

该程序的输出结果是(c)

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

(42)若有以下的定义:

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

则值为3的表式是(a)

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

C)p+=3,*p++D)p+=2,++*p

(43)假定所有变量均已正确说明,下列程序段运行后x的值是(b)

a=b=c=0;x=35;

if(!

a)x--;

elseif(b);if(c)x=3;elsex=4;

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

(44)在以下一组运算符中,优先级最高的运算符是(c)

A)<=B)=C)%D)&&

(45)若有以下定义和语句:

intw[2][3],(*pw)[3];pw=w;

则对w数组元素非法引用是(b)

A)*(w[0]+2)=*w[0][2]B)*(pw+1)[2]

C)pw[0][0]=*w[0][0]D)*(pw[1]+2)=*w[1][2]

(46)若有以下程序片段:

charstr[]="ab\n\012\\\"";

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

上面程序片段的输出结果是(c)

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

(47)函数调用strcat(strcpy(str1,str2),str3)的功能是(c)

A)将串str1复制到串str2中后再连接到串str3之后

B)将串str1连接到串str2之后再复制到串str3之后

C)将串str2复制到串str1中后再将串str3连接到串str1之后

D)将串str2连接到串str1之后再将串str1复制到串str3中

(48)以下对C语言函数的有关描述中,正确的是(a)

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

B)C函数既可以嵌套定义又可以递归调用

解释:

C函数可以递归调用,但不允许嵌套定义

C)函数必须有返回值,否则不能使用函数

D)C程序中有调用关系的所有函数必须放在同一个源程序文件中

(49)以下叙述中不正确的是(c)

A)在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值.

B)在C中,调用函数时,实在参数和对应形参在类型上只需赋值兼容.

C)在C中,外部变量的隐含类别是自动存储类别.

D)在C中,函数形参可以说明为register变量.

(50)以下程序的输出结果是(a)

#definesub1(chara,charb){charc;c=a;a=b;b=c;}

#definesub2(char*a,charb){charc;c=*a;*a=b;b=c;}

#definesub3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}

main()

{chara,b;

a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);

a='A';b='B';sub2(&a,b);putchar(a);putchar(b);

a='A';b='B';sub1(a,b);putchar(a);putchar(b);

}

A)BABBABB)ABBBBA

C)BABABAD)BAABBA

(51)错误的转义字符是(a)

A)'\091'B)'\\'C)'\0'D)'\''

(52)设inta,b,c;执行表达式a=b=1,a++,b+1,c=a+b--后,a,b和c的值分别是(b)

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

(53)在C语言中,错误的常数是(a)

A)1E+0.0B)5C)0xafD)0L

(54)设intk;则语句for(k=0;k=1;k++);和

语句for(k=0;k==1;k++);执行的次数分别是(a)

A)无限和0B)0和无限C)都是无限D)都是0

(55)某文件中定义的静态全局变量(或称静态外部变量)其作用域是(b)

A)只限某个函数B)本文件C)跨文件D)不限制作用域

二、程序填空题:

(10)函数pi的功能是根据以下近似公式求π值:

(π*π)/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)

现在请你在下面的函数中填空,完成求π的功能。

#include“math.h”

doublepi(longn)

{doubles=0.0;longi;

for(i=1;i<=n;i++)s=s+1.0/(i*i);

return(sqrt(6*s));}

(14)以下函数用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n所指存储单元中存放数组中数据的个数.插入后数组中的数仍有序.请填空.

voidfun(int*w,intx,int*n)

{inti,p;

p=0;

w[*n]=x;

while(x>w[p])p++;

for(i=*n;i>p;i--)w[i]=w[i-1];

w[p]=x;

++*n;

}

(15)fun1函数的调用语句为:

fun1(&a,&b,&c);它将三个整数按由大到小的顺序调整后依次放入a,b,c三个变量中,a中放最大数。

请填空.

voidfun2(int*x,int*y)

{intt;

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

}

voidfun1(int*pa,int*pb,int*pc)

{if(*pc>*pb)fun2(pc,pb);

if(*pa<*pc)fun2(pa,pc);

if(*pa<*pb)fun2(pa,pb);

}

16.任意输入三条边(a,b,c)后,若能构成三角形且为等腰、等边和直角,则分别输出DY、DB和ZJ,若不能构成三角形则输出NO。

main()

{floata,b,c,a2,b2,c2;

scanf("%f%f%f",&a,&b,&c);

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

if(a+b>c&&b+c>a&&a+c>b)

{if(a==b||a==c||b==c)printf("DY");

if(a==b&&b==c)printf("DB");

a2=a*a;b2=b*b;c2=c*c;

if(a2+b2==c2||a2+c2==b2||b2+c2==a2)printf("ZJ");

printf("\n");}

elseprintf("NO\n");

}

17.输出下列图形。

123456789

23456789

3456789

456789

56789

6789

789

89

9

main()

{inti,j;

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

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

printf("\n");}}

三、程序分析题

阅读下列程序,将输出结果分别写到各题右侧的空白处。

16.main()

{inta=3,b=9,c=2;

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

程序运行结果:

ﺏﺏﺏﺏ3ﺏﺏﺏﺏ9ﺏﺏﺏﺏ2

17.voidchange(int*x,inty)

{intt;

t=*x;*x=y;y=t;}

main()

{inta=3,b=5;

change(&a,b);

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

程序运行结果:

a=5,b=5

18.main()

{intj;

for(j=4;j>=2;j--)

switch(j)

{case0:

printf("%4s","ABC");

case1:

printf("%4s","DEF");

case2:

printf("%4s","GHI");break;

case3:

printf("%4s","JKL");

default:

printf("%4s","MNO");

}

printf("\n");

}程序运行结果:

ﺏMNOﺏJKLﺏMNOﺏGHI

19.main()

{staticintj,a[6]={1,2};

for(j=3;j<6;j++)

a[j]=a[j/2]+a[j%3]-a[j-2];

for(j=0;j<6;j++)

printf("%5d",a[j]);

printf("\n");}

程序运行结果:

ﺏﺏﺏﺏ1ﺏﺏﺏﺏ2ﺏﺏﺏﺏ0ﺏﺏﺏﺏ1ﺏﺏﺏﺏ2ﺏﺏﺏﺏ-1

20.inta=10;

intf(inta)

{intb=0;staticintc=3;

a++;++c;++b;

returna+b+c;}

main()

{inti;

for(i=0;i<2;i++)print("%5d",f(a));

printf("\n");

}

程序运行结果:

ﺏﺏﺏ16ﺏﺏﺏ17

21.#defineN2

#defineMN+1

#defineNUM2*M+1

intfib(intn)

{

returnn<3?

2:

fib(n-1)+fib(n-2);

}

main()

{

printf("%5d%5d\n",NUM,fib(5));

}

程序运行结果:

ﺏﺏﺏﺏ6ﺏﺏﺏ10

22.假设在DOS提示符下显示源程序如下(PROG.exe程序也在C

盘中):

C:

\>typePROC.c

main(intargc,char*argv[])

{while(--argc>0)

printf("%s",argv[argc]);

printf("\n");

}

写出执行下列命令后的输出结果

C:

\>PROG2008OLYMPICBEIJING<回车>

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

当前位置:首页 > 表格模板 > 合同协议

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

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