C语言编写一个程序,真心求教:1.2.3.4四个数,能组合成多少个不同的三位数,都是多少?

2025-05-10 10:31:49
推荐回答(2个)
回答1:

将1234依次存入一个char型数组内,自定义一个全排列列函数进行4个数字的全排列运算,但每次输出时只取后3位即可达到目的。代码如下:

#include "stdio.h"
void myfun(char *p,int i,int n){//自定义全排列函数
int j,t;
if(i-n)
for(j=i;j<=n;j++){
t=p[i],p[i]=p[j],p[j]=t;
myfun(p,i+1,n);//全排列递归调用
t=p[i],p[i]=p[j],p[j]=t;
}
else
printf(++p[5]%10 ? "%s " : "%s\n",p+1);
}
int main(int argc,char *argv[]){
char a[6]="1234";//多声明一个元素a[5]用来控制每行输出10个数
myfun(a,0,3);//用数组名和起末下标调用
if(a[5]%5)
printf("\n");
return 0;
}

运行结果:

回答2:

没时间调试了……这样应该没错#include int main (){int i,j,k,ans=0,f[5];for (i=1;i<=4;i++){//记录第一位f[i]=1;//标志这个数用过for (j=1;j<=4;j++){//记录第二位f[j]=1;for (k=1;k<=4;k++) if (f[i]==0) ans++;f[j]=0;}f[i]=0;}printf ("%d\n",ans);getchar ();return 0;}