《算法与程序设计》习题集_第1页
《算法与程序设计》习题集_第2页
《算法与程序设计》习题集_第3页
《算法与程序设计》习题集_第4页
《算法与程序设计》习题集_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

《算法与程序设计》习题集

第4周

本题目要求计算下列分段函数f(x)的值:

-KW0

»=」(x)=X

0x=0

输入格式:输入在一行中给出实数X。

输出格式:在一行中按“f(x)="的格式输出,其中X与都保留一位小数。

输入样例1:10输出样例1(10.0)=0.1

输入样例2:0

输出样例2(0.0)=0.0

<>

0{

("");

(0)

(

0;

1.0;

)

Cf(%,if)=%,if");

o;

编写一•个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。

输入格式:输入在一行中给出带有中间的:符号(半角的冒号)的24小时制的时间,如12:34

表示12点34分。当小时或分钟数小于10时,均没有前导的零,如5:6表示5点零6分。

提示:在的格式字符串中加入:,让来处理这个冒号。

输出格式:在一行中输出这个时间对应的12小时制的时间,数字部分格式与输入的相同,然后跟

上空格,再跟上表示上午的字符串或表示下午的字符串。如5:6表示下午5点零6分。注意,在英

文的习惯中,中午12点被认为是下午,所以24小时制的12:00就是12小时制的12:0;而0

点被认为是第二天的时间,所以是0:0。

输入样例:21:11

输出样例:9:11

<>

0

(a>12)

(“”⑵;

(12)

("");

(a<12)

);

0;

给定平面上任意三个点的坐标(xll)、(x22)、(x33),检验它们能否构成三角形。

输入格式:输入在一行中顺序给出六个[-100,100]范围内的数字,即三个点的坐标xl、yl、

x2、y2、x3、y3o

输出格式:若这3个点不能构成三角形,则在一行中输出;若可以,则在一行中输出该三角形

的周长和面积,格式为“L=周长,A=面积”,输出到小数点后2位。

输入样例1:456978

输出样例1=10.13,A=3.00

输入样例2:468121218

输出样例2

<>

0

J

("〃);(Oc)(>a)(>b))

("");

(〃”);

0:

输入一个年份,判断其是否为闰年,若是闰年输出的信息,否则输出的信息。

输入格式:直接输入一个4位数年份,没有其它任何附加字符。

输出格式:直接输出或“”,没有其它任何附加字符。

输入样例:1900输出样例

输入样例:2000输出样例输入样例:1904输出样例

<>

0

a;

("");

(4010004000)

("\n");

("\n〃);

0;

输入三个整数,请把这三个数由小到大输出。

输入格式:在一行中直接输入3个整数,之间各用一个空格间隔。

输出格式:在一行中按照“最小值次小值,最大值”的顺序输出结果,最大值、次大值和最小值均

原样输出,没有宽度控制。

输入样例:213输出样例123

<>

0

);

(x>y)

(x>z)

(y>z)

J

("");

0;

)

第5周

本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:

•大于等于90分为A;

・小于90且大于等于80为B;

•小于80且大于等于70为C;

・小于70且大于等于60为D;

*小于60为E«

输入格式:输入在一行中给出一个整数的百分制成绩。

输出格式:在一行中输出对应的五分制成绩。

输入样例:90输出样例

0

("");

(a>9090)

'A,;

(a>8080)

(

'B,;

(a>7070)

(

C;

(a>6060)

(

'D';

'E';

0;

中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始'‘三天打鱼两天晒网”,

问这个人在以后的第N天中是“打鱼”还是“晒网”?

输入格式:输入在一行中给出一个不超过1000的正整数No

输出格式:在一行中输出此人在第N天中是(即“打鱼”)还是(即“晒网”),并且输

出“N”。

输入样例1:103

输出样例1:103

输入样例2:34

输出样例2:34

<>

0

N;

(")

(5450)

);

0;);

本题要求编写一个简单计算器程序,可根据输入的运算符,对或求2个整数进行加、减、乘、除

余运算。题目保证输入和输出均不超过整型范围。

输入格输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。操

作数的数据类型为整型,且保证除法和求余的分母非零。

输出格式:当运算符为+、-、*、/、%时,在一行输出相应的运算结果。若输入是非法符号(即除

了加、减、乘、除和求余五种运算符以外的其他符号)则输出。

输入样例2:3&6输出样例2:

<>

0

");

0

("\n");

("\n",);

("\n",x*y);

J

'/':("\n",);

J

'%':("\n",);

("\n〃);

}

0;

股票价格涨跌趋势,常用蜡烛图技术中的K线图来表示,分为按日的日K线、按周的周K

线、按月的月K线等。以日K线为例,每天股票价格从开盘到收盘走完一天,对应一根蜡烛小图,要

表示四个价格:开盘价格(早上刚刚开始开盘买卖成交的第1笔价格)、收盘价格(下午收盘时最

后一笔成交的价格)、中间的最高价和最低价。

如果表示为(即“实心蓝白蜡烛”);如果»>,表示为(即“空心红蜡烛”);如

果等于,则为(即"十字红蜡烛”)。如果比和低,称为“”(即“有下影线”),如果比利

高,称为“”(即“有上影线”)。请编程序,根据给定的四个价格组合,判断当日的蜡烛是一根

什么样的蜡烛。

输入格式:

输入在一行中给出4个正实数,分别对应、、、,其间以空格分隔。

输出格式:在一行中输出日K蜡烛的类型。如果有上、下影线,则在类型后加上影线类型。如果两种

影线都有,则输出。

输入样例15.1105.2505.100

・Rinq

输出样例1

输入样例25.1105.1105.110

:5.110

输出样例;2

输入样例35.1105.1255.112

:5.126

3

输出样例:

<>

<>0

("");

(<)

("');

(>)

("");

((-)0)

("");

((<<)

(\n〃);

(<<)

(\n");

(>>)

(\n〃);

0;

本题要求编写程序计算某年某月某日是该年中的第几天。

输入格式:输入在一行中按照格式(即“年/月/日”)给出日期。注意:闰年的判别条件是该年

年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。

输出格式:在一行输出日期是该年中的第几天。

输出样例1:61

输入样例2:2000/03/02

输出样例2:62

<>

0

J

(“"i;

(10

(i)

131;

331;

531;

731;

831;

1031;

1231;

430;

630;

930;

1130;

2:

((401000)(4000))

29;

)

28;

)

)

("\n");

0;

第6周

三个球A、B、C,大小形状相同且其中有一个球与其他球重量不同。找出这个不一样的球。

输入格式:输入在一行中给出3个正整数,顺序对应球A、BC的重量。

输出格式:在一行中输出唯一的那个不一样的球。

输入样例:112输出样例:C

<>

0

("");

0

'C;

0

'B';

'A,;

("\n");

0;

某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;

超出40小时的工作时间部分,按正常工作时间报酬的新职1.5倍计酬。员工按进公司时间分为

工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常

工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。

输入格式:输入在一行中给出2个正整数,分别为某员工入职年数和周工作时间,其间以空格分

隔。

输出格式:在一行输出该员工的周薪,精确到小数点后2位。

输入样例1:540输出样例1:2000.00

<>0

J

J

0=5)

«=40)

(

*50;

)

2000+(40)*50*1.5;

«=40)

(

1200+(40)*30*1.5;

(级.2\n");

0;

输入三个实数,代表三条线段的长度。判断这三条线段组成的三角形是什么类型:等边()、等

腰()、不等边()或不能构成三角形(a)。

输入格式:输入三条线段的长度,输入保证所有数据均大于0«

输出格式:输出三角形的类型:等边()、等腰()、不等边()或不能构成三角形(a)。

输入样例:333输出样例

<>

0

);

(a+b<=ca+c<=bb+c<=a)

("a'n");

(abbc)

("\n");

(abbcac)

("\n");

("\n");

有一分段函数如下:

亍-1a<-i)

-3x+1(―1兰兀Ml)

3^+5(l<x<10)

5x+31g(2x2-l)-13。>10)

根据输入的x值,计算对应的y值。

输入格式:输入X。输出格式:输出y的值,保留两位小数。

<>

<>

0

{

J

(XV-1)

(

(X,3)-1;

)

(x>K=l)

{

3*1;

)

(x>l<=10)

{

3*(2*1)+5;

)

(x>10)

(

5*3*10(2*x*l)T3;

)

("%.2D;

本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字

符的个数。

输入格式:输入为10个字符。最后一个回车表示输入结束,不算在内。

输出格式:在一行内按照=英文字母个数,=空格或回车个数,=他数字字符个数,=其

字符个数的格式输出。

输入样例:

&

09输出样例=4,=3,=2,=

1

<>

0

00001;

(");

(i<=10)

(>=,a'<='z'>='A'<=,

Z")

J

(>=,9')

J

C"Xn)

J

J

("");

”);

0;

本题要求编写程序,找出给定一系列整数中的最小值。

输入格式;输入在一行中首先给出一个正整数,之后是个整数,其间以空格分隔。

输出格式:在一行中按照“=最小值”的格式输出个整数中的最小值。

输入样例:4-2-1231000

输出样例:=-123

<>

0

1;

J

(i<n)

。;

Oy)

J

J

("=\n");

0;

本题要求计算给定的一系列正整数中奇数的和。

输入格式:输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结

束,该数字不要处理。

输出格式:在一行中输出正整数序列中奇数的和。

输入样例:87437056101-1

输出样例:116

<>

0

0;

("");

(n>0)

(20)

J

J

("\n");

0;

输入若干学生成绩,以负数结束输入。计算所有学生的平均成绩并统计成绩在80到90分(不

含90)之间的人数。

输入格式:在一行输入几个百分制实型成绩,数据之间以一个空格间隔。输入负数结束输入。

输出格式:在一行中按照“平均分,人数”的顺序输出结果,其中平均分要求保留两位小数,人

数是正整数。

输入样例:58898455-1输出样例71.502

<>

0

000;

("');

(x>=0)

(

J

(x>=80<90)

(

1;

)

J

(");

)

(".2'n"*l.0);

0;

对于给定的正整数N求它的位数及其各位数字之和。

输入格式:输入在一行中给出一个不超过109107109的正整数No

输出格式:在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。

输入样例;321输出样例:36

<>

0

00;

("");

(0)

10;

10;

J

("\n");

0;

第8周

以下程序统计输入的一行字符中字母、数字、空格、其它字符的个数(行末以换行符结

束,最后的换行符不统计在内)。例如,输入的一行字符为3*则字母有2个,数字有1

个,空格有1个,其它字符有1个。

<>

0

JJJJ

0000;

J

((())2)

(>='a'〈='z'〉='A'<='Z')

J

(>=,o'<='9')

)

("字母、数字、空格、其它字符分别有:个\n");

自然常数e可以用级数1+1/11/2?+1!来近似计算。本题要求对给定的非负整数n,求该级数

的前n项和。

输入格式:输入第一行中给出非负整数n(w1000).

输出格式:在一行中输出部分和的值,保留小数点后八位。

输入样例:10

输出样例:2.71828180

<>

0

1;

11;

(i<)

*i;

1;

J

C%.8f");

0;

一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的

桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想

再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?

输入格式:输入在一行中给出正整数N(l<NwlO)。

输出格式:在一行中输出第一天共摘了多少个桃子。

输入样例:3输出样例:10

<>

0

1;

(0<1)

(

(1)*2;

("\n");

0;

给定两个整数A和B,输出从A到B的所有整数以及这些数的和。

输入格式:输入在一行中给出2个整数A和B,其中T00WAWBW100,其间以空格分隔。

输出格式;首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向

右对齐。最后在一行中按=X的格式输出全部数字的和X.

输入样例:-38

输出样例:

-3-2-101

23456

78

=30

<>

0

00;

("");

«)

j

("%5d”);

J

)

(50)

("\n");

)

("=\n");

0;

所谓的水仙花数是指一个n位数(n>=3n<=7),它的每个位上的数字n次帚之和等于本身。

如,3位数153是水仙花,各位数字的立方和1,3+5,3+3*3=153。要求:输出所有位数为

3的水仙花数。

输入格式:无输出格式:位数为3的所有水仙花数,每行一个。

输入样例:无

输出样例:

153

<>

0

J

(100<1000)

(

100;

(10)%10;

10;

((a*a**b**c*c))

("\n");

)

0;

对于给定的正整数N需要你计算123!。

输入格式:输入在一行中给出一个不超过10的正整数No

输出格式:在一行中输出S的值。

输入样例:3输出样例:9

<>

0

110;

第9周

本题要求两个给定正整数的最大公约数和最小公倍数。

输人格式:输入在一行中给出两个正整数M和N(W1000)»

输出格式:在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。

输入样例:511292输出样例:732044

<>

0

);

0=1)

(00)

«*)

);

一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生对兔

子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可

以达到N对?

输入格式:输入在一行中给出一个不超过10000的正整数No

输出格式:在一行中输出兔子总数达到N最少需要的月数。

输入样例:30输出样例:9

<>

0

J

101;

0

("\n");

(c<N)

("\n");

所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因

子。本题要求编写程序,找出任意两正整数"和n之间的所有完数。

输入格式:输入在一行中给出2个正整数m和n((KmcnN10000),中间以空格分隔。

输出格式:逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式

为“完数=因子1+因子2+...+因子k”,其中完数和因子均按递增顺序给出。若区

间内没有完数,则输出々

输入样例:130

输出样例:

1=1

6=1+2+3

28=1+2+4+7+14

<>

0

«)

判断i是否为完数

1;

(2<2)

(0)

0

(〃=1");

(2<2)

(0)

("\n");

I

0;

下面是一个完整的下三角九九口诀表:

1*1=1

1*2=22*2=4

1*3=32*3=63*3=9

1*4=42*4=83*4=124*4=16

1*5=52*5=103*5=154*5=205*5=25

1*6=62*6=123*6=184*6=245*6=306*6=36

1*7=72*7=143*7=214*7=285*7=356*7=427*7=49

1*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8二64

1*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81

本题要求对任意给定的一位正整数N,输出从1*1到N*N的部分口诀表。

输入格式:输入在一行中给出一个正整数N(I<NC9)o

输出格式:输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。

输入样例:4

输出样例:

1*1=1

1*2=22*2=4

1*3=32*3=63*3=9

1*4=42*4=83*4=124*4=16

<>

0

J

("");

(10

(10

("*4d"*j);

("\n〃);

0;

输出斐波那契()数列(1,1,2,3,5,8,13……)的前20项

输出格式:每个数输出占8歹人

输出样例:

11235813213455

891442333776109871597

<>0

123;

fl=l;

f2=l;

C%88d,z12);

(3<=20)

f312;

fl2;

f23;

(级8d"3);

(200)

C\n);

0;

第10周

本题要求对两个整数a和b,输出其中较大的数。

函数接口定义:(a,b);

其中a和b是用户传入的参数,函数返回的是两者中较大的数。

输入样例:-58输出样例:=8

(x,y)

(x>y)

(z);

0

0;

(〃)

("=\rT,(a,b)):

0;

本题要求实现一个计算两个数的最大公约数的简单函数。

函数接口定义:(x,y);

其中x和y是两个正整数,函数应返回这两个数的最大公约数。

输入样例:3272输出样例:8

<>

(y)

1;

0

("“());

o;

本题要求实现一个计算非负整数阶乘的简单函数,使得可以利用该函数,计算12?+10!的

值。

函数接口定义:(n);

其中n是用户传入的参数,其值不超过10.如果n是非负整数,则该函数必须返回n的阶乘。

输入样例:本题没有输入。

输出样例:1210!=4037913.000000

<>

n)

(i<)

0

i:

.1

=o;

(i=1;i<=10;)

=+(i):

("1210!=\n",);

0;

函数的功能是:找出大于m的最小素数,并将其作为函数值返回。

函数接口定义:(m);

函数中m是用户传入的参数,函数的功能是找出大于m的最小素数,并将其作为函数值返回。

输入样例:10

输出样例:11

<>

(m)

(1»

(2<)

(0)

J

J

0

n;

("");

("\n"(n));

0;

编写函数,判断指定的字符是否是数字字符,如果是函数返回1,否则函数返回调。.要求在主

函数中输入该字符,调用函数并输出判断结果。

输入格式:在一行中给出1个字符。

输出格式:对于给定输入的字符,输出判断结果或。

输入样例:6输出样例:

输入样例:H输出样例:

<>

s(a)

s;

(a>='O'<='9')

1;

0;

s;

0

b;

c;

("");

(b);

("\n");

)

("\n〃);

)

0;

}

编写函数,计算下面分段函数的值。

-e2x+1+3々冬一2)(-2<

Y二点一1x<

尤+5)—11(%>3)

输入格式:输入一个实数X的值

输出格式:输出y的结果值

输入样例:0

输出样例1.000000

输入样例:3.5

输出样例8.619337

<>

<>

t;

(x<2)

(2*1)+3;

(x<=3>-2)

2*1;

(x>3)

2*10(3*5)-11;

t;

0

x;

("");

(".6"(x));

第n周

本题要求实现一个函数,可统计任一整数中某个位数出现的次数。例如-21252中,2出现了

3次,则该函数应该返回3。

函数接口定义:(N,D);

其中N和D都是用户传入的参数。N的值不超过的范围;D是[0,9]区间内的个位数。函数

须返回N中D出现的次数。

输入样例:-212522

输出样例:3

<>

(N,D);

0

N,D;

("");

("\n",(N,D));

0;

(N,D)

0;

(N<0)

(0)

(0)

(

1;

0;

)

}

(s>0)

(

(10)

J

}

10:

)

i:

本题要求实现一个计算非负整数阶乘的简单函数,并利用该函数求123!函数接的值。

口定义:

(n);

(n);

函数应返回n的阶乘,建议用递归实现。函数应返回12!的值。题目保证输入输出在双精度范围

内。

输入样例1:10

输出样例1:

(10)=3628800

=4037913

输入样例2:0

输出样例2:

(0)=1

=0

<>

(n);

(n):

0

n;

("");

("()=%.Of\n”,n,(n));

("=%.Of\n",(n));

0;

n)

(n<0)

-1;

(01)

1;

n*(l);

(n)

(n<0)

-1;

(0)

0;

n*(l)⑴;

本题要求实现求数列项的函数。数列的定义如下:

f(n)(n-2)(n-1)(n>2),其中f(0)=0,f(l)=l.

函数接口定义:f(n);

函数f应返回第n个数。题目保证输入输出在长整型范围内。建议用递归实现。输入样例:6

<>

f(n);

0

n;

("\n",f(n)):

0;

<>

f(n)

c;

(0)

(

0;

(1)

(

1;

(2)(1);

c;

本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于统计给5;另一个函数

定区间内有多少个满足上述要求的整数,并计算这些整数的和。

函数接口定义:

();

(a,b);

函数判断的各位数字之和是否等于5,是则返回1,否则返回0。

函数利用函数统计给定区间[a,b]内有多少个满足上述要求(即令返回1)的整数,并计算

这些整数的和。最后按照格式=满足条件的整数个数,=这些整数的和进行输出。题目保证

0<awbw10000c

输入样例:104999

输出样例:

104.

=15,=3720

<>

();

(a,b);

0

a,b;

("");

((a))(".\n〃,a);

((b))(".\n",b);

(a,b);

0;

(0)

10;

J

10;

)

(5)

1;

0;

(b)

00;

«)

(((i))l)

本题的目标很简单,就是判断一个给定的正整数是否素数。

输入格式:输入在第一行给出一个正整数N(W10),随后N行,每行给出一个小于的需要判2A31

断的正整数。

输出格式:对每个需要判断的正整数,如果它是素数,则在一行中输出,否则输出。

温馨提示

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

评论

0/150

提交评论