文档库 最新最全的文档下载
当前位置:文档库 › 编程题

编程题

编程题
编程题

描述

给定三条边的长度,判断能否组成三角形,如果可以,判断三角形的形状。

输入

一组数据,每行三个实数,在(0,10]之间,精确到小数点后第四位。最后以0 0 0表示结束。

输出

根据每行的数据判断,如果不能组成三角形,则输出“Not a triangle”;如果是“等腰三角形”,则输出“Isosceles triangle”;如果是“直角三角形”,则输出“Right triangle”;如果是“等腰直角三角形”,则输出“Isosceles right triangle”;如果是“等边三角形”,则输出“Equilateral triangle”;否则,输出“General triangle”。最后输出一行“End”。

样例输入

1.4142 1.4142 2

1.0000 4.0000 5.0000

0 0 0

样例输出

Isosceles right triangle

Not a triangle

End

提示

描述

在数学上,斐波那契数列(Fibonacci Sequence),是以递归的方法来

定义:

F0 = 0

F1 = 1

F n = F n - 1 + F n - 2

用文字来说,就是斐波那契数列由0和1开始,之后的斐波那契数就由之前的两数相加。首几个斐波那契数是:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946,………………

特别指出:0不是第一项,而是第零项。

在西方,最先研究这个数列的人是比萨的列奥纳多(又名斐波那契),他描述兔子生长的数目时用上了这数列。

?第一个月有一对刚诞生的兔子

?第两个月之后它们可以生育

?每月每对可生育的兔子会诞生下一对新兔子

?兔子永不死去

假设在n月有新生及可生育的兔子总共a对,n+1月就总共有b对。在n+2月必定总共有a+b对:因为在n+2月的时候,所有在n月就已存在的a对兔子皆已可以生育并诞下a对后代;同时在前一月(n+1月)之b对兔子中,在当月属于新诞生的兔子尚不能生育。

现请以较短的时间,求出斐波那契数列第n项数值,0≤n≤40。

输入

斐波那契数列项数n,0≤n≤40。

输出

斐波那契数列第n项数值

样例输入

4

样例输出

3

#include

#include

int main()

{ int a[45],n,i;

scanf("%d",&n);

if(n<=40&&n>=0)

{

a[0]=0;a[1]=1;

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

{a[i]=a[i-1]+a[i-2];}

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

system("pause");

return 0;}

}

描述

线性表是n个元素的有序集合(n 0),n是线性表中元素的个数,称为线性表的长度。可以用一组地址连续的存储单元依次存储线性表中元素,采用这种存储方式的线性表称为顺序表。

请在顺序表上实现运算,实现顺序表的逆置,删除表中所有元素值等于x的元素。

输入

三组数据,顺序表元素类型分别为整型、字符型和实型。

每一组第一行给出元素数目n(0

输出

三组数据,每一组第一行为逆置后的顺序表元素,第二行是在此基础上删除指定元素后的顺序表元素

样例输入

8

1 2 3 7 5 6 7 8

7

3

a c m

h

4

1.2 3.4 5.6 7.8

1.2

样例输出

8 7 6 5 7 3 2 1

8 6 5 3 2 1

m c a

m c a

7.8 5.6 3.4 1.2

7.8 5.6 3.4

提示

描述

线性表是一种最简单、最基本,也是最常用的数据结构,其用途十分广泛,例如,用带表头结点的单链表求解一元整系数多项式加法和乘法运算。

现给两个一元整系数多项式,请求解两者之和。

输入

两组数据,每一组代表一个一元整系数多项式,有多行组成,其中每一行给出多项式每一项的系数和指数,这些行按指数递减次序排序,每一组结束行为

0 -1

输出

三组数据,前两组为一元整系数多项式,最后一组为两个多项式的和。一元整系数多项式输出形式如下:

(1)多项式项4x输出为4X

(2)多项式项4x2输出为4X^2

(3)第一项系数为正数时,加号不要输出

(4)除常系数项外,项系数为1不显式输出,-1输出为-

例如,4x3- x2+x-1正确输出形式为4X^3-X^2+X-1,错误输出形式为+4X^3-1X^2+1X-1

样例输入

3 14

-8 8

6 2

2 0

0 -1

2 10

4 8

-6 2

0 -1

样例输出

3X^14-8X^8+6X^2+2

2X^10+4X^8-6X^2

3X^14+2X^10-4X^8+2

提示

描述

线性表是一种最简单、最基本,也是最常用的数据结构,其用途十分广泛,例如,用带表头结点的单链表求解一元整系数多项式加法和乘法运算。

现给两个一元整系数多项式,请求解两者的乘积。

输入

两组数据,每一组代表一个一元整系数多项式,有多行组成,其中每一行给出多项式每一项的系数和指数,这些行按指数递减次序排序。每一组结束行输入为0 -1

输出

三组数据,前两组为一元整系数多项式,最后一组为两个多项式的乘积。

一元整系数多项式输出形式如下:

(1)多项式项4x输出为4X

(2)多项式项4x2输出为4X^2

(3)第一项系数为正数时,加号不要输出

(4)除常系数项外,项系数为1不显式输出,-1输出为-

例如,4x3- x2+x-1正确输出形式为4X^3-X^2+X-1,错误输出形式为+4X^3-1X^2+1X-1

样例输入

3 14

-8 8

6 2

2 0

0 -1

2 10

4 8

-6 2

0 -1

样例输出

3X^14-8X^8+6X^2+2

2X^10+4X^8-6X^2

6X^24+12X^22-16X^18-50X^16+12X^12+76X^10+8X^8-36X^4-12X^2

提示

该题属于南京邮电大学《数据结构A》实验一中的内容。

题目来源

描述

a3 = b3 + c3 + d3为完美立方等式。例如123 = 63 + 83 + 103。编写一个程序,对任给的正整数N (N≤100),寻找所有的四元组(a, b, c, d),使得a3 = b3 + c3 + d3,其中1

输入

正整数N (N≤100)

输出

每行输出一个完美立方,按照a的值,从小到大依次输出。当两个完美立方等式中a的值相同,则依次按照b、c、d进行非降升序排列输出,即b值小的先输出、然后c值小的先输出、然后d值小的先输出。

样例输入

24

样例输出

Cube = 6, Triple = (3,4,5)

Cube = 12, Triple = (6,8,10)

Cube = 18, Triple = (2,12,16)

Cube = 18, Triple = (9,12,15)

Cube = 19, Triple = (3,10,18)

Cube = 20, Triple = (7,14,17)

Cube = 24, Triple = (12,16,20)

提示

描述

在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。例如:1700, 1800, 1900 和 2100 不是闰年,而 1600, 2000 和 2400是闰年。

给定公元2000年1月1日后的某年某月某日(包括2000年1月1日),你的任务:(1)给出这一天从公元2000年1月1日开始逝去的天数,(2)判断这一天是当年的第几天。

输入

输入包含若干行,每行包含三个空格间隔的正整数,它们分别表示年、月、日。输入最后一行是?1, 不必处理。可以假设结果的年份不会超过9999。

输出

多组,每组两行,分别为每行输入所代表的一天从公元2000年1月1日开始逝去的天数、在当年的第几天。

样例输入

2000 1 1

2009 3 14

-1

1

3360

73

题目来源

描述

编程精确计算2的N次方。(N是介于100和1000之间的整数)。

输入

正整数N (100≤N≤1000)

输出

2的N次方

样例输入

200

样例输出1606938044258990275541962092341162602522202993782792835301376 题目来源

描述

要求找出具有下列性质数的个数(包含输入的自然数n):

先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:

1. 不作任何处理;

2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半;

3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止.

输入

一个自然数n

输出

一个数,表示满足条件的数的个数

6

样例输出

6

提示

样例说明:满足条件的数是6,16,26,126,36,136

题目来源

描述

求两个非负整数(1000位以内)的和。

输入

两个非负整数(1000位以内),以空格分隔。

输出

两个非负整数的和。

样例输入

111111111111 222222222222

样例输出

333333333333

提示

描述

将一个十进制数N转换成R进制数输出,2≤R≤16,R≠10。

输入

多行。第一行指出以下一共有多少组数据,后续每行包含两个整数N和R,以空格分隔,-100000≤N≤100000,2≤R≤16,R≠10。

输出

多行。每行给出转换后的R进制数。

样例输入

3

7 2

23 12

-4 3

样例输出

111

1B

-11

提示

描述

给定三条边的长度,判断能否组成三角形,如果可以,判断三角形的形状。

输入

一组数据,每行三个实数,在(0,10]之间,精确到小数点后第四位。最后以0 0 0表示结束。

输出

根据每行的数据判断,如果不能组成三角形,则输出“Not a triangle”;如果是“等腰三角形”,则输出“Isosceles triangle”;如果是“直角三角形”,则输出“Right triangle”;如果是“等腰直角三角形”,则输出“Isosceles right triangle”;如果是“等边三角形”,则输出“Equilateral triangle”;否则,输出“General triangle”。最后输出一行“End”。

样例输入

1.4142 1.4142 2

1.0000 4.0000 5.0000

0 0 0

样例输出

Isosceles right triangle

Not a triangle

End

在一组数据(数目不超过10000)中,插入新数,删除所有与给定数相等的数据。

输入

第一行是未排序的一组非负整数,数目不超过10000。以-1作为结束标志。

第二行是要插入的数。

第三行是要删除的数。

输出

第一行输出自小到大排好序的数。如果没有元素,输出“No elements.”(不包括引号)。

第二行输出插入后自小到大排好序的数,以“,”隔开。

第三行输出删除后自小到大排好序的数,以“,”隔开。如果没有元素,输出“No elements.”(不包括引号)。

样例输入

100 98 79 63 44 99 -1

88

79

样例输出

44,63,79,98,99,100

44,63,79,88,98,99,100

44,63,88,98,99,100

描述

求两个正整数的最大公约数和最小公倍数

输入

两个正整数A,B

输出

两个正整数的最大公约数、最小公倍数

样例输入

样例输出

1 12

描述

求R的n次幂(0.0

每行输入两个数R和n

R值占1-6列,n占8-9列

输出

对应于每一行输入,输出R的n次幂前导的0不要输出

无意义的0不要输出

如果结果是一个整数,不要输出小数点最后一行是空行

样例输入

95.123 12

0.4321 20

5.1234 15

6.7592 9

98.999 10

1.0100 12

样例输出

548815620517731830194541.899025343415715973535967221869852721

.00000005148554641076956121994511276767154838481760200726351203835429 763013462401

43992025569.928573701266488041146654993318703707511666295476720493953 024

29448126.764121021618164430206909037173276672 90429072743629540498.107596019456651774561044010001

1.126825030131969720661201

题目来源

描述

今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目:

设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大。

同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子:

有一个数字串:312,当N=3,K=1时会有以下两种分法:

1) 3*12=36

2) 31*2=62

这时,符合题目要求的结果是:31*2=62

现在,请你帮助你的好朋友XZ设计一个程序,求得正确的答案。输入

输入共有两行:

第一行共有2个自然数N,K(6≤N≤40,1≤K≤6)

第二行是一个长度为N的数字串。

输出

输出所求得的最大乘积(一个自然数),答案在long long 数据范围之内。

样例输入

4 2

1231

样例输出

62

题目来源

描述

二叉树(binary tree)是非常重要的树形数据结构,它是结点的有限集合,该集合或者为空集,或者是由一个根和两个互不相交的、称为该根的左子树和右子树的二叉树组成。

一般意义上,遍历(traverse)一棵二叉树意味着对该二叉树中的每个结点访问且仅访问一次。

(1)若二叉树不为空,先序遍历是指先访问该树根结点,再访问先序遍历左子树,最后先序遍历右子树。

(2)若二叉树不为空,中序遍历是指先中序遍历左子树,再访问该树根结点,最后中序遍历右子树。

(3)若二叉树不为空,后序遍历是指先后序遍历左子树,再后序遍历右子树,最后访问该树根结点。

图1018-1给出一棵二叉树,先序遍历序列为A B D C E F,中序遍历序列为B D A E C F,后序遍历序列为D B E F C A,样例输出给出了输出格式。

图1018-1

编程建立下图1018-2描述的二叉树,给出先序、中序和后序遍历序列。

图1018-2

输入

无需显式输入任何数据

输出

共三行,依次输出先序、中序和后序遍历序列。

样例输入

样例输出

PreOrder: A B D C E F

InOrder: B D A E C F

PostOrder: D B E F C A

题目来源

描述

二叉树是非常重要的树形数据结构,根据该树的先序、中序或后序遍历序列可以建立一棵二叉树。例如输入先序遍历序列A B # D # # C E # # F # #可以建立图1019-1所示的二叉树,这里用#代表空树或空子树(另一种说法:若无孩子结点,则用#代替),如图1019-2。

图1019-1

图1019-2

请实现基于遍历的二叉树运算:求高度、计算结点数目

输入

二叉树的先序遍历序列,用#代表空树或空子树。

输出

共五行

前三行依次输出先序、中序和后序遍历序列,

第四行输出二叉树的高度,

第五行依次输出二叉树总结点数目、叶子结点数目、度为1的结点数目。

样例输入

A B # D # # C E # # F # #

样例输出

PreOrder: A B D C E F

InOrder: B D A E C F

PostOrder: D B E F C A

3

6 3 1

提示

//根据先序遍历序列创建一个二叉树!

template

void BinaryTree::Create(BTNode*& t){

char c;

cin>>c;

if(c=='#')

t=NULL;

else{

t=new BTNode(c);

Create(t->lChild);

Create(t->rChild);

}

}

题目来源

描述

二叉树是非常重要的树形数据结构,层次遍历一棵二叉树是按从上到下、从左到右的次序访问树上的结点。例如,图1020所示的二叉树层次遍历序列为A B C D E F。

图1020

请根据先序遍历序列建立一棵的二叉树(用#代表空树或空子树),输出层次遍历序列。

输入

二叉树的先序遍历序列,用#代表空树或空子树

输出

二叉树层次遍历序列

样例输入

A B # D # # C E # # F # #

样例输出

LevelOrder: A B C D E F

题目来源

CHENZ

描述

二叉树是非常重要的树形数据结构。复制一棵二叉树是在另一个存储区存放相同的结构和内容,而一棵二叉树上所有左右子树互换是在原存储区上的运算。

请分别根据先序遍历序列建立两棵的二叉树(用#代表空树或空子树),再将这两棵二叉树复制为左右子树建立第三棵二叉树,输出先序和层次遍历序列,最后将第三棵二叉树上所有左右子树互换,并输出先序和层次遍历序列。

输入

共三行

前两行分别对应两棵二叉树的先序遍历序列,用#代表空树或空子树

第三行为第三棵二叉树的根结点。

输出

共四行

前两行为第三棵二叉树生成时的先序、层次遍历序列,

后两行为第三棵二叉树左右子树互换后的先序、层次遍历序列。

样例输入

B # D # #

C E # # F # #

A

样例输出

PreOrder: A B D C E F

LevelOrder: A B C D E F

PreOrder: A C F E B D

LevelOrder: A C B F E D

描述

已知电文包括的字符集为{A,C,I,M,N,P,T,U},输入对应权值,对字符集合进行哈夫曼编码,完成电文的哈夫曼编码与译码工作。

输入

共三行:

第一行为对应字符集{A,C,I,M,N,P,T,U}的权值

第二行为一段字符串表示的电文(长度不超过1000);

第三行为一段电文的哈夫曼编码。

输出

共十行:

相关文档