求解,为什么输出的结果是这样子

img


为什么里面的else if不是一遍一遍判断,后两个if的值为什么没有

i > 3, i = i - 4; // 按你这个条件,i 在 4 之前的数 都是进入这个判断里,然后 i = 0; 不就跳出了嘛;所以也就是只统计了第一个if 的 36 / 4 = 9 个

我可以先分析一下循环过程
循环第一次,i=36,m=0,i大于3,所以i-4,m+1
循环第二次,i=32,m=1,i大于3,所以i-4,m+1
……
循环第九次,i=4,m=8,i大于3,所以i-4,m+1
此时不符合循环条件,退出
所以,在结束循环时,m=9

因为刚好整除了,所以女人小孩就不用抱了呗
这题先算m=i/4
然后w=i%4==3?1:0
c=i%4==3?0:i%4

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/192926
  • 这篇博客也不错, 你可以看下else总是与尽可能近的if配对
  • 除此之外, 这篇博客: 如何求两集合的交集中的 用两个for循环和if语句来判断两个数组有没有一样的元素。如果有,进行赋值。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •  for(i=0;i<10;i++)
     {
     for(a=0;a<10;a++)
     {
     if(x[i]==y[a])
     {
     z[b]=x[i];
     b+=1;
     }
     }
     }