计算一下1!+2!+…+10!
一个错误示范
代码如下:
int main()
{
int i = 0;
int ret = 1;
int sum = 0;
for (i = 1; i <= 10; i++)
{
int j = 0;
for (j = 1; j <= i; j++)
{
ret *= j;
}
sum += ret;
}
printf("%d\n", sum);
return 0;
}
一开始我还觉得挺对,外层循环控制几个阶乘相加,内存循环控制每次阶乘.
But! 用来接收内层循环的每次阶乘的ret变量,被我无情的放在了外层循环的外面,这就导致了计算内层循环的阶乘的值的时候,ret不是从一开始的,而是上次阶乘的结果,这就导致了这次错误的出现.
一个正确示范
代码如下:
int main()
{
int i = 0;
int sum = 0;
for (i = 1; i <= 3; i++)
{
int ret = 1;
int j = 0;
for (j = 1; j <= i; j++)
{
ret *= j;
}
sum += ret;
}
printf("%d\n", sum);
return 0;
}
总结
谁能想到因为一个变量的位置放的不合理,就会对程序产生这么大的影响呢,所以,写程序的时候一定要注意变量的位置是否符合程序运行时自己的预期效果.另外一方面,一定要注意调试,太管用了!能给自己节省下很多时间.