C语言复习题 c程序设计教程 有答案.docx

上传人:b****6 文档编号:3475301 上传时间:2022-11-23 格式:DOCX 页数:20 大小:30.07KB
下载 相关 举报
C语言复习题 c程序设计教程 有答案.docx_第1页
第1页 / 共20页
C语言复习题 c程序设计教程 有答案.docx_第2页
第2页 / 共20页
C语言复习题 c程序设计教程 有答案.docx_第3页
第3页 / 共20页
C语言复习题 c程序设计教程 有答案.docx_第4页
第4页 / 共20页
C语言复习题 c程序设计教程 有答案.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

C语言复习题 c程序设计教程 有答案.docx

《C语言复习题 c程序设计教程 有答案.docx》由会员分享,可在线阅读,更多相关《C语言复习题 c程序设计教程 有答案.docx(20页珍藏版)》请在冰豆网上搜索。

C语言复习题 c程序设计教程 有答案.docx

C语言复习题c程序设计教程有答案

一、填空题(每小题2分,共16分)

1.在C语言中,输入操作是由库函数scanf完成的,输出函数是由库函数printf完成的。

2.执行下列语句后,a的值是-264inta=12;a+=a-=a*a;

3.C语言中的每条基本语句以        ;    作为结束符,每条复合语句以     }      作为结束符。

4.下面的程序段中循环体的执行次数是3。

a=10;b=0;do{b+=2;a-=2+b;}while(a>=0);

5.假定a为一个整型数组名,则元素a[4]的字节地址为       a+16     。

6.已知inta[2][3]={3,2,1};则表达式“a[0][0]/a[0][1]/a[0][2]”的值是1。

7.调用函数有返回值时,应在函数的返回值类型之前增加关键字return。

如果一个函数无返回值,定义它时函数类型应是void。

8.设inta=1,b=2.c=3,d;执行d=!

(a十b十c)后,d的结果是0

9.若用数组名作为函数调用时的实参,则实际上传递给形参的是数组首元素的地址。

10.设x为int型变量,请写出一个关系表达式  (x%3==0)&&(x%7==0)  ,用以判断x同时为3和7的倍数时,关系表达式的值为真。

11.表达式(int)((double)(5/2)+2.5)的值是4

12.若变量x、y已定义为int类型且x的值为99,y的值为9,请将输出语句printf("x/y=%d",x/y);补充完整,使其输出的计算结果形式为:

x/y=11

13.数组与函数参数联系密切,当用数组元素作函数参数时,这时属于值传递;当数组名作参数时,这时属于地址传递,对形参的改变可影响到实参。

14.算术表达式5x+8xy/8-xy对应的C表达式为__5*x+8*x*y/8-x*y___________________________

15.逗号表达式(x=4*5,x*5),x+25的值为___45______

16.inti=1,j=2;则表达式++i+j的值为____4_____

17.用关系表达式或逻辑表达式表示条件:

年份Year能被4整除,但不能被100整除或者能被400整除____(year%4==0&&year%100!

=0)||year%400==0___

18.一个c程序有且仅有一个main()函数。

19.C程序的基本单位是函数。

20.C语言中的标识符只能由三种字符组成,它们是字母,数字和下划线。

21.若有定义:

intb=7;floata=2.5,c=4.7;则下面表达式的值为5.500000。

a+(int)(b/3*(int)(a+c)/2)%4

22.若有定义:

inta=2,b=3;floatx=3.5,y=2.5;则下面表达式的值为3.500000。

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

23.设inta=1,b=2,c,d,e;执行c=(一a十十)十(十十b)

d=(b一一)+(十十a)一a;

e=(a/(十十b))一(b/(一一a));

后,变量a、b、c、d、e的结果分别是【2】【3】【2】【3】【0】

24.假设变量x,为整形变量,则执行下面语句后x的直为-14.

x=7;x+=x-=x+x;

25.以下程序的执行结果是c=k。

#include

main()

{charc='A'+10;

printf("c='%c\n",c);}

二、选择题(每题2分,共30分)

(1)若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是(D).

A)scanf(“%d%d1x,%1e”,&x,&y,&z);

B)scanf(“%2d*%d%1f”,&x,&y,&z);

C)scanf(“%x%*d%o”,&x,&Y);

D)scanf(“%x%o%6.2f”,&x,&y,&z);

(2)以下关于C语言的叙述中正确的是(B)

  A)C语言中的注释不可以夹在变量名或关键字的中间

  B)C语言中的变量可以在使用之前的任何位置进行定义

  C)在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致

  D)C语言的数值常量中夹带空格不影响常量值的正确表示

(3)以下C语言用户标识符中,不合法的是(D)

  A)_1

  B)AaBc

  C)a_b

  D)a-b

(4)若有定义:

doublea=22;inti=0,k=18;,则不符合C语言规定的赋值语句是(C)

  A)a=a++,i++;

  B)i=(a+k)<=(i+k);C)i=a%11;

  D)i=!

a;

(5)有以下程序

  #include

  main()

  {chara,b,c,d;

  scanf(“%c%c”,&a,&b);

  c=getchar();d=getchar();

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

  当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:

回车也是一个字符)(C)

  1234

  则输出结果是

  A)1234

  B)12

  C)123

  D)1234

 (6)若a是数值类型,则逻辑表达式(a==1)||(a!

=1)的值是(A)

  A)1

  B)0

  C)2

  D)不知道a的值,不能确定

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

  A)switch(a)

  {case:

a=b;break;

  default:

a++;}

  B)switch(a==1)

  {case0:

a=b;break;

  case1:

a++;}

  C)switch(a)

  {default:

a++;break;

  case1:

a=b;}

  D)switch(a==1)

  {case1:

a=b;break;

  case0:

a++;}

(8)有如下嵌套的if语句

  if(a

  if(a

  elsek=c;

  else

  if(b

  elsek=c;

  以下选项中与上述if语句等价的语句是(C)

  A)k=(a<b)?

a:

b;k=(b<c)?

b:

c;

  B)k=(a<b)?

((b<c)?

a:

b):

((b>c)?

b:

c);

  C)k=(a<b)?

((a<c)?

a:

c):

((b<c)?

b:

c);

  D)k=(a<b)?

a:

b;k=(a<c)?

a:

c;

(9)有以下程序

  #include<stdio.h>

  main()

  {ini,j,m=1;

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

  {for(j=3;j>O;j--)

  {if(i*j)>3)break;

  m=i*j;}}

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

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

  A)m=6

  B)m=2

  C)m=4

  D)m=5

(10)一个c程序的执行是从(A).

A.main()函数开始,直到main()函数结束

B.第一个函数开始,直到最后一个函数结束

C.第一个语句开始,直到最后一个语句结束

D.main()函数开始,直到最后一个函数结束

(11)有以下程序,其中k的初值为八进制数

  #include

  main()

  {intk=011;

  printf("%d\n",k++); }

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

  A)12

  B)11

  C)10

  D)9

(12)一个C语言程序是由(B)。

A)一个主程序和若干子程序组成

B)函数组成

C)若干过程组成

D)若干子程序组成

(13)以下关于return语句的叙述中正确的是(B)

  A)一个自定义函数中必须有一条return语句

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

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

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

(14)下列选项中,能正确定义数组的语句是D

  A)intnum[0..2008]; B)intnum[];

  C)intN=2008;

    intnum[N]; D)#defineN2008intnum[N];

(15)设charch;以下正确的赋值语句是(B).

A.ch='123';B.ch=\xff';

C.ch='\08’;D.ch="\”;

(16)若有代数式3ae/bc,则不正确的C语言表达式是(C)

A)a/b/c*e*3B)3*a*e/b/c

C)3*a*e/b*cD)a*e/c/b*3

(17)设有定义doublea[10],*s=a;,以下能够代表数组元素a[3]的是B

  A)(*s)[3]B)*(s+3)C)*s[3]D)*s+3

(18)以下正确的叙述是(D).

A)在C程序中,每行中只能写一条语句

B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数

C)在C程序中,无论是正数还是实数,都能被准确无误的表示

D)在C程序中,%是只能用于正数运算的运算符

(19)】在C语言中,要求运算数必须是整形的运算符是(D).

A)/B)++C)!

=D)%

(20)设intn=3;则n十十的结果是(B),n的结果是(C)。

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

(21)设有定义:

intx=2;,以下表达式中,值不为6的是(D)

A)x*=x+1B)x++,2*xC)x*=(1+x)D)2*x,x+=2

(22)若有以下定义

intx[10],*pt=x;

则对x数组元素的正确应用是(B)

A)*&x[10]B)*(x+3)C)*(pt+10)D)pt+3

(23)设有说明:

charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为(D)。

A)floatB)charC)itnD)double.

(24)已有定义intx;floaty;且执行scanf(“%3d%3f”,&x,&y);语句时从第一列开始输入数据12345︼678<回车>,则x的值为(B),y的值为(B)。

(注:

︼表示空格)

【1】A)12345B)123C)45D)345

【2】A)无定植B)45.000000C)678.000000D)123.000000

(25)已有如定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是(D)。

(注:

表示回车)

inta1,a2;charc1,c2;

scanf(“%d%d”,&a1,&a2);

scanf(“%c%c”,&c1,%c2);

A)1020ABB)10︼20AB

C)10︼︼20︼︼ABD)10︼20AB

(26)根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为(A).

main()

{charch1,ch2,ch3;

输入语句

printf(“%c%c%c”,&ch1,&ch2,&ch3);}

输入形式:

ABC

输出形式:

AB

scanf(“%c%c%c”,&ch1,&ch2,&ch3);

scanf(“%c,%c,%c”,&ch1,&ch2,&ch3);

scabf(“%c%c%c”,&ch1,&ch2.&ch3);

scanf(“%c%c”,&ch1,&ch2,&ch3);

(27)设X,Y均为FLOAT变量,则以下不合法的赋值语句是(B)

A)++x;B)y=(x%2)/10;C)x*=y+8;D)x=y=10;

(28)】有如下程序,对应正确的数据输入是(A)。

#include

main()

{floata,b;

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

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

A.2.045.56

B.2.01,5.67

C.A=2.04,B=5.67

D.2.045.67

(29)巳知字母A的ASCII码是65,以下程序的执行结果是(D)。

#include

main()

{charc1='A',C2='Y';

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

A.A,YB.65,65C.65,90D.65,89

(30)以下程序的执行结果是(B).

#include

{inti=010,j=10;

printf("%d,%d\n",++i,j--);}

A.11,10B.9,10C.010,9D.10,9

(31)为了避免嵌套的if-else语句的二义性,c语言规定else总是与(C)组成配对关系。

A)缩排位置相同的if

B)在其之前末配对的if

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

D)同一行上的if

(32)当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是(B).

if(a

if(c

else

if(a

if(b

elsex=3;

elsex=6;

elsex=7;

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

(33)以下程序的执行结果是(A)。

#include

main()

{

intsum,pad;

sum=pad=5;

pad=sum++;

pad++;

++pad;

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

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

(34)若运行时给变量X输入12,以下程序运行结果是(A).

main()

{intx,y;

scanf(“%d”,&x);

y=x>12?

x+10:

x-12;

Printf(“%d\n”,y);}

A)0B)22C)12D)10

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

main()

{intk=4,a=3,b=2,c=1;

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

k:

c

c:

a);}

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

(36)若w,x,y,z,m均为int型变量,则执行下面语句后的m值是(A).

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

m=(w

w:

x;

m=(m

m:

y;

m=(m

m:

z;

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

(37)对于for(表达式1;;表达式3)可理解为(A)

A)for(表达式1;1;表达式3)

B)for(表达式1:

1;表达式3)

C)for(表达式1;表达式1;表达式3)

D)for(表达式1;表达式3;表达式3)

(38)C语言中while和do-while循环的主要区别是(A).

A)do-while的循环体至少无条件执行一次

B)while的循环控制条件比的循环控制条件严格

C)do-while允许从外部转到循环体内

D)do-while的循环体不能是复合语句

(39)以下程序的输出结果是(C)。

#include

main()

{intnum=0;

while(num<=2)

{num++;

pringtf("%d\n",num);}}

A.1B.1C.1D.1

222

33

4

(40)在C语言中,引用数组元素时,其数组下标的数据类型允许是(C)

A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式

(41)以下对一维整形数组a的正确说明是(D)。

A)inta(10);B)intn=10,a[n];

C)intn;D)#defineSIZE10

scanf(“%d”,&n);inta[SIZE];

inta[n];

(42)若有说明:

inta[10];则对a数组元素的正确引用是(D)。

A)a[10]B)a[3.5]C)a(5)D)a[10-10]

(43)以下对二维整形数组a进行正确初始化的语句是(B)。

A)inta[2][]={{1,01},{5,2,3}};

B)inta[][3]={{1,2,3},{4,5,6}};

C)inta[2][3]={{1,2,3},{4,5},{6}};

D)inta[][3]={{1,0,1},{},{1,1}};

(44)以下正确的说法是(A).

A)如果在一个函数中的复合语句中定义了一个变量,则该变量只在该复合语句中有效

B)在该函数中有效

C)在本程序范围内均有效

D)非法变量

(45)以下不正确的说法为(D).

A)在不同的函数中可以使用相同名字的变量

B)形式参数是局部变量

C)在函数内定义的变量只在本函数范围内有效

D)在函数内的复合语句中定义的变量在本函数范围内有效

(46)以下程序的正确运行结果是(A).

#include

main()

{intk=4,m=1,p;

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

p=func(k,m);printf(“%d\n”,p);}

func(inta,intb)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);}

A)8,17

B)8,16

C)8,20

D)8,8

(47)变量的指针,其含义是指该变量的(B)。

A)值B)地址

C)名D)一个标志

(48)若有说明:

int*p,m=5,n;以下正确的程序段是(D)。

A)p=&n;B)p=&n;

scanf(“%d”,&p);scanf(“%d”,*p);

C)scanf(“%d”,&n);D)p=&n;

*p=n;*p=m

(49)选择出合法的if语句(设intx,a,b,c;)(A).

A)if(a=b)x十十;

B)if(a=<b)x十+;

C)if(a<>b)x十十;

D)if(a=>b)x十十;

(50)逻辑运算符两侧运算对象的数据类型(D).

A)能是0或1

B)只能是0或非0正数

C)只能是整型或字符型数据

D)可以是任何类型的数据

三、读、填程序(每题5分,共30分)

1.有以下程序

#include

main()

{charc1,c2;

scanf(“&c”,&c1);

while(c1<65||c1>90)

scanf(“&c”,&c1);

c2=c1+32;

printf(“&c,&c\n”,c1,c2);}

程序运行输入65回车后,能否输出结果、结束运行(请回答能或不能)能

2.下列程序运行后的输出结果是【

*

***

*****

*******

*****

***

*】。

#include

main()

{inti,j,k;

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

{for(j=1;j<=20-3*i;j++)

printf("");

for(k=1;k<=2*i-1;k++)

printf("%3s","*");

printf("\n");}

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

{for(j=1;j<=20-3*i;j++)

printf("");

for(K=1;k<=2*i-1;k++)

printf("%3s","*");

printf("\n");}}

3.以下程序可求出所有的水仙花数。

(提示:

所谓水仙花数是指一个三位正整数,其各位数字之和的立方之和等于该正整数。

例如:

407=4×4×4+0×0×0+7×7×7。

故407是一个水仙花数。

)请填空。

main()

{intx,y,z,a[8],m,i=0;

printf(“Thespecialnumbersare(inthearrangeof1000):

\n”);

for(m=100;m<1000;m++)

{x=m/100;

y=m/10-x*10;

z=m%10;

if(x*100+y*10+z==x*x*x+y*y*y+z*z*z)

{a[i]=m;i++;}

}

for(x=0;x

printf(“%6d”,a[x])}

4.请将以下程序中的函数声明语句补充完整

#include

intmax(inta,intb);

main()

{intx,y,(*p)();

p=max;

printf(“&d\n”,&x,&y);}

Intmax(inta,intb)

{return(a>b/a:

b);}

5.以下程序的输出结果为【123.456000,︼︼︼︼︼︼︼123.457,123.4560,8765.456700,︼︼︼︼︼︼8765.457,8765.4567,8765.4567】.

#include

main()

{floata=123.456;doubleb=8765.4567;

printf(“

(1)%f\n”a);

printf(“

(2)%14.3f\n”,a);

printf(“(3)%6.4f\n”,b);

printf(“(4)%1f\n”,b);

printf(“(5)%14.3f\n”,b);

printf(“(6)%8.4f\n”,b);

printf(“(7)%.4f\n”,b);

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

voidfun(int*w,intn)

{inti;

for(i=0;i

{________if(i%8==0)printf(“\n”);_________

printf(“%d”,w);}

printf(“\n”);};

7.用数组方法处理Fibonacci数列问题,要求按每行5个输出数组中的20个数据,完成填空。

#include

voidmain()

{inti;

intf[20]={1,1};

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

f[i]=f[i-2]+f[i-1];

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

{if(i

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

当前位置:首页 > 小学教育 > 小升初

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

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