大佬们,帮忙看看下面的程序哪里不对,为什么不出结果?急!急!急!

大佬们,帮忙看看下面的程序哪里不对,为什么不出结果?急!急!急!#include<stdio.h>
void main()
{
int man,woman,child,sum,money;
for(man=0;man<=30;man++)
{
for(woman=0;woman<=30;woman++)
{
for(child=0;child<=30;child++)
sum=man+woman+child;
money=3*man+2*woman+1*child;
if(sum==30&&money==50)
{
printf("男人有%d人,女人有%d人,小孩有%d人\n",man,woman,child);
}
}
}
}

什么叫不出结果?编译报错?单步调试过来吗?
我没细看程序,看到第三行的时候我建议你把for()里面的变量的定义放在for()里面
可能会产生一个异常,我刚学那会就是这样

另外,请讲清楚发生了什么,以便我们定位,谢谢!追问

结果是这样的

哪里错了?

追答

这个很明显没有进入到你的if()子过程中去啊,你再检查检查逻辑。
会不会调试啊?

追问

调试没错误啊

追答

你那个不叫调试!
是这样,虽然程序能跑出来,但是就不代表没有bug的。
你的这段代码明显是对于if(sum==30&&money==50)这个结果的判断始终为false
所以程序跑步进去if()里面,所有没有输出值。
明白了吗?

还有呢,再次建议你把变量的定义写在if()里面,比如这样if(int man=0;man<30;man++)

追问

没有😭

追答

提醒你一下,你的代码应该是有逻辑问题的
你这是三元一次方程的解,有两个方程式
分别是:X+Y+Z=30和3X+2Y+Z=50,这两个是解不出来的,只能是一系列可能的解
所以你的break;应该是有问题的
你说说你的想法,我帮你再看看。

追问

就是要一系列可能的解啊

刚开始的没有break

#include
#include
void main()
{
int a,b,head=98,feet=386;
for(a=0;a<=98;a++)
{
for(b=0;b<=98;b++)
{
if(a+b==98&&a*4+b*2==386)
printf("兔有%d只,鸡有%d只\n",a,b);
}
}
}

这个有结果

这两个有什么区别吗?

#include
void main()
{
int man,woman,child,sum,money;
for(man=0;man<=30;man++)
for(woman=0;woman<=30;woman++)
for(child=0;child<=30;child++)
if(man+woman+child==30&&3*man+2*woman+1*child==50)
{
printf("男人有%d人,女人有%d人,小孩有%d人\n",man,woman,child);
break;
}

}

这个也有结果

追答

我知道什么问题了,你的控制逻辑有问题
改一下代码

void main()
{
    int sum,money;
    for(int man=0;man<=30;man++)
    {
        for(int woman=0;woman<=30;woman++)
        {
            for(int child=0;child<=30;child++)
            {
                sum=man+woman+child;
                money=3*man+2*woman+1*child;
                if(sum==30&&money==50)
                {
                printf("男人有%d人,女人有%d人,小孩有%d人\n",man,woman,child);
                }
            }
        }
    }
}

这样你再试试,应该可以了!

追问

😱😱😱

int不能在for里定义吧

追答

那你再改回去试试嘛 多尝试 主要是你的图片看不清楚 很尴尬

追问

嗯,好了,谢谢

怎样把左下角部分去掉?

程序如下

#include
void main()
{
int i,j,sum;
int n=0,x=1,y=1;
for(y=1;y<=9;y++)
{
printf("%4d",y);
}
putchar('\n');
for(x=1;x<=9;x++)
{
printf(" -",n);
}
putchar('\n');
for(i=1;i<=9;i++)
{

for(j=1;j<=9;j++)
{

sum=i*j;
printf("%4d",sum);
n++;
if(n%9==0)
printf("\n");
}
}
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-11-15
按照Java的思想: 设置变量需要设置默认值。int sum=0;才能赋值操作。
相似回答