首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

输出由一、2、3、4组成多没有重复数字的三位数,并计算有多少个

2013-01-05 
输出由1、2、3、4组成多没有重复数字的三位数,并计算有多少个?这样对吗?#includeiostream.hvoid main(){int

输出由1、2、3、4组成多没有重复数字的三位数,并计算有多少个?
这样对吗?

#include<iostream.h>
void main()
{
int i,j,k,count,number;
count=0;

for(i=1;i<5;i++)
for(j=1;j<5;j++)
for(k=1;k<5;k++)
if(((i!=j)&&(i!=k)&&(j!=k))==1)
{
number=i*100+j*10+k;
count++;
cout<<number<<"\t"<<endl;
}

cout<<"一共有:"<<count<<endl;
}

但是编译没错,运行不停循环。。。。。。。错误在哪儿,忍饥挨饿跪求ing
[解决办法]
试了一下你程序,没什么错误,循环正常终止。
[解决办法]

#include<iostream>
using namespace std;
void main()
{
int i,j,k,count,number;
    count=0;
for(i=1;i<5;i++)
{
for(j=1;j<5;j++)
{
for(k=1;k<5;k++)
{
if(((i!=j)&&(i!=k)&&(j!=k)) == 1)
                {
number=i*100+j*10+k;
                    count++;
                    cout<<number<<"\t"<<endl;
}
}
}
}
cout<<"一共有:"<<count<<endl;
 }

我就是把排版做了一下,其他的没动啊,可是我的就行啊。我用的是VS210
[解决办法]
主要是if(((i!=j)&&(i!=k)&&(j!=k)) == 1)这句会由隐患,因为true并不一定等于1,改成如下:


#include<iostream>
using namespace std;
int main()
{
  int i,j,k,count,number;
  count=0;

  for(i=1;i<5;i++)
    for(j=1;j<5;j++)
      for(k=1;k<5;k++)
        if((i!=j)&&(i!=k)&&(j!=k))                                              
          {                                                                     
            number=i*100+j*10+k;
            count++;
            cout<<number<<"\t"<<endl;
          }

  cout<<"一共有:"<<count<<endl;
  return 0;
}

[解决办法]
引用:
主要是if(((i!=j)&amp;&amp;(i!=k)&amp;&amp;(j!=k)) == 1)这句会由隐患,因为true并不一定等于1,改成如下:
……

我同意 ==1 是多余的,并且没有的话可能更好;但是我认为你说的不正确,因为 true 一定是 1,详见 4.5/6
A prvalue of type bool can be converted to a prvalue of type int, with false becoming zero and 

true becoming one.
所以楼主的写法虽然不值得提倡,但不是错误。

热点排行