每日一学11
本帖最后由 6bingame 于 2024-12-5 19:14 编辑编程练习
练习题
题1:1英寸等于2.54cm。编写一个程序,要求输入您的年身高(以厘米为单位),然后显示该身高值等于多少英寸(结果保存小数点后两位)。
解:
#include<stdio.h>
int main()
{
double inch,cm;
printf("请输入您身高的值:"); // 提示用户输入身高的值
scanf("%lf",&cm);
inch = cm /2.54; // 将厘米转换为英寸
printf("您的身高为%.2f英寸。",inch); // 输出结果
return 0;
}
例题分析:程序需要将输入的厘米值转换为英寸值。转换公式为:1英寸 = 2.54厘米。因此,转换公式可以表示为 英寸 = 厘米 / 2.54。
题2:用递归法求Fibonacci数列
解:
#include<stdio.h>
long fibonacci(int n) //求fibonacci中第n个数的值
{
if(n==1||n==2) //fibonacci数列中前两项均为1,终止递归的语句
return 1;
else
return(fibonacci(n-1)+fibonacci(n-2)); //从第3项开始,下一项是前两项的和
}
main()
{
int n,i;
long y;
printf("Input n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
y=fibonacci(i);
printf("%d ",y);
}
printf("\n");
}
例题分析:
本例题采用了递归方法输出前n项的Fibonacci数列。Fibonacci数列的前两项都为1,从第3项开始,每一项都是前两项的和。n表示第几项,函数值Fibonacci(n)表示第n项的值。当n的值大于2时,每一项的计算方法都一样,因此可以定义一个函数f(n)来计算第n项的值,递归的终止条件是当n=1或n=2时。
题3:hanoi(汉诺)塔问题。
这是一个典型只能用递归方法解决的问题。
有3根针A、B、C,A针上有64个盘子,盘子大小不等,大的在下,小的在上。
要求把这64个盘子从A针移到C针,在移动过程中可以借助B针,每次只允许移动一个盘子,且在移动过程中,在3根针都大盘在下,小盘在上。要求编程序打印处移动的步骤。
解:
#include<stdio.h>
void printdisk(char x,char y) //定义打印函数
{
printf("%c----->%c\n",x,y);
}
void hanoi(int n,char a,char b,char c) //定义递归函数hanoi完成移动
{
if(n==1) //如果A针上的盘子数只剩下最后一个,移到C针上
printdisk(a,c);
else //如果A针上的盘子数多余一个,执行以下语句
{
hanoi(n-1,a,c,b); //将A针上的n-1个盘子借助C针先移到B针上
printdisk(a,c); //将A针上剩下的一个盘子移到C针上,即打印出来移动方式
hanoi(n-1,b,a,c); //将n-1个盘从B针借助A针移到C针上
}
}
int main()
{
int n;
printf("Input n:");
scanf("%d",&n); //由键盘输入盘子数
hanoi(n,'A','B','C');
return 0;
}
例题分析:
将n个盘子从A针移到C针可以分解为以下3个步骤。
(1)将A上n-1个盘子借助C针先移到B针上。
(2)把A针上剩下的一个盘子移到C针上。
(3)将n-1个盘子从B针借助A针移到C针上。
这3个步骤分为两种操作。
(1)当n>1时,将n-1个盘子从一个针移到另一个针上,这是一个递归的过程。
(2)将最后一个盘子从一个针移到另一个针上。
本程序分别用两个函数实现上面的两类操作,用 hanoi() 函数实现 n>1 时的操作,用 printf() 函数实现将一个盘子从一个针移到另一个针上。
题4:编写函数prime(),判断给定的整数x是否为素数。在主函数输出一个整数,输出是否为素数。
解:
#include <stdio.h>
#include <math.h>
// 定义布尔类型(或者你可以简单地使用int类型,并用0和1表示false和true)
typedef enum { false, true } bool;
// 判断给定的整数x是否为素数的函数
int prime(int x)
{
int i;
if(x<=1)
{
return false;
}
for(i=2; i<=(int)sqrt((double)x); i++)
{
if(x%i==0)
{
return false;
}
}
return true;
}
int main()
{
int num;
// 提示用户输入一个整数
printf("请输入一个整数: ");
scanf("%d", &num);
// 判断并输出结果
if(prime(num))
{
printf("%d 是素数\n", num);
}
else
{
printf("%d 不是素数\n", num);
}
return 0;
}
棒棒,感谢分享!!
页:
[1]