主题:c语言
liyanjun
[专家分:0] 发布于 2010-04-10 18:03:00
祖父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个回复)
沙发
shekaka [专家分:1630] 发布于 2010-04-10 19:24:00
???
板凳
jadyzdr [专家分:0] 发布于 2010-04-10 19:30:00
#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 楼
liudan319 [专家分:3780] 发布于 2010-04-10 22:01:00
for(i=1;i>=0;i++)
这里,你的程序怎么终止呢。
记得在得出年数之后加上break语句,跳出循环,要不会死循环的
4 楼
hanfengxinzi [专家分:0] 发布于 2010-04-11 12:38:00
for(i=1;i<=100;i++)
如何判断是i<=100呢
5 楼
liudan319 [专家分:3780] 发布于 2010-04-11 12:40:00
这个只是个大概,你见过人死后还在计算年龄的么
6 楼
dinghao517 [专家分:20] 发布于 2010-04-11 18:53:00
#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 楼
hhj0301 [专家分:150] 发布于 2010-04-12 16:29:00
#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 楼
liuxiaobing [专家分:50] 发布于 2010-04-12 16:51:00
#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 楼
杨卓冯浩 [专家分:20] 发布于 2010-04-12 21:57:00
for语句不对应该加上if(a==b+c+d)
break;
10 楼
qweqaz146 [专家分:0] 发布于 2010-04-13 10:55:00
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楼的吧
他的和你的很像
我来回复