电信的宽带怎么样:这个题怎么解?用C语言

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 16:31:59
任取1-9四个互不相同的数,使它们的和为12.输出所有满足上述条件的4个数的排列.如{1,2,3,6},{1,3,2,6}{1,2,6,3}{1,3,6,2}.........

void main()
{ int m,n,p,q;
for(m=1;m<10;m++)
for(n=1;n<10;n++)
for(p=1;p<10;p++)
for(q=1;q<10;q++)
if(m!=n&&m!=p&&m!=q&&n!=p&&n!=q&&p!=q&&p+q+m+n==12)
printf("%d %d %d %d\n",m,n,p,q);
}
我的答案完全符合你的要求,我已经运行过了,没错.

楼上的效率都不高
况且一楼的有语法错误
我来个高的:
main()
{
int i,j,k,n;
printf("\n");
for(i=1;i<10;i++)
{
for(j=1;j<10;j++)
{
if(i!=j)
{
for (k=1;k<10;k++)
if(k!=j)
{
for (n=1;n<10;n++)
if(n!=k&&i+j+k+n==12)
{
printf("%d,%d,%d,%d\n",i,j,k,n);
}
}
}
}
}
}

随手写的,也没有调试

main()
{
int i,j,k,n;
printf("\n");
for(i=1;i<10;i++) /*以下为四重循环*/
for(j=1;j<10;j++)
for (k=1;k<10;k++)
for (n=1;n<10;n++)
{
if (i!=k&&i!=j&&j!=k&&k!=n&&i!=n&&j!=n||i+j+k+n=12)
/*确保i、j、k、n四位互不相同*/
printf("%d,%d,%d,%d\n",i,j,k,n);
}
}

你可以这样写:
main()
{int a,b,c,d;
for(a=1;a<10;a++)
for(b=1;b<10;b++)
for(c=1;c<10;c++)
for(d=1;d<10;d++)
if(a+b+c+d==12)
printf("%d%d%d%d\t",a,b,c,d);
}也不知道你是说是"四个不相等的数",还是可以相等,因为你后面的例子是"四个相等的数",如果可以是"四个相等的数",就不用这么写(if (i!=k&&i!=j&&j!=k&&k!=n&&i!=n&&j!=n||i+j+k+n=12)),太麻烦了, 也可以不用#include<stdio.h> ,因为c语言自动调用这个文件,比如printf,scanf,也包含在此文件中.

#include<stdio.h>
void main()
{int a,b,c,d;
for(a=1;a<=9;a++)
for(b=1;b<=9;b++)
for(c=1;c<=9;c++)
for(d=1;d<=9;d++)
if(a+b+c+d==12) printf("{ %d %d %d %d}",a,b,c,d);
}我忘了是四个不相等的数了