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

简单的程序但不知道错误在那里?

lixang 发布于 2007-02-26 20:15, 970 次点击
程序错误出在了那里
为何输出结果很慌渺
//1元钱兑换成成为1分,2分,5分每种至少一个,
//打印出所有可能的方式
#include<iostream>
using namespace std;
void main()
{
for(int i=1;i<100;++i)
for(int j=1;j<100;++j)
for(int k=1;k<100;++k)
if(i*1+j*2+k*5==100)
cout<<"1分"<<i<<' '<<"2分"<<j<<' '<<"5分"<<k<<' '<<endl;
}
13 回复
#2
deng19872007-02-26 21:09
#include<iostream>
using namespace std;
int main()
{
int sum=0;
for(int i=1;i<=93;i++)
{
for(int j=1;j<=47;j++)
{
for(int k=1;k<=19;k++)
{
sum=i+j*2+k*5;
if(sum==100)
{
cout<<i<<"one cent"<<" "<<j<<"two cent"<<" "<<k<<"five cent"<<endl;
}
}
}
}
cin>>sum;
return 0;
}
#3
lixang2007-02-27 13:58
以下是引用deng1987在2007-2-26 21:09:58的发言:

#include<iostream>
using namespace std;
int main()
{
int sum=0;
for(int i=1;i<=93;i++)
{
for(int j=1;j<=47;j++)
{
for(int k=1;k<=19;k++)
{
sum=i+j*2+k*5;
if(sum==100)
{
cout<<i<<"one cent"<<" "<<j<<"two cent"<<" "<<k<<"five cent"<<endl;
}
}
}
}
cin>>sum;
return 0;
}

加了太多的括号,有定义了sum,使得程序的行数大大的增加,
使得阅读起来很困难!

我的程序本来很简单,你却将它搞的很复杂!就算对了,有太多的画蛇添足了


[此贴子已经被作者于2007-2-27 14:07:17编辑过]

#4
lixang2007-02-27 14:09

希望:
大家在我的原程序上指点以下:
#5
deng19872007-02-27 21:11
这是好的编程习惯
#6
天下第二刀2007-02-27 22:00
#include<iostream>
using namespace std;
int main()
{
int sum=0;
for(int i=1;i<=93;i++)
{
for(int j=1;j<=47;j++)
{
for(int k=1;k<=19;k++)
{
sum=i+j*2+k*5;
if(sum==100)
{
cout<<i<<"one cent"<<" "<<j<<"two cent"<<" "<<k<<"five cent"<<endl;
}
}
}
}

cin>>sum;
return 0;
}

这样看起来是不是好点
#7
天下第二刀2007-02-27 22:02
晕,发上来括号都没对着了
#8
jels10871012007-02-27 23:34
cout<<"1分"<<i<<' '<<"2分"<<j<<' '<<"5分"<<k<<' '<<endl;
这里的单引号应该变为双引号就对了
#9
fhqwfnh7282007-03-01 12:40
楼上正解
或者cout<<"1分"<<i<<" 2分"<<j<<" 5分"<<k<<endl;
空格加在" 2分"前面这里效果一样
#10
wfpb2007-03-02 23:13
回复:(lixang)以下是引用deng1987在2007-2-26 21:0...

LZ,2楼的做法是正确的,他没有画蛇添足,反倒是你的程序做了很多无用功.
2,5各有一个,100-5-2=97,1分最多只有97个,2分同理最多只有47个,5分最多19个.
循环次数97*19*47,比你的100*100*100节约很多。

所谓的括号其实也没比你的多.


#include<iostream>
using namespace std;
int main()
{
    for(int i=1;i<=93;i++)
      for(int j=1;j<=47;j++)
        for(int k=1;k<=19;k++)
          if(i+j*2+k*5==100)
            cout<<i<<\"one cent\"<<\"    \"<<j<<\"two cent\"<<\"    \"<<k<<\"five cent\"<<endl;
    system(\"pause\")
    return 0;
}

#11
lixang2007-03-05 17:49
请教:
程序为何加了一句 system("pause")
我在调试的过程中去掉此句运行中并无意外!
我想你一定有你的道理,故在此请教!

#12
wfpb2007-03-05 19:34
system调用pause相当于dos的内部命令pause.
#13
lixang2007-03-07 12:47
system调用pause相当于dos的内部命令pause.
C++和dos存在什么关系呢?
#14
wfpb2007-03-07 16:30
pause命令的作用就是在命令行里暂停。
1