一道关于C的问题,麻烦帮看看错在那里呢???
原题是:输入m,求n使n! <=m <=(n+1)!,例如输入726,应输出n=6.
下面是自编的程序,不知哪错了呢?为什么结果不对呢?
#include <stdio.h>
void main()
{long int n,m,t,i,t1;
t=1,i=2;
while(i <=n)
{t=t*i;
i=i+1;
t1=t*(t+1);
}
scanf( "%d ",&m);
(t <=m)&&(m <=t1);
printf( "%d ",n);
}
为什么输入726总输出458,0什么的?
[解决办法]
....
貌似你的程序完全错的……
先写好个伪代码先~
[解决办法]
啊,不会那么夸张吧,我晕!
#include <stdio.h>
void main()
{定义一些变量为整形;
赋初值给变量;
做循环结构;
输入m;
在利用那个n! <=m <=(n+1)!;
最后输出n;
}
这是大概过程了,不好意思我刚学还不太好。但我会努力的。
[解决办法]
这是我写的
运行调试成功的
希望对你有帮助
数据类型偷懒都设得int 需要的话改成long
#include "stdio.h "
int summery(int n)
{int result;
if(n==1) result=1;
else result=n*summery(n-1);
return result;
}
main()
{int m,n;
printf( "please input the number m\n ");
scanf( "%d ",&m);
for(n=1;n <=9999;n++)
{
if((m> =summery(n))&&(m <=summery(n+1)))
{printf( "%d ",n);
break;
}
}
}
[解决办法]
嗯
非常不错!
[解决办法]
#include <stdio.h>
void main()
{
int s,n,m;
printf( "Input m:\n ");
scanf( "%d ",&m);
s=1;n=1;
do
{
n++;
s=s*n;
}
while(!((s <m)&&(m <s*n)));
printf( "%d ",n);
}
参考一下,这是我的
[解决办法]
#include <stdio.h>
void main()
{/* j记录i的阶乘
* n为i-1
* 当j> m时,n即为所求
*/
long m=0;
int i=1,j=1,n=1;
printf( "Input m: ");
scanf( "%ld ",&m);
for(;j <m;i++)
{
j*=i;
n=i-1;
}
printf( "%d\n ",n);
}
这是我写的,但是这样的程序不是完善的,如果你要写好一点,你需要考虑如果m==x!这种情况~~~
[解决办法]
就是你的程序改改就得了,简单:
void main() {
int n,t,m;
scanf( "%d ",&m);
for(t=1,n=1;t <=m;n++) t*=n;
printf( "%d ",n-2);
}
[解决办法]
我的:
#include <stdio.h>
main()
{int i=1;
int n=0;
int m;
printf( "Please input the number m: ");
scanf( "%d ",&m);
while (i <m)
{n++;
i=i*n;
}
printf( "n is:\t%d ",n-1);
}
初学c,算法很苯,将就一下吧!