下面程序的输出是()
#include <stdio.h> int main() { int m = 0; for (int i = 1; i <= 100; i++) { for (int j = 1; j <= i; j++) { if (j % 2 != 0) continue; m++; } } printf("%d\n",m); return 0; }
A.2500 B.2501 C.2550 D.2551
2500
chatgpt说等于50 我不知道该信谁的
北方 回复 LEK: 你运行一下不就有了
题目 《=》 求100内所有数字阶乘中的数字有没有偶数
i=1 => 0
i=2 => 1
i=3 => 1
i=4 => 2
...
i=88 => 49
i=99 => 49
i=100 => 50
m=0+1+1+2+...+49+49+50
=(1+49)*49+50=50*50
=2500
求解这道题只需要看每次内循环j的终止条件,即当j=i时,该范围内有多少偶数,从1-100,总共是两次1+2+。。。+50,2500次
zzw1803472614 回复 wifi824: 这加起来也不是2500啊,不是2550吗,等差数列求和, ((a1+an)n/2)*2 = (1+50)*50=2550
hello@noobdream 回复 zzw1803472614: 50只有一次
zzw1803472614 回复 hello@noobdream: 我回答的是他这个说法有问题,我知道题目是只求一次50,但是题主求了2次,所以题醒一下
A
首先确定内层循环是用来找...
用户登录可进行刷题及查看答案
首先确定内层循环是用来找 1 ~ i 中偶数出现次数的. 其中1 ~ N的偶数出现次数大概如下表所示:
题目求1 ~ 1 + 1 ~ 2 + 1 ~ 3 + ... + 1 ~ N的偶数出现次数.
可以发现最后结果是1+1+2+2+3+3+...+n/2(还得判断n是否为偶数,为偶数只有一个n/1,为奇数有两个n/2,具体情况可看上表得知)
因为题目中n=100,为偶数,则n/2只出现一次 将式子化简为 ,则可以运用等差公式:
这时将得到的2450加上之前得到的n/2=50,即2450+50 = 2500
登录后提交答案