回 帖 发 新 帖 刷新版面

主题:c语言

祖父70岁,长孙20岁,次孙15岁,幼孙5岁,问药过多少年,三个子孙的年龄和祖父的年龄相等#include<stdio.h>
void main()
{
    int i,a,b,c,d;
    a=70;
    b=20;
    c=15;
    d=5;
    for(i=1;i>=0;i++)
    {
        printf("%d",i);
        a=a+i;
        b=b+i;
        c=c+i;
        d=d+i;
        a=b+c+d;
    }
}
大家帮忙看看,哪里错了,多谢!

回复列表 (共12个回复)

沙发

???

板凳


#include "stdio.h"
void main()
{
    int i,a,b,c,d;
    a=70;
    b=20;
    c=15;
    d=5;
    for(i=1;i<=100;i++)
    {
        if((d+b+c+3*i)==(a+i))
            printf("%d",i);
    }
}

3 楼

for(i=1;i>=0;i++)
这里,你的程序怎么终止呢。
记得在得出年数之后加上break语句,跳出循环,要不会死循环的

4 楼

for(i=1;i<=100;i++)
如何判断是i<=100呢

5 楼

这个只是个大概,你见过人死后还在计算年龄的么

6 楼

#include<stdio.h>
void main()
{
    int i=0,a,b,c,d;
    a=70;
    b=20;
    c=15;
    d=5;
    while(1)
    {
        if(a==b+c+d)
        {printf("%d",i);
        break;}
        a++;b++;c++;d++;i++;
    }
}

7 楼

#include<stdio.h>
int main()
{
    int i,a,b,c,d;
    a=70;
    b=20;
    c=15;
    d=5;
    i=(a-b-c-d)/2;
    printf("%d",i);
    return 1;
}
我觉得不一定要用循环的话,这样会比较好。
也就是说三个子孙,以后每一年的总年龄比老头多2(1+1+1-1=2 会算吧...)那么只在知道多少年后可以把现在相差的30年(70-20-15-5=30),补上就行了。这是最效率的方法了吧。

8 楼


#include<stdio.h>
void main()
{
    int i,a,b,c,d;
    a=70;
    b=20;
    c=15;
    d=5;
    for(i=1;i>=0;i++)
    {
        a=a+i;
        printf("a=%d\n",a);
        b=b+i;
        c=c+i;
        d=d+i;
        if(a==(b+c+d))
        {
            printf("经过了%d年",i);
            return ;
        }
        else
        {
            a=a-i;
            b=b-i;
            c=c-i;
            d=d-i;
        }
    }
}

9 楼


for语句不对应该加上if(a==b+c+d)
break;

10 楼

for(i=1;i>=0;i++)
    {
        printf("%d",i);
        a=a+i;   a值在不断变大,i值也在不断变大,导致越错越多
        b=b+i;   同上
        c=c+i;   同上
        d=d+i;   同上
        a=b+c+d;   这里让你的a值变得更大
    }
而且你的是个死循环
欣赏下8楼的吧
他的和你的很像

我来回复

您尚未登录,请登录后再回复。点此登录或注册