c语言 1*2*3*4*5*6......*n<3000成立的最大n

来源:百度知道 编辑:UC知道 时间:2024/05/28 17:45:29
下面那里错了
#include<stdio.h>
void main()
{int sum,i=1,n;

sum=1;

while (sum<3000)
{
sum=sum*i;
i++;
}
printf("%d\n",sum);
}

你这个地方输出的sum是sum*7之后的sum。
而且你的n也没有用上,呵呵,你应该最后输出的数字应该是(i-2)
为什么呢,你看,在循环到sum=sum*6之后,i自加了一个数,成了7,然后进入下一次循环,sum=sum*7,注意啦,这个时候计算机还没有查看sum是否大于3000,然后i又自加了一次,成了8,这个时候计算机才开始检查是否大于3000,然后看到sum现在是5040,不通过,然后结束循环,进入输出过程,在这个过程中,i自己白加了2,所以最后要减去2所以最后应该是printf("%d\n",i-2),呵呵,用这个数字再去调试一下,看看是不是对了?

没有错啊·
大于3000,不一定就得等于3000
1*2...*6=720
1*2...*7=5040

加上这句printf("n=%d\n",i);

改成这样
...........
while (sum<3000)
{
i++;
sum=sum*i;

}
printf("n=%d\n",i-1);
printf("sum=%d\n",sum/i);
}