我爱橙 发表于 2022-5-2 16:33:15

EX4.26 一尺之捶,日取其半 √

本帖最后由 我爱橙 于 2022-5-2 17:17 编辑

我国古代著作《庄子》中记载道:“一尺之捶,日取其半,万世不竭”。其含义是:对于一尺的东西,今天取其一半,明天取其一半的一半,后天再取其一半的一半的一半总有一半留下,所以永远也取不尽。请编写一个程序,使其可以计算出一条长为m的绳子,在n天之后剩下的长度。

运行结果示例1:

Input length and days:

12,5↙

length=0.37500

输入格式:
输入提示信息:"Input length and days:\n"

输入格式: "%f,%d"

输出格式:
"length=%.5f\n"

输入样例:
在这里给出一组输入。例如:

12,5
输出样例:
在这里给出相应的输出。例如:

Input length and days:
length=0.37500




#include <stdio.h>
#include <math.h>
int main()

{
int m,n;
float length;
printf("Input length and days:\n");
scanf( "%f,%d",&m,&n);
for(n=1,m>=0;n++;)
{
   length=m-m/2;
   length=length-length/2;
}

printf("length=%.5f\n",length);

return 0;
}

小甲鱼-大王八 发表于 2022-5-2 16:38:06

问题是啥呀

isdkz 发表于 2022-5-2 16:40:22

本帖最后由 isdkz 于 2022-5-2 16:46 编辑

#include <stdio.h>
#include <math.h>
int main()

{
int n;                  // 改了这里
float m;            // 改了这里
printf("Input length and days:\n");
scanf( "%f,%d",&m,&n);
for(int i=1;i<=n;i++)               // 改了这里
{
   m=m-m/2;                              // 改了这里
}

printf("length=%.5f\n",m);            // 改了这里

return 0;
}

我爱橙 发表于 2022-5-2 16:54:15

isdkz 发表于 2022-5-2 16:40


可以问一下程序设计的思路吗?

isdkz 发表于 2022-5-2 17:04:26

我爱橙 发表于 2022-5-2 16:54
可以问一下程序设计的思路吗?

这个思路就是你写的程序的思路,只是你那个每次循环减了两次肯定是不行的,

这样的话就不方便控制次数,因为每次循环用于计算的变量只加了 1,所以直接用 m 作为长度即可,

我这里搞多了一个在循环中计数的变量 i ,你那个也是可以的,只不过你写错了,

n 是天数,你对 n 重新赋值的话就把天数给覆盖了,所以你应该是对 n--,然后用 n 跟 0 比较,而不是使用 m,

还有初始化跟条件之间你写错成了 “,”,应该是 “;” 才对,

故你的代码也可以改成这样,你的思路没错,就是对语言还不够熟悉

#include <stdio.h>
#include <math.h>
int main()

{
int n;
float m;
printf("Input length and days:\n");
scanf( "%f,%d",&m,&n);
for(;n>0;n--)
{
   m=m-m/2;
}

printf("length=%.5f\n",m);

return 0;
}

我爱橙 发表于 2022-5-2 17:17:19

isdkz 发表于 2022-5-2 17:04
这个思路就是你写的程序的思路,只是你那个每次循环减了两次肯定是不行的,

这样的话就不方便控制次数 ...

{:9_240:}高估我了QAQ
真的没思路脑子一团浆糊,
说思路的话估计想的是累加天数然后递减算长度,
所以初始化了n和m,然后循环是天数的增加,
不知道怎么出循环所以没写循环调整表达式-_-||

谢谢鼓励啦,你的思路真的很清晰,两种方法都能懂,希望自己也能不仅限于看懂可以早日学会用代码语言来表达{:9_228:}

isdkz 发表于 2022-5-2 17:18:22

我爱橙 发表于 2022-5-2 17:17
高估我了QAQ
真的没思路脑子一团浆糊,
说思路的话估计想的是累加天数然后递减算长度,


加油{:5_108:}

wp231957 发表于 2022-5-2 20:25:05

isdkz 发表于 2022-5-2 17:04
这个思路就是你写的程序的思路,只是你那个每次循环减了两次肯定是不行的,

这样的话就不方便控制次数 ...

无限m/=2不行吗
页: [1]
查看完整版本: EX4.26 一尺之捶,日取其半 √