目的求的是2*4*6*8*……*100的乘积,#include <stdio.h> int main() { int n=1,chengji=1,a=2; while(n<=50) { n=n+1; chengji=chengji*a; a=a+2; } printf("计算结果是%d\n",chengji); return 0; } 为什么输出结果不对
时间: 2024-03-07 18:48:37 浏览: 14
非常抱歉,我理解错误了你的问题。这段代码的目的是计算 2*4*6*...*100 的结果。如果你运行代码,你会发现结果是 0,这是因为在第一次循环中,`chengji` 的初始值为 1,而 `a` 的初始值为 2,因此第一次循环时 `chengji` 的值将会变成 1*2=2,而不是期望的 2*4=8。因此,你需要将 `chengji` 的初始值改为 2,如下所示:
```
#include <stdio.h>
int main() {
int n=1, chengji=2, a=4;
while(n<=49) {
n = n + 1;
chengji = chengji * a;
a = a + 2;
}
printf("计算结果是%d\n", chengji);
return 0;
}
```
这样修改后,输出结果将会是计算出的 2*4*6*...*100 的积。
相关问题
#include <stdio.h> int main() { int x = 3, y = 4; printf("%d\n", x++ * ++y - --x / --y); return 0; }为什么等于15
首先,根据运算符优先级,先进行后缀自增运算符 `x++` 和前缀自增运算符 `++y`,此时 `x` 的值为 4,`y` 的值为 5。
接着进行乘法运算 `x * y`,此时 `x` 的值为 4,`y` 的值为 5,因此乘积为 20。
然后进行减法运算 `x * y - --x / --y`,此时 `x` 的值为 3,`y` 的值为 4。
先进行前缀自减运算符 `--y`,此时 `y` 的值为 3。
然后进行前缀自减运算符 `--x`,此时 `x` 的值为 2。
接着进行除法运算 `--x / --y`,此时 `x` 的值为 2,`y` 的值为 3,因此商为 0。
最终得到表达式的值为 `x * y - --x / --y`,即 `20 - 0`,即等于 20。因此,程序输出的值应该是 20 而不是 15。
#include <stdio.h> int main() { int n=1,chengji=1,a=2; while(n<=50) { n=n+1; chengji=chengji*a; a=a+2; } printf("计算结果是%d\n",chengji); return 0; }输出结果为什么不对
这段代码的目的是计算 1*3*5*...*99 的结果。但是,在代码中,第一次循环时 `a` 的值为 2,应该从 1 开始,否则将会漏掉 1 的乘积。因此,你可以将 `a` 的初始值改为 1,如下所示:
```
#include <stdio.h>
int main() {
int n=1, chengji=1, a=1;
while(n<=50) {
n = n + 1;
chengji = chengji * a;
a = a + 2;
}
printf("计算结果是%d\n", chengji);
return 0;
}
```
这样修改后,输出结果将会是计算出的 1*3*5*...*99 的积。