注册 登录
编程论坛 C++教室

这题用C++怎么做呢?

jlee520 发布于 2012-11-26 17:49, 1009 次点击
    编写程序,今年父亲30岁,儿子6岁,问多少年后父亲的年龄是儿子年龄的2倍?
16 回复
#2
clq5012012-11-26 18:59
#include<iostream.h>
int main()
{
    int a,b;
    cout<<"请输入父亲和儿子的年龄:"<<endl;
    cin>>a>>b;
    int sum=0;
    sum=a-(2*b);
    cout<<"所过的年数是:"<<sum<<endl;
    return 0;
}
#3
StarFall2012-11-26 19:02
设i=1, f=30,z=6,
每循环一次,i++ , f+i, z+i . ,
if(f/z==2)  输出i . ,else  继续循环

思路就是这样了
#4
jlee5202012-11-26 19:41
#include <iostream.h>
int main()
{
    int m,n,i,a,b;
    n=6;
    m=30;
    for(i=1;i<50;i++)
    {
          a=n+i;
          b=m+i;            
          if(b/a==2)
          break;
    }     
     cout<<i<<endl;
    system ("pause");
}
为什么最后输出的结果不对?
#5
qunxingw2012-11-26 20:22
#include <iostream>
using namespace std;
int main()
{
    int m,n,i,a,b;
    n=6;
    m=30;
    for(i=1;i<50;i++)
    {
          a=n+i;
          b=m+i;            
          if(b==2*a)//注意/是一个近带小数的值到整
          break;
    }     
     cout<<i<<endl;
    system ("pause");
    return 0;
}
#6
yuccn2012-11-26 21:06
回复 4楼 jlee520
能用乘法逻辑的尽量不要用除法逻辑。。
#7
mmmmmmmmmmmm2012-11-26 22:11
供楼主参考
程序代码:
#include <iostream>
using namespace std;
int main()
{
    int m,n,i,a,b;
    n=6;
    m=30;
    for(i=1; ;i++)//中间的不需要了 万一50年没满足条件呢 里面有break就可以了
    {
          a=n+i;
          b=m+i;
          if(b == 2*a)
            break;
    }     
     cout<<i<<endl;
    system ("pause");
    return 0;
}
#8
huang19381202012-11-27 11:59
0.0还是不太懂
#9
lj1201222012-11-27 13:12
回复 楼主 jlee520
#include <iostream>
using namespace std;
int i;
int temp(int a,int b);
int main()
{
    temp(30,6);
    cout<<i<<endl;
    return 0;
}
int temp(int a,int b)
{
    for(i=1;;i++)
    {
        a=30+i;
        b=6+i;
        if(a==2*b)
        {
            break;
        }
        
    }
        return i;
}
#10
lj1201222012-11-27 13:12
18年后!!!
#11
lj1201222012-11-27 13:13
回复 楼主 jlee520
#include <iostream>
using namespace std;
int i;
int temp(int a,int b);
int main()
{
    temp(30,6);
    cout<<i<<endl;
    return 0;
}
int temp(int a,int b)
{
    for(i=1;;i++)
    {
        a=30+i;
        b=6+i;
        if(a==2*b)
        {
            break;
        }
        
    }
        return i;
}
#12
wo叫xiao宝2012-11-28 13:17
据说,不能问题的啊!
#13
zhuanjia02012-11-28 14:36
很简单的一道题目,为什么要用那么麻烦的算法???

程序代码:
#include "iostream"
using namespace std;

int main()
{
    int f = 30, s = 6 ;
    int i =0 ;
    while (f != 2*s)
    {
        f++;
        s++;
        i++;
    }
    cout<<i<<"年后父亲的年龄是儿子年龄的2倍."<<endl;
    return 0;
}
#14
lxsl2012-11-28 17:03
回复 4楼 jlee520
/ 这个除法运算符,如果两边的数都是int型,所得到的结果只有整数部分,例如:5/2=2,1/2=0 ,所以除法 / 和取余数 % 两种运算经常一起出现。
if(b/a ==2
这条语句应该为:
if(b/a ==2 && b%a ==0//表示b/a的整数部分为2,且余数为0
#15
DYONGJ2012-11-28 19:21
程序代码:
#include<iostream>
using namespace std;

int main()
{
   int a,b,m;
   cout<<"请输入父亲和儿子的年龄";
   cin>>a>>b;
   m=a-2*b;
   cout<<m<<"年之后父亲的年龄是儿子年龄的二倍"<<endl;
   return 0;
}
可以参考一下
#16
fz199101252012-11-29 14:18
程序代码:
/* 编写程序,今年父亲30岁,儿子6岁,问多少年后父亲的年龄是儿子年龄的2倍?*/

int father_s_old()
{
    int father_old = 30;  //父亲的年龄
    int son_old = 6;      //儿子的年龄
    while(1)              //while(1)死循环
    {
        father_old++;
        son_old++;
        if (father_old / 2 == son_old)     //直到满足父亲的年龄/2等于儿子的年龄才退出
        {
            return father_old;             //返回父亲的年龄
            break;                         //这句的break 要不要无所谓的!~
        }
    }
}



[ 本帖最后由 fz19910125 于 2012-12-6 17:15 编辑 ]
#17
wuxia1111112012-11-30 21:59
回复 楼主 jlee520
/* 编写程序,今年父亲30岁,儿子6岁,问多少年后父亲的年龄是儿子年龄的2倍?*/

#include<iostream>
using namespace std;

int main()
{
int fay=30;
int sony=6;
for(int i=1;;i++)
   if(30+i==2*(6+i))
   {   cout<<i<<"年后父亲的年龄是儿子的二倍."<<endl;
       break;
   }
return 0;

}
1