为什么k放这里输出的不是4,怎么样放才可以输出4

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

img


#include <stdio.h>
int main()
{
int m,w,c,i,k=0;
for(m=0;m<=15;m++)
{
for (w=0;w<=23;w++)
{
for (c=0;c<=45;c+=2)
{
if ((m+w+c==45)&&(m3+w2+c/2==45))
//k++;
printf("men=%d women=%d child=%d\n",m,w,c);
k++;
}
}
}

printf("%d",k);
return 0;
}

给你改了一下,望采纳,谢谢!

#include <stdio.h>
int main()
{
int m,w,c,i,k=0;
for(m=0;m<=15;m++)
{
for (w=0;w<=23;w++)
{
for (c=0;c<=45;c+=2)
{
if ((m+w+c==45)&&(m*3+w*2+c/2==45)){
//k++;
printf("men=%d women=%d child=%d\n",m,w,c);
k++;}
}
}
}
printf("%d",k);
return 0;
}

判断语句没加大括号,k++应该在判断语句if里,也就是
if ((m+w+c==45)&&(m3+w2+c/2==45)){
//k++;
printf("men=%d women=%d child=%d\n",m,w,c);
k++;
}
没加的话这个k++会执行在for循环中,也就是执行了多少次for(c =0;c<=45;c+=2){.......}这段代码

这样改就可以了,把k++放到if的{}里面

#include <stdio.h>
int main()
{
    int m, w, c, i, k = 0;
    for (m = 0; m <= 15; m++)
    {
        for (w = 0; w <= 23; w++)
        {
            for (c = 0; c <= 45; c += 2)
            {
                if ((m + w + c == 45) && (m * 3 + w * 2 + c / 2 == 45))
                {
                    k++;
                    printf("men=%d women=%d child=%d\n", m, w, c);
                }
            }
        }
    }
    printf("%d", k);
    return 0;
}