《C语言程序设计》习题及答案、上机指导及答案_第1页
《C语言程序设计》习题及答案、上机指导及答案_第2页
《C语言程序设计》习题及答案、上机指导及答案_第3页
《C语言程序设计》习题及答案、上机指导及答案_第4页
《C语言程序设计》习题及答案、上机指导及答案_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

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

文档简介

第1部分《C语言程序设计》习题解答

1.1第1章习题解答

1.选择题

(1)在计算机上可以直接运行的程序是()。

A.高级语言程序B.汇编语言程序

C.机器语言程序D.C语言程序

【答案】C

【解析】机器语言是直接面向机器的,可以直接运行,其他语言都需要编译。

(2)一个C语言程序由()。

A.若干函数组成B.若干过程组成

C.若干主程序组成D.若干子程序组成

【答案】A

【解析】C语言程序由一个主函数和零个以上(含零个)非主函数构成。

(3)C语言不具有的特点是()。

A.具有结构化的控制语句

B.数据类型丰富

C.语法限制不太严格,程序设计自由度大

D.在可移植性上,C语言比其他语言差

【答案】D

【解析】C程序的可移植性好,这是C语言的一个主要特点。

(4)以下叙述不正确的是()<,

A.一个C语言程序可由一个或多个函数组成

B.一个C语言程序必须包含一个主函数

C.C语言程序的基本组成单位是函数

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

【答案】D

【解析】在C语言程序中,注释说明可以位于程序中任意合适的位置。

(5)以下叙述正确的是()。

A.C语言比其他语言高级

B.C语言可以不用编译就能被计算机识别和执行

C.C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D.C语言出现最晚,所以具有其他语言的一切优点

【答案】C

【解析】“C语言以接近英语国家的自然语言和数学语言作为语言的表达形式”,这

是C语言的定义。

(6)编译C语言程序时,程序中的注释部分将()。

A.不参加编译,也不会出现在目标程序中

B.参加编译,但不会出现在目标程序中

C.不参加编译,但会出现在目标程序中

D.参加编译,并会出现在目标程序中

【答案】A

【解析】C语言程序中的注释不参加程序的编译与运行。

2.填空题

(1)计算机语言的发展经历了、和阶段。

【答案】机器语言汇编语言高级语言

(2)C语言既适合编写,也适合编写应用软件。

【答案】系统软件

(3)简单地说,设计和调试C语言程序要经过、

和4个阶段。

【答案】编辑编译链接执行

3.编程题

(1)编写一个简单的C语言程序,使得在屏幕上显示下列信息。

***************************************************

Cisveryfun.

****************************************************

【参考源程序】

Winclude<stdio.h>

intmain()

(

printf(*****************************************************

printf("Cisveryfun.\n");

printf("****************************************************

return0;

)

(2)编写一个简单的C语言程序,使得在屏幕上显示下列信息。

***

*****

*******

【参考源程序】

#include<stdio.h>

intmain()

(

printff'*\n");

printff'♦*KJP3*\n");

printf("*♦**KJP3♦\n");

printff'******EJP3*\n");

return0;

)

1.2第2章习题解答

i.选择题

(1)选出可以作为c语言用户标识符的一组标识符()o

A.void,define,WORDB.A3_B3Z_123,abc

C.FOR,-abc,CaseD.2a,Do,Sizeof

【答案】B

【解析】C语言中的标识符只能由字母、数字和下划线3种字符组成,第一个字符只

能是字母或下划线,且不允许是系统关键字。

(2)下列运算符优先级最高的是()。

A.关系运算符B.赋值运算符

C.算术运算符D.逻辑运算符

【答案】C

【解析】上述4种运算符中,算术运算符的优先级最高。

(3)sizeof(float)是(

A.一种函数调用B.一个不合法的表示形式

C.一个整型表达式D.一个浮点表达式

【答案】C

【解析】sizeof()用来获取一个数据或数据类型在内存中所占空间的字节数,它的结果

返回值为字节数,即为整型值。

(4)下列字符串常量不正确的是()o

A.'abc'B."12'12"C."0"D.""

【答案】A

【解析】字符串常量指用双引号括起来的若干字符。

(5)下列4个选项均是合法整型常量的是(

A.160,-Oxffff,011

B.-Oxcdf,Ola,Oxe

C.-01,986,012,0668

D.-0x48a,2e5,Ox

【答案】A

【解析】本题主要考查十进制、八进制、十六进制实型数据的表达方式。

(6)以下选项中不属于C语言类型的是()<.

A.signedshortintB.unsignedlongint

C.unsignedintD.longshort

【答案】D

【解析】C语言中没有longshort类型。

(7)数值029是一个()o

A.八进制数B.十六进制数

C.十进制数D.非法数

【答案】D

【解析】C语言中,以数字0开头的数值表示八进制数,八进制数的合法字符是。〜

7。

(8)在C语言中,要求运算数必须是整型的运算符是()。

A./B.++C.!=D.%

【答案】D

【解析】取余运算(%)要求两边的运算数必须是整型。

(9)当c的值不为。时,以下能将c的值赋给变量a、b的是()。

A.c=b=aB.(a=c)||(b=c)

C.(a=c)&&(b=c)D.a=c=b

【答案】C

【解析】本题主要考查逻辑运算的短路特性。

若有说明语句rtw则变量()。

(10)charc='\72';,c

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

C.包含3个字符D.说明不合法,c的值不确定

【答案】A

【解析】转义字符代表一个字符常量。

(11)设有说明"charw;intx;floaty:doublez;w,则表达式“w*x+z・y”值的数据类

型为()o

A.floatB.charC.intD.double

【答案】D

【解析】混合运算表达式的数据类型为其中精度最高的运算量的数据类型。

(12)长整型数据在内存中的存储形式是()。

A.ASCII码B.原码

C.反码D.补码

【答案】D

【解析】任何整型数据在内存中的存储形式都是补码。

(13)字符型常量在内存中的存储形式是()。

A.ASCII码B.BCD码

C.内部码D.十进制码

【答案】A

【解析】字符型常量在内存中采用ASCII码形式存储。

(14)若X、i、j和k都是int型变量,则计算表达式“x=(i=4,j=16,k=32)”后x的值为()。

A.4B.16C.32D.52

【答案】C

【解析】考查逗号表达式的运算规则。逗号表达式的值为最后一个表达式的值。

(15)若有代数式半,则下列C语言表达式不正确的是()。

be

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

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

【答案】C

【解析】3*a*e/b*c对应的代数式为《不。

(16)表达式"1091=99"的道是(

A.1B.非空值C.0D.t’ue

【答案】A

【解析】关系表达式的值为。或1,其中0表示假,I表示真。

(17)若变量t为double类型,表达式“t=l,t*5",则t的值为()o

A.1B.6.0C.2.0D.1.0

【答案】D

【解析】该题是问t的值,而不是表达式的值,故为1.0。

(18)表示关系"x<=y<=z”的C语言表达式为()。

A.(x<=y)&&(y<=z)B.(x<=y)AND(y<+z)

C.(x<=y<=y)D.(x<=y)&(y<=z)

【答案】A

【解析】多于一个关系运算符的表达式,在C语言中应该用逻辑运算符连接。

(19)在C语言中,int、char和short三种类型数据所占用的内存()。

A.均为2字节B.由用户自己定义

C.由所用机器的字长决定D.是任意的

【答案】C

【解析】C语言中各种类型数据所占内存字节数是由所用机器的字长决定的。

(20)下列程序的执行结果是()。

#include<stdio.h>

voidmain()

(

inti=2;

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

)

A.1,1B.2,1C.1,2D.2,2

【答案】B

【解析】printf语句是从右向左计算输出表达式的值。

(21)字符串常量”\\\22a,0\n”的长度是()。

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

【答案】C

【解析】该题主要考查转义字符的使用。

(22)下列叙述错误的是()。

A.在C语言程序中,逗号运算符的优先级最低

B.在C语言程序中,APH和aph是两个不同的变量

C.若变量a和b的类型相同,在计算了赋值表达式“a=b”后,b中的值将放入a中,

而b中的值不变

D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实

型数值

【答案】D

【解析】当从键盘输入数据时,对于实型变量也可以输入整型值,只不过接收进来之

后自动在末尾加“.0”。

(23)下列叙述正确的是()o

A.C语言中既有逻辑类型也有集合类型

B.C语言中没有逻辑类型但有集合类型

C.C语言中有逻辑类型但没有集合类型

D.C语言中既没有逻辑类型也没有集合类型

【答案】D

【解析】C语言中既没有逻辑类型也没有集合类型。

2.填空题

(1)已知“intx=6;",则执行语句"x+=x-=x*x;"后x的值是o

【答案】-60

(2)若w=l,x=2,y=3,z=4.则条件表达式“w>x?w:y<z?y:z”的结果是。

【答案】3

(3)若"intm=5,y=2;w,则计算表达式"y+=y-=m*=y"后y的值是0

【答案】-16

(4)在C语言中,一个mt型数据在内存中如果占2字节,则int型数据的取值范围为

【答案】-32768^32767

(5)已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达或‘ch='a'+'8'-'3'"

的值为。

【答案】f

(6)若x和n均为int型变量,且x和n的初值均为5,则计算表达式“x+=n++”后x

的值为,n的值为。

【答案】106

(7)若有定义“inta=2,b=3;floatx=3.5,y=2.5;则表达式“(float)(a+b)/2+(int)x%(int)y”

的值为o

【答案】3.500000

(8)下列程序的输出结果是o

#include<stdio.h>

intmain()

(

intk=2,i=2,m;

m<k+=i*=k);

printf("%d,%d\rT,m,i);

return0;

)

【答案】6,4

(9)以下程序的执行结果是o

#include<stdio.h>

intmain()

(

inta,b,c;

a=b=l;

c=a++-l;

printf(”%d,%d,”,a,c);

c+=-a+++(++b11++c);

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

return0;

)

【答案】2,0,3,-1

(10)以下程序的执行结果是

include<stdio.h>

intmain()

(

intn=023;

printf("%d\n"/--n);

return0;

)

【答案】18

(ID以下程序的执行结果是

include<stdio.h>

voidmain()

(

inti=10;

printf("%d,%d,%d”,

)

【答案】8,9,10

(12)以下程序的执行结果是

//include<stdio.h>

voidmain()

(

shortinta=-32768,b;

b=a-l;

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

)

[答案】

a=-32768zb=32767

(13)以下程序的执行结果是

#include<stdio.h>

voidmain()

(

intx=042/y=067,z;

z=(x»2)&(y«3);

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

)

【答案】8

(14)以下程序的执行结果是

include<stdio.h>

voidmain()

(

intx=10,y=9;

inta,b,c;

a=(-x==y++)?-x:++y;

b=x++;

c=y;

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

)

【答案】8,8,10

(15)以下程序输入123456789,其输出结果是。

include<stdio.h>

voidmain()

(

inta,b;

floatf;

scanf("%2d%*2d%2d%f",&a,&b,&f);

printf("%d,%d,%f\rT,a,b,f);

)

【答案】12,56,789.000000

1.3第3章习题解答

i.选择题

(1)c语言的if语句中,用做判断的条件表达式为()。

A.任意表达式B.逻辑表达式

C.关系表达式D.算术表达式

【答案】A

【解析】在C语言中,任意类型的表达式都可以用做类型判断,判断的标准是:零

值为假,非零值为真。

(2)若希望当x的值为奇数时,表达式的值为真,x的值为偶数时,表达式的值为假,

则以下不能满足要求的表达式是()。

A.x%2==lB.x%2

C.!(x%2)D.!(x%2==0)

【答案】C

【解析】表达式”!(x%2)”与题意刚好相反。

(3)已知x=12,y=10,执行语句“*x>12?x+l:x-l「后y的值为(.

A.13B.11C.0D.10

【答案】B

【解析】本题主要考查C语言中唯一一个三目运算符,即关系运算符的使用。

(4)已知a=l、b=2、c=3、d=4、m=2、n=2,执行语句a(m=a>b)&&(n=c>d);n后n

的值为()o

A.lB.2C.3D.4

【答案】B

【解析】本题主要考查逻辑与运算符的短路特性。

(5)下列程序运行后输出()0

#include<stdio.h>

intmain()

intx=10/y=20/z=30;

if(x>y)z=x;x=y;y=z;

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

return0;

)

A.x=10,y=20»z=30B.x=20»y=30»z=30

C.x=20,y=30»z=10D.x=20>y=30»z=20

【答案】B

【解析】如果不是复合语句,if只与其下的第一条语句构成条件结构。

(6)下列程序()o

#include<stdio.h>

intmain()

inta=5,b=0,c=0;

if(a=b+c)

printfC'lllXn");

else

printf("222\n");

return0;

)

A.有语法错误B.输出111

C.不能输出D.输出222

【答案】D

【解析】if语句中的条件表达式为一个赋值表达式,其值为0,故运算结果为222。

(7)下列程序运行后输出()。

#include<stdio.h>

intmain()

(

intm=l;

if(m++>l)

printf(”%d",m);

else

return0;

)

A.OB.1C.2D.3

【答案】C

【解析】该题主要考查自增、自减运算符的位置,若“++”在后,则先取其当前值参

与运算,之后再自增1。

(8)若x=4、y=-2>z=5,则表达式w++x-y+z++w的值为()。

A.10B.11C.12D.13

【答案】12

【解析】因为“++”在前,所以“++x”得到5,减去y之后得到7,因为“++”在后,

所以“Z++”先取z当前的值参与计算,之后得到结果为12。

(9)下列程序的输出结果为()o

#include<stdio.h>

intmain()

(

intx=12;

while(x-);

printf(”%d”,x);

return0;

)

A.-1B.0C.11D.1

【答案】A

【解析】因为循环的条件表达式为“x--”,所以当循环条件不成立时,x的值为0,随

后x的值再自减1,故输出x的值为-1。

(10)C语言允许if…else语句嵌套使用,规定else总是和()配对。

A.之前最近的ifB.第1个if

C.缩进位置相同的ifD.之前最近的且尚未配对的if

【答案】D

【解析】本题考查在嵌套的if结构中需要重点掌握的规则。

(11)下列程序执行后的输出结果是()<.

//include<stdio.h>

intmain()

(

inti=lj=2,k=3;

if(i++==l&&(++j==3||k++==3))

printf("%d%d%d”,i,j,k);

return0;

)

A.123B.234

C.223D.233

【答案】D

【解析】该题主要考查自增运算符与逻辑运算符的结合,重点是逻辑运算符的短路性

质。

(12)下列叙述正确的是()。

A.break语句只能用于switch语句中

B.在switch语句中必须使用default

C.break语句必须与switch语句中的case配对使用

D.在switch语句中不一定使用break语句

【答案】D

【解析】在switch语句中,break语句不是必须的项。

(13)当从键盘输入32时,下列程序的输出结果为()。

-include<stdio.h>

intmain()

(

intx,y;

scanf("%d",&x);

y=o;

if(x>=0)

(

if(x>0)y=l;

)

else

y=-i;

printf("%d,y);

return0;

)

A.0B.1C.-1D.不确定值

【答案】B

【解析】本题主要考查嵌套的if语句的作用。

(14)对于下列程序的判断正确的是(

#include<stdio.h>

intmain()

(

intx=3/y=0/z=0;

if(x=y+z)

printfC*****");

else

printf("####");

return0;

)

A.有语法错误不能通过编译

B.输出****

C.可以通过编译,但是不能通过链接,因而不能运行

D.输出####

【答案】D

【解析】if语句的条件表达式为赋值表达式,其值为0o

(15)对于下列程序段的描述正确的是(

inta=10;

while(a=0)a=a-l;

A.循环体语句执行10次B.循环体语句一次也不执行

C.循环是无限循环D.循环体语句仅执行一次

【答案】B

【解析】循环条件为假,所以一次也不执行。

(16)语句awhile(!A);w中的表达式“!A”等价于()。

A.A==0B.A==lC.A!=0D.A!=l

【答案】A

【解析】作为循环条件时,!A等价于A==0,A等价于A!=0。

(17)下列程序的运行结果是()o

#include<stdio.h>

intmain()

inta=l/b=2/c=4,t;

while(a<b<c)

(

t=a;a=b;b=t;c-;

)

printf(',%d,%d,%d,a,b,c);

return0;

)

A.2,1,3B.2,1,4C.1,2,0D.1,2,2

【答案】C

【解析】重点理解循环中的条件表达式"a<b<c"与数学上的关系表达式的区别。

(18)下列程序的执行结果是()。

include<stdio.h>

voidmain()

(

inta-0,i;

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

(

switch(i)

(

case0:

case3:a+=2;

case1:

case2:a+=3;

default:a+=5;

)

)

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

)

A.31B.13C.10D.20

【答案】A

【解析】循环过程中对变量a的增值情况为:8+8+10+5=31。

(19)对下列程序的描述正确的是()。

#include<stdio.h>

intmain()

(

inta=3;

do

(

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

}while(!(-a));

return0;

)

A.输出1B.输出1和・2

C.输出3和0D.是死循环

【答案】B

【解析】该题主要考查自减运算符与逻辑非运算符的结合性。

(20)for(表达式1;;表达式3)可理解为()。

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

B.for(表达式1;1;表达式3)

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

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

【答案】C

【解析】for语句中,省略表达式2相当于条件永为真。

(21)下列描述正确的是()。

A.continue语句的作用是结束整个循环的执行

B.break语句和continue语句的作用相同

C.只能在循环体内使用continue语句

D.从循环嵌套中退出时,只能使用got。语句

【答案】C

【解析】continue语句只能用于循环。

(22)下列程序段不是死循环的是()o

A.inti=100;

while(l)

{

i=i%100+l;

if(i>100)break;

)

B.for(;;);

C.intk=0;

do{++k;}while(k<=0);

D.ints=36;

while(s);-s;

【答案】C

【解析】C选项中的循环体只执行一次就结束了,而其他都是死循环。

(23)下列程序的运行结果是()。

include<stdio.h>

intmain()

(

inti;

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

(

if(i%2)

printfC'*");

else

continue;

printf("#");

)

printff'$\n");

return0;

)

A.*#*#*#$B.#♦#*#*

C.*#*#$D.#*#*

【答案】A

【解析】本题主要考查for循环中continue语句的用法。

(24)下列程序的运行结果是()o

//include<stdio.h>

intmain()

(

inti,j,x=O;

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

(

x++;

for(j-0;j<-3;j++)

(

if(j%2)

continue;

x++;

)

x++;

)

printf("x=%d\n"/x);

return0;

)

A.x=4B.x=8C.x=6D.x=12

【答案】B

【解析】在双重循环结构中,continue语句只结束其所在循环的本次循环操作。

(25)若w、x、Y、z、m均为int型变量,则执行以下语句后的m值是()。

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

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

m=(m<y)?m:y;

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

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

【答案】A

【解析】本题主要考查条件运算符的使用,在“(表达式1)?(表达式2):(表达式

3)”中,“表达式1”的值为真时取“表达式2”的值为结果,否则取“表达式3”的值为结

果。

(26)下列程序段()。

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

scanf("%d",&x);

if(x<0)

continue;

primf("%3cT,t);

)

A.当x<0时整个循环结束B.x>=0时什么也不做

C.printf函数永远也不会被执行D.最多允许输出100个非负整数

【答案】D

【解析】当x的值小于零时,直接进入下一次循环,只有当x的值大于等于零时才输

出。

2,填空题

(1)在C语言中,break语句只能用于语句和语句中。

【答案】switch循环

(2)当a=3,b=2>c=l时,表达式"f=a>b>c"的值是。

【答案】0

(3)下列程序段的功能是从键盘输入的字符中统计数字字符的个数,用换行符结束循

环。请填空。

intn=0,c;

c=getchar();

while()

(

if()n++;

c=getchar();

)

【答案】c!='\n'c>='0,&&c<='9,

(4)下列程序的功能是计算2〜100的偶数的累加和。请填空。

include<stdio.h>

intmain()

(

inti,sum=0;

for()

sum+=i;

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

return0;

)

【答案】i=2;i<=100;i+=2

(5)下列程序的输出结果是o

#include<stdio.h>

intmain()

(

inta=100,x=10,y=20,okl=S/ok2=0;

if(x<y)

if(y!=10)

if(!okl)

a=l;

else

if(ok2)

a=10;

a=-l;

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

return0;

)

【答案】-1

(6)下列程序运行后输出。

#include<stdio.h>

intmainf)

(

intx=l,y=2;

switch(x)

(

case1:

switch(y)

{

case1:printf("%d",x);break;

case2:printf("%d",y);break;

)

case2:printf("3");

)

return0;

)

【答案】23

(7)下列程序的功能是找出整数的所有因子。请填空。

include<stdio.h>

intmain()

(

intnJ;

scanf("%d",&n);

for(i=l;;i++)

(

iff)

printf("%3d",i);

)

printf("\n");

return0;

)

【答案】i<=n/2n%i==0

(8)下列程序执行后的输出结果是

#include<stdio.h>

intmain()

inta=3;

do

(

printf("*");

a-;

}while(!a==0);

return0;

}

【答案】***

(9)下列程序的执行结果是

include<stdio.h>

intmain()

(

inti=l,n=0,s=l;

do

(

n=n+s*i;

s=-s;

i++;

}while(i<=9);

printf("%d",n);

return0;

)

【答案】5

(10)下列程序运行后输出_

#include<stdio.h>

intmain()

(

inta,b=19;

whilc(a=b1)

(

b-=3;

if(b%5==0)

(

a++;

continue;

}

elseif(b<5)

break;

a++;

)

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

return0;

)

【答案】6,4

(11)下列程序的运行结果是。

#include<stdio.h>

intmain()

(

inti=l;

while(i<=15)

if(++i%3!=2)

continue;

else

printf("%d\t",i);

printf("\n");

return0;

)

【答案】2581114

(12)下列程序的功能是打臼100以内个位数为6且能被3整除的所有数。请填空。

include<stdio.h>

intmain()

(

intij;

for(i=0;;i++j

(

j=i*10+6;

if()

continue;

printf("%d"J);

)

return0;

)

【答案】i<-9j%31-0

(13)下列程序的运行结果是。

include<stdio.h>

intmain()

(

inti=5;

do

(

switch(i%2)

case4:i-;break;

case6:i-;continue;

)

printf("%d\t”,i);

}while(i>0);

return0;

)

【答案】31-1

2R5A

(14)下列程序的功能是计算分数数列前20项的和:,…。请填空。

12358

#include<stdio.h>

intmain()

(

floats=0.0;

inti,a,b,t;

for(;i<=2O;i4-+)

(

s+=;

t-a+b;

b=a;

a=t;

)

printf("s=%.2f",s);

return0;

)

【答案】a=2,b=l/i=l(float)(a)/b

(15)下列程序的功能是根据公式e=1+1+工+工+…求e的近似值,要求精

1!2!3!

度为IO4。请填空。

#include<stdio.h>

intmain()

(

inti;

doublee,new;

new=1.0;

for(i=l;;i++j

(

new/=(double)i;

e+=new;

)

printf("e=%f\n"/e);

return0;

)

【答案】e=1.0new>=le-6

3.编程题

(1)从键盘输入任意一个整数,判断其是否为偶数。

【参考源程序】

include<stdio.h>

intmain()

(

intn;

printff'pleaseinputanurrber:\n");

scanf("%d",&n);

if(n%2==0)

printf("Yes!");

else

printf("No!");

return0;

)

(2)有如下函数:

x,(x<1)

y=<2x-1,(14xv10)

3x-1,x>10

编写程序,使输入x时,输出相应的y值。

【参考源程序】

#include<stdio.h>

intmain()

(

intx,y;

printf("pleaseinputthex:\n");

scanf("%d",&x);

if(x<l)

y=x;

elseit(x>=l&&x<10)

y=2*x-l;

elseif(x>=10)

y=3*x-l;

printff'yis%d",y);

return0;

)

(3)输入一个整数,若该数能够被3和7整除,则输出2:若只能被3和7中的•个

整除,则输出L若不能被3和7中的任意一个整除,则输出0。

【参考源程序】

#include<stdio.h>

intmain()

intn,m;

printf("pleaseinputn:\n");

scanf(”%d”,&n);

if(n%3==0&&n%7==0)

m=2;

elseif(n%3==0||n%7==0)

m=l;

else

m=0;

printf("theresultis%d"/m);

return0;

)

(4)爱因斯坦的阶梯问题。爱因斯坦曾提出这样一道有趣的数学题:有一个长阶梯,

若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若

每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶不剩。问该阶梯至少有多少阶?

编写程序解决这个问题。

【参考源程序】

#include<stdio.h>

intmain()

(

inti,n=l,m=l;

while(m)

(

if(n%2==l)

if(n%3==2)

if(n%5==4)

if(n%6==5)

if(n%7==0)

(

printf("%d",n);

m=0;

}

n++;

)

return0;

)

(5)输出所有的水仙花数。水仙花数是一个3位整数,它的各位数字的立方和等于该

数本身。

【参考源程序】

#indude<stdio.h>

intmain()

(

inti,a,b,c;

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

a=i%10;

b=i/10%10;

c=i/100;

if(a*a*a+b*b*b+c*c*c==i)

printf("%d,i);

)

return0;

)

(6)编写程序,打印九九乘法表。

【参考源程序】

include<stdio.h>

intmain()

(

intij;

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

(

for(j-l;j<-i;j++)

printf("%3d"/i*j);

printf("\n");

)

return0;

}

(7)编写程序,打印如下图形。

♦♦♦

*****

*******

*****

♦♦♦

【参考源程序】

#include<stdio.h>

intmain()

(

intij;

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

(

for(j=l;j<=4-i;j++)

printf("");

for(j=l;j<=2*i-l;j++)

printfC'*");

printf("\n");

)

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

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

printf("");

for(j=l;j<=7-2*i;j++)

printf("*");

printfC'Xn");

)

return0;

)

(8)用公式K=1…求冗的近似值,直到最后一项的绝对值小于

4357

为止。

【参考源程序】

-include<stdio.h>

intmain()

(

floatsum=0.0/t=1.0/s=-l;

inti=l;

while(t>le-6)

(

s=s*(-l);

t=t*s;

sum+=t;

t=1.0/(2*i+l);

i++;

)

sum=sum*4;

printf("%f",sum);

return0;

)

(9)一个数如果恰好等于它的因子之和,就称其为完数。例如,6的因子为1、2、3,

而6=1+2+3,因此6是完数。编写程序找出1000以内的所有完数,并按下面格式输出其因

子:6itsfactorsare1,2,3。

【参考源程序】

#include<stdio.h>

intmain()

(

inta,i,m;

for(a=l;a<=1000;a++)

(

for(m=Ozi=l;i<=a/2;i+4-)

if(!(a%i))

m+=i;

if(m==a)

(

printf("%4ditsfactorsare",a);

for(i=l;i<=a/2;i++)

if(!(a%i))

printf("%d,i);

printf("\n");

}

)

return0;

)

(10)给出任意一个不多于5位的正整数,要求如下:

①求出它是几位数。

②分别输出每一位数字。

③按逆序输出各位数字。例如,原数为321,则输出123。

温馨提示

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

评论

0/150

提交评论