2. 楼主,真心没看懂,说下你要做什么,这个程序要实现什么事
3. 懂了……不过,你不觉得2048的阶乘,非常非常大吗?
4.
@洋 一个题,在/* */里,我想解决那个题,可是程序写出来有问题了
5.
@洋 呃……在测试期间手机死机了一次~~~唉……这只是那个题的假设
6. goto那里有问题,不断循环,还要我按音量下+c
7.
@终极神天
<?php
#include <stdio.h>
int main() {
long int sum=1;
int i,d,N;
A: scanf("%d",&N);
if(N>2&&N<2048){
for(i=1;i<=N;i++) sum*=i;
printf("%d\t",sum);
d=sum%10;
while(d==0){
sum=sum/10;//这里是除号
d=sum%10; }
printf("%d\n",d);
}else{
printf("输入数字不在0-2048之内,请重新输入!\n");
goto A;
}
return 0;
}
?>
8. 1 ! =1,
2 ! =2,
3 ! =6,
4 ! =24,
5!=120,
6!=720,
7!=5,040,
8!=40,320
9!=362,880
10!=3,628,800
11!=39,916,800
12!=479,001,600
13!=6,227,020,800
14!=87,178,291,200
15!=1,307,674,368,000
16!=20,922,789,888,000
17!=355,687,428,096,000
18!=6,402,373,705,728,000
19!=121,645,100,408,832,000
20!=2,432,902,008,176,640,000
9.
@洋 那个除号那块我也改了 ,后来看书发现那个范围太大了,能阶乘到1000就算NB了……
10. 唔……刚才用手机的重启证明了,能算到50的阶乘就很NB了~~~为什么我的php标签木作用??
11. 我觉得,没必要真的去阶乘,只要每次循环之后更新最后一个非0值
12. #include <stdio.h> int main(void) { int sum, d; int i, N; printf("输入数据:\n"); while (1) { scanf("%d", &N); if (N > 2 && N < 2048) { d = 1; for (i = 1; i <= N; i++) { sum = d * i; do { d = sum % 10; sum /= 10; } while (d == 0); } printf("-> %d\n", d); } else { printf("输入数字不在0-2048之内,请重新输入!\n"); } } return 0; } #include <stdio.h> int main(void) { int sum, d; int i, N; printf("输入数据:\n"); while (1) { scanf("%d", &N); if (N > 2 && N < 2048) { d = 1; for (i = 1; i <= N; i++) { sum = d * i; do { d = sum % 10; sum /= 10; } while (d == 0); } printf("-> %d\n", d); } else { printf("输入数字不在0-2048之内,请重新输入!\n"); } } return 0; }
14.
@eleqian 嗯,我自己复制下来换了行,看懂了,原来可以这么用while,能不用goto就不用吧~~谢谢你了!以后或许还会有问题请教