1.以下代码是某个同学的作品,请用你学习到的调试技巧修改以下代码。保证他的运行结果是正确的。
/******************************
求pi,利用莱布尼茨公式,即 pi/4 = 1 - 1/3 + 1/5 - 1/7 + ...
*******************************/
#include <stdio.h>
#include <math.h>
int main()
{
int k = 0,a = 1,isprime = 0;
double Pi,pi,sum = 0; //pi表示莱布尼茨公式最后一项;Pi表示圆周率的值;
for (k = 0; isprime == 0; k++)
{
pi = a*1.0/(2*k + 1);
printf("%lf\n", pi);
if(fabs(pi) <= fabs(1e-7)){
isprime = 1;
break;
}else{
isprime = 0;
}
sum += pi;
a *= -1;
}
Pi = 4 * sum;
printf("%lf",Pi);
return 0;
}
(代码截图+运行结果截图):
2.斐波那契数列(用递归法完成)
题目描述: 用递归的方法求解该数列的第n项。
输入格式: 输入整数n,n小于41。
输出格式: 输出一个数,数列的第n项
输入样例: 1
输出样例: 1
(代码截图+运行结果截图):
3. 十进制转二进制(迭代法)
题目描述: 编写一个迭代函数,其参数是一个整数N,返回值也是一个整数(假设是R)。规则:整数R是整数N的二进制形式。
输入格式: 输入一个整数值。
输出格式: 输出该整数值的二进制值。
输入样例: 15
输出样例: 1111
(代码截图+运行结果截图):
4.十进制转二进制(递归法)
(代码截图+运行结果截图):
5.二进制转十进制(递归法)
(代码截图+运行结果截图):
6.超级跳跳跳 (递归法)
有一超级楼梯,共无限级。刚开始时你在地面,你可以一步跨上第一级,也可以一步跨上第二级。
假设你每次只能向上跨一级或二级,那么你要走上第N级,共有多少种走法?
(代码截图+运行结果截图):
实验结果分析
第一小题 (不少于20字):
当执行该程序时,它会计算使用莱布尼茨公式来逼近圆周率 Pi 的值。莱布尼茨公式如下:
Pi = 4 * (1 - 1/3 + 1/5 - 1/7 + 1/9 - ...)
程序中的变量k, a, isprime, Pi, pi, 和 sum 分别表示循环计数器,系数,是否达到精度要求,圆周率的值,莱布尼茨公式的最后一项,以及和。
在for循环中,程序通过计算莱布尼茨公式的每一项pi,并检查其绝对值是否小于等于1e-7。一旦条件满足,程序会跳出循环并计算Pi的值,然后以10位小数的精度输出。
最后sum*4得出Pi是多少
因此,当执行该程序时,它将输出Pi的值,精确到小数点后10位。
第二小题 (不少于20字):
在这个程序中,huang函数通过递归来计算斐波那契数列的第n个数字。如果输入的数字是1或2,函数将返回1,否则它将递归调用自己来计算前两个数字之和。递归的过程中,会不断调用自身来计算前两个数字的和,直到递归的终止条件(num为1或2)满足。然后将这些返回值相加得到最终的结果。
第三小题 (不少于20字):
这个程序将输入的十进制整数转换为二进制数并输出。在main函数中,用户输入一个整数a,然后调用huang函数来将该整数转换为二进制数,并将结果打印出来。
在huang函数中,使用了一个while循环来计算二进制数。在循环中,首先取输入数c的余数,然后将该余数与e相乘并加到b上,接着e乘以10,c除以2。当c不再大于0时,循环结束,返回b,即为转换后的二进制数。
所以如果输入的a是10,程序将输出1010,因为10的二进制表示为1010。
第四小题 (不少于20字):
这个程序使用递归法将输入的十进制整数转换为二进制数并输出。在main函数中,用户输入一个整数number,然后调用huang函数来将该整数转换为二进制数,并将结果打印出来。
在huang函数中,如果输入的数为0,则返回0;否则,将递归调用自身来计算商的二进制表示并乘以10,再加上余数的二进制表示。递归的过程中,会不断调用自身来计算商的二进制表示,直到递归的终止条件(num为0)满足。然后将这些返回值相加得到最终的结果。
第五小题 (不少于20字):
这个程序使用递归法将输入的二进制数转换为十进制数并输出。在main函数中,用户输入一个整数number,然后调用huang函数来将该整数转换为十进制数,并将结果打印出来。
在huang函数中,如果输入的数为0,则返回0;否则,将递归调用自身来计算余数乘以2的幂次方并加上商的十进制表示。递归的过程中,会不断调用自身来计算商的十进制表示,直到递归的终止条件(N为0)满足。然后将这些返回值相加得到最终的结果。
第六小题 (不少于20字):
这个程序使用递归法来计算爬楼梯的方法数量。在main函数中,用户输入一个整数n,然后调用climbStairs函数来计算爬到第n级楼梯的方法数量,并将结果打印出来。
在climbStairs函数中,如果n小于等于2,则返回n,因为在这种情况下,只有1级楼梯有1种方法,2级楼梯有2种方法。否则,使用递归调用自身来计算爬到第n级楼梯的方法数量,方法数量等于爬到第n-1级楼梯的方法数量加上爬到第n-2级楼梯的方法数量。