1、在屏幕上输出如下图形 键盘输入n,比如输入3如下
*
* *
* * *
2、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
/*
* @param hight 100米起始高度
* @param n 跳跃的次数
* @param sum 当前跳跃次数
* @param sumHight 当前经过总高度
*/
void persent50(double hight, int n, int sum, double sumHight)
{
if (n == 1)//次数为1时特殊处理
{
printf("%.5f\n", hight);
printf("%.5f\n", sumHight + (hight + (hight / 2.0)));
}
else
{
if (sum <= n)//当前递归次数sum小于n,继续递归
{
double temp = sumHight + (hight + (hight / 2.0));
persent50(hight / 2.0, n, ++sum, temp);
}
else
{
printf("%.5f\n", hight);
printf("%.5f\n", sumHight);
}
}
}
3、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
/*
* @param a 分子
* @param b 分母
* @param n 总项数
* @param x 当前递归次数
* @param sum 总和
*/
void test3(double a, double b, int n, int x, double sum)
{
if (n == 1)
{
printf("0.5");
}
else
{
if (x < n)
{
double ab = a / b;
double temp = sum + ab;
test3(a + b, a, n, ++x, temp);
}
else
{
printf("%.5f\n", sum+a/b);
}
}
}
4、求1+2!+3!+…+10!的和。
/*
* @param n 阶乘到几结束,比如本题要求,就输入10。
* @param sum 当前和
* @param x 当前递归次数
*/
void test4(int n,int sum, int x){
int temp=1;
for (int i = 1; i <= x; i++)
{
temp *= i;
}
if (x<=n)
{
test4(n,sum+temp,++x);
}else{
printf("%d\n",sum-1);
}
}
5、求100 ~ 200 之间所有的素数。
void test5()
{
for (int i = 100; i < 201; i++)
{
if (i%2==0 || i%3==0 || i%5==0 ||i%7==0 || i%11==0||i%13==0)
{
continue;
}
else
{
printf("%d\n",i);
}
}
}
6、输出星号组成的菱形。
void test6()
{
for (int i = 1; i < 6; i++)
{
for (int j = 1; j < 6; j++)
{
if (i <= 3)
{
if (j >= (3 - i + 1) && j <= (3 + i - 1))
{
printf("*");
}
else
{
printf(" ");
}
}
else
{
if (j > i-3)
{
printf("*");
if (j==4)
{
break;
}
if (i==5 && j==3)
{
break;
}
}
else
{
printf(" ");
}
}
}
printf("\n");
}
}
7、我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第150个丑数。(如果找第1500个)