C语言练习题1(分支循环)1v1_第1页
C语言练习题1(分支循环)1v1_第2页
C语言练习题1(分支循环)1v1_第3页
C语言练习题1(分支循环)1v1_第4页
C语言练习题1(分支循环)1v1_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

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

文档简介

C语言练习题1(分支、循环)

编辑:高山流水审核:高山流水校对.:高山流水

选择题(例)

1.有如下程序

mainO

|

floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x<10.0)y=l.0/x;

elsey=l.0;

printf("%f\n〃,y);

}

该程序的输出结果是A

A、O500000

B、O250000

CJ.000000

D、0.000000

2.C语言的if语句中,用作判断的表达式为C

A、关系表达式

B、逻辑表达式

C、任意表达式

D、算术表达式

3.假定所有变量均己正确定义,下列程序段运行后x的值是().D

kl=l;

k2=2;

k3=3;

x=15;

if(!kl)x-;

elseif(k2)x=4;

elsex=3;

A、15

B、14

C、3

D、4

选择题(79道)

1.C语言中的switch语句中case后D

A、可为任何量或表达式

B、只能为常量或常量表达式

C、可为常量或表达式或有确定值的变量及表达式

D、只能为常量

2.执行下列语句后的输出为().C

intj=-l;

if(j<=l)printf("****\n");

elseprintf("%%%%\n");

A、****c

B、有错,执行不正确

C、****

3.有以下程序

main()

(

inti=l,j=l,k=2;

if((j++||k++)&&i++)

printf(/z%d,%d,%d\n”,i,j,k);

}

执行后输出结果是A

A、2,2,2

B、2,2,3

CJ.1,2

1\2,2,1

4,判断char型变量c是否为大写字母的C的表达式是C

A、'A'<=c<='Z'

B、('A'〈=c)AND('Z'<=c)

C、(c>='A')&&(«='Z')

D、(c>='A')&(c〈='Z')

5.有如下程序

main()

(

floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x<10.0)y=l.0/x;

elsey=l.0;

printf(编f\n”,y);

}

该程序的输出结果是A

A、0.500000

B、0.250000

C、l.000000

D、0.000000

6.C语言的if语句中,用作判断的表达式为C

A、关系表达式

B、逻辑表达式

C、任意表达式

D、算术表达式

7.假定所有变量均己正确定义,下列程序段运行后x的值是().D

kl=l;

k2=2:

k3=3;

x=15;

if(!kl)x一;

elseif(k2)x=4;

elsex=3;

A,15

B、14

C、3

D、4

8.C语言的if语句嵌套时,if与else的配对关系是()0C

A、每个else与if的配对是任意的

B、每个else与if总是与最外层的if配对

C、每个else总是与它上面的最近的if配对

D、每个else总是与它上面的if配对

9.为了避免在嵌套的条件语句if-else中产生二义性,c语言规定:else语句总是与(B)配

对.

A、其之后最近的if

B、其之前最近的if

C、缩排位置相同的if

D、同一行上的If

10.以下程序的运行结果是B

main()

(

inta=2,b=-l,c=2;

if(a<b)

if(b<0)c=0;

elsec+=l;

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

}

A、0

B、2

C、1

D、3

11.为表示关系x'y'z,应使用的表达式是A

AN(x>=y)&&(y>=z)

B、(x>二y〉二z)

C.(x>=y)AND(y>=z)

D.(x>=y)&(y>=z)

12.若执行以下程序时从程盘上输入3和4,则输出结果是B

main()

(

inta,b,s;

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

s=a;

if(a<b)s=b;

s*二s;

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

)

A、14

B、16

C、20

D、18

13.inta=l,b=2,c=3;if(a>c)b=a;a二c;c=b;则c的值为().B

A、3

B、2

C、不一定

DJ

14.在C语言中,if语句后的•对圆括号中,用以决定分支的流程的表达式().1)

A、只能用关系表达式

B、只能用逻辑表达式

C、只能用逻辑表达式或关系表达式

I)、可用任意表达式

15.假定所有变量均已正确定义,下面语句段执行后的x的值是B

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

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

A、34

B、4

C、35

D、3

16.mainO

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

switch(x)

(

case0:b++;

case1:a++;

case2:a++;b++;

)

printf(z,a=%d,b=%d〃,a,b);

)

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

A、2,2

B、2,l

C,1,1

D、l,0

注:准确的说输出结果应为a=2,b=l

17.下面的程序片断所表示的数学函数关系是A

y=-l;

if(x!=0)y=l;

if(x>0)y=l;

elsey=0;

A、

(0(x<0)

y=<0(x=0)

(1(x>0)

B、

(1(x<0)

y=G=o)

(o(%>o)

c、

(-1(%<o)

y={i(^=o)

(o(%>o)

D、

(-1(%<0)

y=<0(%=0)

(1(x>0)

注:前两行完全可以忽略

18.为了避免在嵌套的条件语句if-else中产生二义性;C语言规定else总与()配对C

A.同一行上的if

B、其之后最近的if

C、其之前最近的未配对的if

D、缩排位置相同的if

19.C语言中switch后的括号内表达式的值可以是C

A、只能为整型和字符型

B、只能为整型

C、任何类型

D、只能为整型,字符型,枚举型

20.下列程序的输出结果是().A

main()

(

intx=l,y=0,a=0,b=O;

switch(x)

{

case1:switch(y)

(

case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

case3:a++;b++;break;

}

printf("a二%d,b=%d\nz/,a,b);

)

A、a=2,b=l

B、a=l,b=0

C、a=2,b=2

D、a=l,b=l

21.有如下程序

main()

(

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

switch(x)

(

case0:b++;

case1:a++;

case2:a++;b++;

)

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

}

该程序的输出结果是B

A、a=l,b=l

B、a=2,b=1

C、a=l,b=0

D、a=2,b=2

22.下列程序的输出结果是().A

mainO

(

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

switch(x)

{

case1:switch(y)

(

case0:a++;break;

case1:b++;break;

)

case2:a++;b++;break;

case3:a++;b++;break;

)

printf(,za=%d,b=%d\n〃,a,b);

}

A、a=2,b—1

B、a=2,b=2

C、a=l,b=O

D、a=Lb=l

23.下列运算符中优先级别最高的是A

AJ

B、%

C、一二

D、&&

24.有以下程序

mainO

(

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

if(a>b>c)

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

elseif((c-l>=d)==1)

printf("%d\n〃,d+1);

elseprintf(〃%d\n”,d+2);

)

执行后输出结果是D

A、2

B、4

C、编译时出错

D、3

25.inta=3,b=2,c=l;if(a>b>c)a=b;elsea=c;则a的值是()C

A、2

B、3

C、1

D、0

26.运行以下程序后,输出的结果是B

main()

(

intk=-3;

if(k<=0)

printf(〃****\n〃),

elseprintf(〃&&&&\n〃);

)

A、****

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

D、****&&&&

27.设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是C

A、a||b+c&&b~c

B、a〈二b

CJ((a<b)&&!c||1)

D、a&&b

28.以下不正确的if语句形式是().D

A、if(x<y){x++;y++;}

B、if(x>y&&x!=y);

C、if(x=y)x+=y;

,z,z

Dsif(x!=y)scanf(%d,&x)elsescanf&y);

注:D中第一个scanf函数缺少分号

29.inta=l,b=2,c=3;if(a>b)a=b;if(a>c)a=c;则a的值为().A

A、1

B、不一定

C、3

D、2

30.下列运算符中优先级别最低的运算符是C

A、+

B、!=

c、lI

D.<=

31.以下程序的输出结果是D

main()

(

inty=10;

for(;y>0;y—)

if(y%3=0)

(

printf一y);

continue;

)

)

A、741

B、963

C.875421

1X852

32.C语言中while和do-while循环的主要区别是OB

AAwhile循环控制条件比do-while的循环控制条件更严格

B、do-while循环体至少无条件执行•次

C.do-while的循环体不能是复合语句

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

33.下列程序的输出为().C

main()

(

inty=10;

while(y一);

printfCy=%d\n',y);

)

A、while构成无限循环

B、y=0

C、y=T

D、y=l

注:y—后面有个分号

34.以下描述正确的是().D

A、do-while循环中,根据情况可以省略while

B、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语

do-while循环山do开始,用while结束,在while(表达式)后面不能写分号

D、在do-while循环体中.一定要有能使while后面表达式的值变为零(〃假〃)的操作

35.以下程序段的输出结果是C

inti,j,m=0;

for(i=l;i<=15;i+=4)

for(j=3;j<=19;j+=4)

m++;

printfm);

A、15

B、12

C、20

D、25

36.以下程序段的输出结果为(A)°for(i=4;i>l;i-)for(j=l;j<i;j++)putchar('#');

A、######

B、无

c、#

D、###

37.从循环体内某一层跳出继续执行循环外的语句是A

A、break语句

B、return语句

C、continue语句

D、空语句

38.在以下给出的表达式中,与do—while(E)语句中的(E)不等价的表达式是().A

表达式是().

A、(E=0)

B.(E>0||E<0)

C、(!E=0)

D、(E!=0)

39.下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选

择填空.C

#include<stdio.h>

main()

(

inti=0,j,k;

do{i++,k=316-13*i;}while();

j=k/ll;

printf(,,316=13*%d+ll*%d?z,i,j);

A、k%ll==0

B.k/11

C.k%ll

D、k/ll==O

40.以下程序的执行结果是C

main()

(

intx=0,s=0;

while(!x!=O)s+=++x;

printfs);

}

A、无限循环

B、O

C、1

D、语法错误

41.设j和k都是int类型,则for循环语句

for(j=0,k=T;k=l;j++,k++)printf("****\n");().B

A、循环体一次也不执行

B、是无限循环

C、循环结束的条件不合法

I)、循环体只执行一次

42.选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达式,其值只

能被判断为"真”或“假”。哪个数作为逻辑“假”值0.D

A、T

B、非零的数

CJ

D、0

43.以下不是无限循环语句为()C

A,for(;;x++=i);

while(1){x++;}

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

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

44.在C语言中,为了结束由while语句构成的循环,while后一对圆括号中表达式的值应该

为0.B

AJ

B、0

C、True

D、非0

45.结构化程序设计所规定的三种基本控制结构是().D

A、树形、网形、环形

B、输入、处理、输出

C,主程序、子程序,函数

I)、顺序、选择、循环

46.有以下程序段

intn=0,p;

do

(

scanf&p);

n++;

}while(p!=12345&&n<3);

此处do-while循环的结束条件是.D

A、p的值等于12345并且n的值大于等于3

B、p的值不等于12345并且n的值小于3

C、p的值不等于12345或者n的值小于3

D、p的值等于12345或者n的值大于等于3

47.以下for循环的执行次数是for(x=0,y=0;(y=123)&&(x〈4);x++);().A

A、4次

B、是无限循环

c、3次

D、循环次数不定

注:4次。y是赋值,每次判断都为真,所以y不起作用

48.以下语句中,循环次数不为10次的语句是().A

A.for(i=l;i<10;i++);

B,i=10;while(i>0){—i;}

i=l;do{i++;}while(i<=10);

Du-1;m:if(i<=10){i++;gotom;}

49.有以下程序

main()

(

inti;

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

switch(i)

(

case1:printfi);

case2:printfi);

default:printfi);

}

)

执行后输出结果是A

A,011122

BJ20

C.012020

D.012

50.执行语句31'6=1;1++〈4;);后变量1的值是().C

A、不定

B、3

C、4

D、5

51.以下程序的输出结果是C

#include<stdio.h>

main()

(

inti;

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

(

if(i%2)

putchar()〈');

else

continue;

putchar('>');

)

putchar('#');

)

A.<><><>#

B、XX#

C、<><>#

D.><><><#

52.以下叙述正确的是:C

A、用do-while构成循环时,只有在while后的表达式为非零时结束循环

B、do-while语句构成的循环不能用其它语句构成的循环来代替。

C、用do-while构成循环时,只有在while后的表达式为零时结束循环

D.do-while语句构成的循环只能用break语句退出。

53.以下程序段的输出结果是B

intk,j,s;

for(k=2;k<6;k++,k++)

(

s=l;

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

s+=j;

)

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

A、15

B、10

C、24

D、9

54.C语言程序的三种基本结构是顺序结构、选择结构和—结构1)

A、递归

B、转移

C、嵌套

【)、循环

55.C语言中用于结构化程序设计的三种基本结构是().B

A、for、while、do-while

B、顺序结构、选择结构、循环结构

C、if、switch、break

D>if、for、continue

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

main()

(

intn;

for(n=l;n<=10;n++)

(

if(n%3=0)continue;

printf(〃%d〃,n);

)

}

A、12

B.12457810

C.1234567890

D、369

57.以下程序段中,能够正确地执行循环的是().B

A、staticinta;while(a)

B、ints=6;dos-=2;while(s);

C>for(i=l;i>10;i++)

D、ints=6;m:if(s<100)exit(0);elses-=2;gotom;

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

main()

(

inti=l,sum=0;

while(i<10)sunpsum+l;i++;

printf(^i=%d,sum=%d〃,i,sum);

A、i=10,sum=9

B、运行出现错误

C、i=2,sum=l

D、i=9,sum=9

注:while只包含了sum=sum+l;这条语句

59.若i为整型变量,则以下循环执行次数是()A

for(i=2;i==0;)printf(绘d”,i一);

A、0次

B、1次

C、无限次

D、2次

60.语句while(!E);中的表达式!E等价于().B

A、E!=1

B、E==O

C,E==1

D、E!=0

61.设j和k都是int类型,则下面的for循环语句().C

for(j=0,k=0;j<=9&&k!=876;j++)scanf&k);

A、最多执行9次

B、循环体一次也不执行

C、最多执行10次

D、是无限循环

62.判新两个字符串是否相等正确的表达方式是

A、while(sl=s2)

B、while(sl==s2)

C>while(strcmp(sl,s2)=0)

D,while(strcmp(sl,s2)==0)

63.下面有关for循环的正确描述是().D

A,for循环是先执行循环循环体语句,后判断表达式

B、在for循环中,不能用break语句跳出循环体

C.for循环只能用干循环次数已经确定的情况

D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

64.以下程序中,while循环的循环次数是—A

main()

inti=0;

while(i<10)

if(KI)continue;

if(i==5)break;

i++;

)

)

A、死循环,不能确定次数

B、6

C、4

D、1

65.以下程序段的输出结果是B

intx=3;

do

(

printf(,,%3d,z,x-=2);

}while(!(一x));

A、死循环

B、1-2

C、30

DJ

注:第一次执行完printfr%3d,z,x-=2);后x=l,然后一x为0,取非后为1,条件为true,继

续执行循环,第二次执行完printfC%3d,z,x-2);后x-2,-x得到-3,取非后是0,循环结

66.若x是int类型变量,以卜程序段的输出结果是D

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

printf((x%2)?,x);

A、

##3

**4

##5

B、

##3

**4##5

B、

**3

**5

D、

**3##4

**5

67.对for(表达式1;;表达式3)可理解为().A

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

B、for(表达式1;。表达式3)

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

IXfor(表达式1;表达式3;表达式3)

68.以下程序段的输出结果是.C

main()

(

intn=10;

while(n>7)

(

n—;

printfn);

}

)

A、1098

BJ0987

C、987

D.9876

69.以下程序的功能是按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输

出,程序如下:

main()

(

intn,k;

floatscore,sum,ave;

sum=O.0;

for(n=l;n<=10;n++)

(

for(k=l;k<=4;k++)

(

scanf&score);

sum+=score;

)

ave=sum/4.0;

printf(〃NO%d:%f\n〃,n,ave);

}

)

上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确.这条语句

是B

A、ave=sum/4.0

B、sum=0.0;

C>sum+=score;

D、printf(〃NO%d:96f\n〃,n,ave);

70.while(fabs(t)<le-5)if(!s/10)break;循环结束的条件是().I)

A.fabs(t)<le-5&&!s/10

B>fabs(t)<le-5

C、t>=le-5&&t<=-le-5&as>-10&as<10

D、s/10=0

71.以下不是死循环的语句是—.C

A、for(i=10;;i++)sum+=i;

while(1){x++};

=,

C>for(;(c=getchar())!\n;)printfc);

D、for(;;x+=i);

72.以下叙述正确的是()0B

A、do-while语句构成的循环不能用其它语句构成的循环来代替

B、用do-while语句构成的循环,在while后的表达式为零时结束循环

C、用do-while语句构成的循环,在while后的表达式为非零时结束循环

D.do-while语句构成的循环.只能用break语句退111

73.在下述程序中,判断i>j共执行了多少次C

#include<stdio.h>

mainO

(

inti=0,j=10,k=2,s=0;

for(;;)

(

i+=k;

if(i>j)

(

printf(z/%d\n,z,s);

break;

)

s+二i;

)

)

A、4

B、8

C、6

D、7

74.C语言中,while和do-while循环的主要区别是B

A.while的循环控制条件比do-while的循环控制条件严格

B、do-while的循环体至少无条件执行一■次

C、do-while循环体不能是复合语句

D、do-while允许从外部转到循环体内

75.t为int类型,进入下面的循环之前,t的值为0

while(t=l)

{……}

则以下叙述中正确的是—.B

A、以上说法都不对

B,循环捽制表达式的值为1

C、循环控制表达式的值为0

D、循环控制表达式不合法

76.下面程序的运行结果是A

#include<stdio.h>

main()

|

inty=10;

do{y一;}while(―y);

printfy一);

}

A、0

B、1

C、8

D、-l

77.以下程序的输出结果是C

main()

(

intx,i;

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

{x=i;

if(x%2==0)

if(x%3==0)

if(x%7==0)

printf(/z%d",x);

}

printf;

)

A、2870

B、3981

C、4284

D、2668

注:本题意图是遍历1、100内能同时被2、3、7整除的数

78.以下程序的执行结果是A

main()

(

intnum=O;

while(num<=2)

(

num++;

printf("%d,”,num);

}

}

A、1,2,3,

B、l,2,3,4,

C、l,2,

D.O,1,2,

79.以下程序的输出结果是B

main()

(

inti,sum;

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

sum+=i;

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

)

A、15

B、不确定

CJ6

D.0

判断题(6道)

1.C语言的switch语句case后可为常量或表达式或有确定值的变量及表达式.X

2.inti=20;switch(i/10){case2:printf("A");

case1:printf("B");}的输出结果为A.X

注:输出结果是AB

3.若有inti=10,j=0;则执行完语句

if(j=O)i++;elsei—;i的值为11.X

注:i的值为9,因为j=0是赋值,表达式的值是0

4.若有说明intc;则while(c=getchar());是正确的C语句,V

5.while和do-while循环不论什么条件下它们的结果都是相同的。X

6.循环结构中的continue语句是使整个循环终止执行.X

填空题(24道)

1.若从键盘输入58,则以下程序输出的结果是—.585858

main()

(

inta;

scanf(〃%d〃,&a);

if(a>50)printf(〃%d〃,a);

if(a>40)printf(〃%d〃,a);

if(a>30)printfa);

)

2.若变量已正确定义,以下语句段的输出结果是—.*#

intx,y,z;

x=0;y=2;z=3;

switch(x)

(

case0:switch(y==2)

{

case1:printf(〃*〃);break;

case2:printf(,z%,z);break;

)

case1:switch(z)

(

case1:printf(〃$〃);

case2:printf(〃*〃);break;

default:printf(〃#〃);

)

}

3.将下列数学式改写成C语言的关系表达式或逻辑表达式是A)B)

A)a=b||a<cB)x>4||x<-4

A)a=b或a<cB)|x|>4

4.C语言中用—表示逻辑真,用—表示逻辑假.W

5.请写出以下程序的输出结果—.1

main()

(

inta=100;

if(a>100)

printf(〃%d\n〃,a>100);

elseprintf(,,%d\n/,,a<=100);

)

6.以下程序的执行结果是__.9

main()

(

intk=8;

switch(k)

{

case9:k+=l;

case10:k+=l;

case11:k+=1;break;

default:k+=l;

)

printfC%d\nz,,k);

)

7.阅读下面程序,程序执行后的输出结果是,3

#include〃stdio.h〃

main()

(

intx,y,z;

x=l;y=2;z=3;

if(x>y)

if(x>z)printfx);

elseprintf(〃%d〃,y);

printf(,/%d\n,/,z);

)

8.根据C语言运算符的优先顺序和结合性,按从先到后的顺序写出以下表达式中,运算符

〃+〃、〃>〃、〃*〃、〃&&〃、〃!=〃、〃||〃、〃!〃和〃/〃的先后顺序:

____、____、、____、、____、____、±、/、_1、王、2、女、幽、11

(a+b)>c*2&&b!=5||!(1/2)

9.若表达式(a+b)>c*2&&b!=5||!(1/2)中,a、b、c的定义和赋值为

inta=3,b=4,c=2;

则表达式的值为

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

main()

(

intx=100,a=10,b=20,okl=5,ok2=0;

if(a<b)

if(b!=15)

if(!okl)x=l;

elseif(ok2)x=10;

elsex="l;

printf(,z%d\n,z,x);

11.请写出与以下表达式等价的表达式是A)B)—,A)x<=0B)」

A)!(x>0)B)!0

12.当a=l、b=2、c=3时,以下if语句执行后,a、b、c中的值分别为:、_、____3,2,2

if(a>c)

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

13.将上题中的双分支if语句改写成条件表达式语句:余件表(〃刎\n〃,a>100?l:0)

#include〃stdio.h〃

main()

(

inta=100;

if(a>100)

printf("%d\n〃,a>100);

elseprintf(/z%d\n,/,a<=100);

)

14.以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,

当输入为负数时结束输入。请填空。x>=Ox〈amin

main()

(

floatx,amax,amin;

scanf("%f",&x);

amax=x,amin=x;

while()

(

if(x>amax)amax=x;

if()amin=x;

scanf("%f",&x);

}

printf(,z\namax=%f\namin=%f\nz,,amax,amin);

)

15.以下程序的输出结果是—

main()

intx=2;

while(x-);

printf(//%d\n,\x);

16.以下程序段的输出结果是.11

inti=0,sum=l;

do

(

sum+=i++;

}while(i<5);

printf(/z%d\nzz,sum);

17.冒泡排序算法在最好的情况下的元素交换次数为—,此(即已有顺序,不用交换)

18.以下程序段的输出结果是.死循环

intk,n,m;

n=10;m=l;k=l;

while(k<=n)

m*=2;

printf(z,%d\nz,,m);

19.阅读下面程序,程序执行后的输出结果为—.0918273645

#include〃stdio.h〃

mainO

(

chara,b;

for(a=,0,,b='9';a<b;a++,b―)

printf(,z%c%cz,,a,b);

printf(〃\n");

}

20.有以下程序段:

s=l.0;

for(k=l;k<=n;k++)

s=s+l.0/(k*(k+1));

printf(,/%f\n,/,s);

请填空,使下面的程序段的功能完全与之等同.d=lk++k〈n

s=0.0;

k=0;

do

(

s+=d;

d=LO/(k*(k+D);

}while();

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

21.阅读下面程序,则执行后程序的结果为____.15,16

#include〃stdio.h〃

main()

(

inta=0,b=0;

while(a<15)

a++;

while(b++<15);

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

}

22.下列程序的功能是输入•个整数,判断其是否是素数,若为素数输出1,否则输出0,请填

空.xT(x%i=0)

main()

(

inti,x,y=l;

scanf("%d",&x);

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

(

if{y=0;break;}

}

printf(,/%d\n,/,y);

)

23.执行以下程序后的输出结果是—.i=5,j=4,k=6

main()

(

inta,b,c,d,i,j,k;

a=10;b=c=d=5;i=j=k=O;

for(;a>b;++b)

i++;

while(a>++c)

j++;

do

k++;

while(a>d++);

printf(,zi=%d,j=%d,k=%d\n,z,i,j,k);

}

24.若依次输入字符AB.在以下while语句执行后ch的值是.0

while(ch=getchar()=='A");

注:因为关系运算符的优先级大于赋值运算符,第一遍:先运算getchar()=='A'。又因为输入

A,显然其结果为1.再将1赋值给ch,所以ch的值应该是1;第二遍:先运算getchar()=="'

。又因为输入B,显然其结果为0.再将0赋值给ch,所以ch的值应该是0;第三遍:先运算

getchar()=='A'。又因为输入回车,显然其结果为0.再将0赋值给ch,所以ch的值应该是0.

程序设计题(56道)

1./*-------------------

【程序设计】

功能:编写函数fun计算下列分段函数的值:

x~2+x+6x<0且xW-3

f(x)=x*2-5x+60Wx〈10且x/2及x#3

x-2-x-l其它

----------------------------------------------------------------------------*/

#include<stdio.h>

voidbky();

floatfun(floatx)

(

/**********Begin**********/

/**********End**********/

}

main()

(

floatx,f;

printf("inputx二〃);

scanf("%f",&x);

f=fun(x);

printf(,zx=%f,f(x)=%f\n”,x,f);

bky();

voidbky()

(

FILE*IN,*0UT;

intn;

floati;

floato;

IN=fopen(,zin.dat〃,〃r");

if(IN=NULL)

(

printf("ReadFILEError");

}

OUT二fopen("out.dat〃,〃w〃);

if(OUT==NULL)

{

printf("'WriteFILEError");

}

for(n=0;n<10;n++)

(

fscanf(IN,,z%r,&i);

o=fun(i);

fprintf(OUT,o);

fclose(IN);

fclose(OUT);

2./*--------

【程序设计】

功能:从键盘上输入任意实数x,求出其所对应的函数值。

z=(X-4)的二次幕(x>4)

z=x的八次新(x>-4)

z=z=4/(x*(x+l))(x>-10)

z=|x|+20(其他)

*/

#include<math.h>

#include<stdio.h>

voidbky();

floaty(floatx)

(

/**********Begin**********/

/**********End**********/

)

main()

(

floatx;

scanf&x);

printf("y=%f\n”,y(x));

bky();

)

voidbky()

(

FILE*IN,*OUT;

intn;

floati;

floato;

,,

IN=fopen(in.dat〃,〃r〃);

if(IN二二NULL)

{

printf("ReadFILEError");

}

OUT二fopen("out.dat〃,〃w〃);

if(OUT=NULL)

{

printf("'WriteFILEError");

)

for(n=0;n<10;n++)

(

fscanf(IN,〃%f”,&i);

o=y(i);

fprintf(OUT,〃%f\n〃,o);

}

fclose(IN);

fclose(OUT);

)

3./*-------

【程序设计】

功能:编写函数判断一个整数能否同时被3和5整除,若能

则返回值为1,否则为0。调用该函数求出15~300之

间能同时被3和5整除的数的个数。

--------------------------------------------------*/

^include<stdio.h>

voidbky();

intsum(intn)

(

/**********Begin**********/

/**********End**********/

)

mainO

(

inti,s=0;

for(i=15;i<=300;i++)

if(sum(i)==l)s=s+l;

printf(〃s二%d\n〃,s);

bky();

)

voidbky()

(

FILE*IN,*OUT;

intn;

inti[12];

into;

IN二fopen(〃in.dat〃,〃r〃);

if(IN==NULL)

(

printf(,zReadFILEError");

)

OUT=fopen("out.dat〃,"w");

if(OUT==NULL)

{

printf(,zWriteFILEError");

)

for(n=0;n<5;n++)

{

fscanf(IN,〃%d〃,&i[n]);

)

for(n=0;n<5;n++)

(

o=sum(i[n]);

fprintf(OUT,"%d\n〃,o);

)

fclose(IN);

fclose(OUT);

4./*--------

【程序设计】

功能:从键盘上输入任意实数,求出其所对应的函数值。

z=e的x次哥(x>10)

z=log(x+3)(x>-3)

z=sin(x)/((cos(x)+4)

----------------------------------------------------*/

#include<math.h>

#include<stdio.h>

voidbky();

doubley(floatx)

/**********Begin**********/

/**********End**********/

)

main()

(

floatx;

scanf&x);

printf("y=%f\n”,y(x));

bky();

}

voidbky()

{

FILE*IN,*OUT;

intn;

floati;

doubleo;

IN=fopen("in.dat","r");

if(IN==NULL)

(

printfCReadFILEError");

}

OUT=fopen("out.dal","w");

if(OUT==NULL)

(

printf("WriteFILEError");

)

for(n=0;n<10;n++)

(

fscanf(IN,;

o=y(i):

fprintf(OUT,o);

}

fclose(IN);

fclose(OUT);

5./*-------

【程序设计】

功能:判断整数X是否是同构数。若是同构数,函数返回1;

否则返回0。x的值由主函数从键盘读入,要求不大

于100o

说明:所谓“同构数”是指这样的数,这个数出现在它的

平方数的右边。

例如:输入整数5,5的平方数是25,5是25中右侧的数,所

以5是同构数。

--------------------------------------------------*/

ttinclude<stdio.h>

voidbky();

intfun(intx)

(

/**********Begin**********/

/**********End**********/

)

main()

(

intx,y;

printf(z/\nPleaseenteraintegernumbers:");

scanf&x);

if(x>100)

(

printf(,zdataerror!\n,z);

exit(0);

}

y=fun(x);

if(y)

printf(zz%dYES\n〃,x);

else

printf(zz%dN0\n〃,x);

bky();

)

voidbky()

FILE*IN,*OUT;

intn,t;

into;

IN二fopen(〃in.dat〃,〃r〃);

if(IN==NULL)

(

printf(^ReadFILEError");

}

OUT=fopen("out.dat〃,〃w〃);

if(OUT=NULL)

(

printf("'WriteFILEError");

)

for(t=0;t<5;t++)

{

fscanf(IN,〃%d〃,&n);

o=fun(n);

fprintf(OUT,〃%d\n〃,o);

)

fclose(IN);

fclose(OUT);

6./*--------

【程序设计】

功能:调用函数fun判断•个三位数是否〃水仙花数〃。

在main函数中从键盘输入一个三位数,并输

出判断结果。请编写fun函数。

说明:所谓〃水仙花数〃是指一3位数,其各位数字立方和

等于该数本身。

例如:153是一个水仙花数,因为153=1+125+27。

-------------------------------------------------------*/

ttinclude<stdio.h>

voidbky();

intfun(intn)

/**********Begin**********/

/**********End**********/

}

main()

(

intn,flag;

scanf(〃%d”,&n);

flag=fun(n);

if(flag)

printf(,z%d是水仙花数\n〃,n);

else

printf(,z%d不是水仙花数\n”,n);

wwjt();

)

voidbky()

(

FILE*IN,*OUT;

intilN,i;

intiOUT;

IN=fopen(/zin.dat〃,〃r〃);

if(IN==NULL)

(

printf("PleaseVerifyTheCurrerntDir..itMayBeChanged");

}

OUT=fopen("out.dat〃,〃w");

if(OUT二二NULL)

{

printf("PleaseVerifyTheCurrentDir..itMayBeChanged");

)

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

(

fscanf(iN/^d^&iIN);

iOUT=fun(iIN);

fprintf(OUT,z,%d\n",iOUT);

)

fclose(IN);

fclose(OUT);

}

7./*-------------------------------------------------

【程序设计】

功能:对任意输入的x,用下式计算并输出y的值。

-1x<0

y=0x=0

1x>0

--------------------------------------------------*/

#include<stdio.h>

voidbky();

intfun(intn)

(

/**********Begin**********/

/**********End**********/

)

voidmain()

(

intx,y;

printf(z/enterx:〃);

scanf&x);

y=fun(x);

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

bky();

)

voidbky()

FILE*IN,*0UT;

inti;

intilN;

longintiOUT;

IN=fopen("in.dat","r");

if(IN==NULL)

(

printf("PleaseVerifyTheCurrerntDir..itMayBeChanged");

}

0UT=fopen("out.dat","w");

if(OUT==NULL)

(

printf("PleaseVerifyTheCurrentDir..itMayBeChanged");

}

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

{

fscanf(IN,"%d”,&iIN);

iOUT=fun(iIN);

fprintf(OUT,iOUT);

}

fclose(IN);

fclose(OUT);

)

8./*--------------------------------------------------

【程序设计】

功能:对某一正数的值保留2位小数,并对第三位进行四舍

五入。

--------------------------------------------------*/

#include<stdio.h>

#includezzconio.h"

voidbky();

doublefun(floath)

(

/**********Begin**********/

/**********End**********/

mainO

(

floatm;

printf(^Enterm:〃);

scanf("%f〃,&m);

printf(〃\nTheresultis%8.2f\n,z,fun(m));

bky();

)

voidbky()

(

FILE*IN,*OUT;

ints;

floatt;

doubleo;

IN=fopen(z,in.dat〃,〃r〃);

if(IN二二NULL)

(

printf("ReadFILEError");

)

OUT二fopen(〃out.dat〃,〃w〃);

if(OUT==NULL)

(

printf(,zWriteFILEError");

)

for(s=l;s<=5;s++)

(

fscanf(IN,z,%r,&t);

o=fun(t);

fprintf(OUT,z,%8.2f\n",o);

)

fclose(IN);

fclose(OUT);

)

9./*----------------------------------------------

【程序设计】

功能:对任意输入的x,用卜式计算并输出y的值。

5x<10

y=0x=10

-5x>10

--------------------------------------------------*/

#include<stdio.h>

voidVV();

intfun(intn)

(

/**********Begin**********/

/**********End***********/

)

voidmain()

(

intx,y;

printf(''enterx:〃);

scanf&x);

y=fun(x);

printf(〃x趣d,y=%d\n〃,x,y);

VV();

)

voidVV()

(

FILE*IN,*OUT;

inti;

intilN;

longintiOUT;

IN二fopen(〃in.dat〃,〃r〃);

if(IN二二NULL)

{

printf("PleaseVerifyTheCurrerntDir..itMayBeChanged");

}

OUT=fopen("out.dat","w");

if(OUT==NULL)

{

printf("PleaseVerifyTheCurrentDir..itMayBeChanged");

)

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

|

fscanf(IN,"%d”,&iIN);

iOUT=fun(iIN);

fprintf(OUT,

温馨提示

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

评论

0/150

提交评论