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

c++ 函数循环

sorebas 发布于 2011-11-06 20:28, 420 次点击
当我第一次尝试的时候
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d,S=0;
int e = 11;
while(1)
{
a=S/2+0.5;
b=(S-S/2+0.5)/3+1/3;
c=((S-S/2+0.5)/3+1/3)/4+1/4;
d=(((S-S/2+0.5)/3+1/3)/4+1/4)/5+1/5;
if((S-a-b-c-d)==11)
{
cout<<S<<endl;
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
cout<<d<<endl;
cout<<e<<endl;
break;
}
S=S++;
}
return 0;
}


输出了这样结果
33
16
5
1
0 因为任意的字母也不能为零
11


所以我换了下列加注释的

#include <iostream>
using namespace std;
int main()
{
        int a,b,c,d,S=0;
int e = 11;
while(1)
{
a=S/2+0.5;
b=(S-S/2+0.5)/3+1/3;
c=((S-S/2+0.5)/3+1/3)/4+1/4;
d=(((S-S/2+0.5)/3+1/3)/4+1/4)/5+1/5;
if((S-a-b-c-d)==11&d!=0)                                //就是d!=0的部分
{
cout<<S<<endl;
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
cout<<d<<endl;
cout<<e<<endl;
break;
}
d=d++;                    //把 S=S++ 改为 d=d++
}
return 0;
}


但不知为什么算不出结果



#include <iostream>
using namespace std;
int main()
{
        int a,b,c,d=0,S;  //给d赋值,使d当循环中变化的数
int e = 11;
while(1)
{
a=S/2+0.5;
b=(S-S/2+0.5)/3+1/3;
c=((S-S/2+0.5)/3+1/3)/4+1/4;
d=(((S-S/2+0.5)/3+1/3)/4+1/4)/5+1/5;
if((S-a-b-c-d)==11)
{
cout<<S<<endl;
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
cout<<d<<endl;
cout<<e<<endl;
break;
}
d=d++;
}
return 0;
}

但最后还是算不出结果,
怎么改????



对了 最后结果应该为S=59
a=30
b=10
c=5
d=3
e=11

[ 本帖最后由 sorebas 于 2011-11-6 20:33 编辑 ]
1 回复
#2
wsw7710062011-11-06 21:30
楼主的程序是要实现什么目的?把浮点数赋给整数会自动转换,因此像int a=0.5,实际上输出为a=0
1