回 帖 发 新 帖 刷新版面

主题:C++的一道简单程序题

有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。

回复列表 (共15个回复)

沙发


#include<iostream>
using namespace std;

void main()
{
    int i,j,m,n,k=0;
    for(i=1;i<=4;i++)
    for(j=1;j<=4;j++)
    for(m=1;m<=4;m++)
    for(n=1;n<=4;n++)
      {
        if(i==j||i==m||i==n||j==n||j==m||m==n)
        ;
        else
        k++;
        cout<<i<<j<<m<<n<<endl;
      }
        cout<<k<<endl;//总共的个数

}


板凳


#include <iostream>
using namespace std;
int main()
{
    int count=0;
    for (int i=1;i<=4;i++)
        for (int j=1;j<=4;j++)
            for (int k=1;k<=4;k++)
                if (i!=j && j!=k && i!=k)
                {
                    cout<<i<<j<<k<<endl;
                    count++;
                }
    cout<<"total: "<<count<<endl;
    return 0;
}

3 楼


(C 4 3)*(A 3 3)

4 楼

int main(int argc, char* argv[])
{
    int n=0,Number=0,j=0,i=0;
    for(i=1;i<=4;i++)
    {
        for( int j=1;j<=4;j++)
        {
            for(n=1;n<=4;n++)
            {
                cout<<i*100+j*10+n<<endl;
                Number+=1;            
            }
        }
    }    
    cout<<"结果是:"<<Number<<endl;
    cin>>i;
    return 0;
}

5 楼

#include <iostream.h>
main()
{int i,j,k,l,array_number=0;
    for(i=1;i<=4;i++) 
        for(j=1;j<=4;j++)
             for(k=1;k<=4;k++)
             {    
                if((i!=j)&&(i!=k)&&(j!=k))
                {    l=100*i+10*j+k;
                     cout<<l<<"\n";
                     array_number++;
                }
             }
    cout<<"共有这样的数"<<array_number<<"个"<<endl;
 return 0;
}

6 楼

不知道这是考试还是求问啊:
#include "iostream.h"
main()
{
int a,b,c,d,sum;
for(a=1;a<5;a++)
for(b=1;b<5;b++)
for(c=1;c<5;c++)
for(d=1;d<5;d++)
{
if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&c!=d)
{
sum=1000*a+100*b+10*c+d;
cout<<sum<<endl;
}
}
}

7 楼


#include <iostream>
#include <string>
#include <cstddef>
#include <algorithm>

using namespace std;

size_t Perm(string s, size_t k = 0)
{
    static const size_t LENGTH = s.length();
    if (k == LENGTH - 1)
    {
        cout << s.substr(0, LENGTH-1) << endl;
        return 1;
    }
    else
    {
        size_t count = 0;
        for (size_t i=k; i<LENGTH; ++i)
        {
            swap(s[i], s[k]);
            count += Perm(s, k+1);
        }

        return count;
    }
}
    
int main(int argc, char *argv[])
{
    string s("1234");
    cout << "总共:" << Perm(s) << endl;
    return 0;
}

8 楼

#include<iostream.h>
void main()
{int i,j,k,s,n=0;
for(i=1;i<=4;i++)
    for(j=1;j<=4;j++)
        for(k=1;k<=4;k++)
           {if(i!=j&&i!=k&&j!=k)
               {s=i*100+j*10+k;
                cout<<"the sum is:"<<s<<endl; 
                n++;
                }
            }
cout<<"the number is;"<<n<<endl;
}

9 楼

#include<iostream>
using namespace std;

void main()
{
    int i,j,m,k=0;
    for(i=1;i<=4;i++)
    for(j=1;j<=4;j++)
    for(m=1;m<=4;m++)
      {
        if(i==j||i==m||j==m)
        ;
        else
        {k++;
        cout<<i<<j<<m<<endl;}
      }
        cout<<k<<endl;//总共的个数

}


绝对正确,我试过了

10 楼

struct  
{
    unsigned char a:4;
    unsigned char b:4;
    unsigned char c:4;
    unsigned char d:4;
}i;
int main(int argc, char *argv[])
{       
for (i.a = 1;i.a <= 4;i.a++)
    {
        for (i.b = 1;i.b <= 4;i.b++)
        {
            for (i.c = 1;i.c <= 4;i.c++)
            {
                
                for (i.d = 1;i.d <= 4;i.d++)
                {                
                    if (i.a != i.b && i.a != i.c && i.a != i.d && i.b != i.c && i.b != i.d && i.c != i.d)
                    {
                        printf("%d%d%d%d\r\n",i.a,i.b,i.c,i.d);
                    }
                }

            }
        }
    }



    return 0;   
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册