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

要C语言(VC++6.0)的,完整版的,不是要结果。。。是要那个计算的程序,用多层循环做,真心求教还有个解题思路

将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;
}

运行结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-22
没时间调试了……这样应该没错#include <stdio.h>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;}
第2个回答  2013-09-22
#include <stdio.h>
int main(int avgr,char* argc[])
{
int x1,x2,x3;
int muncount=0;
for(x1=1;x1<=4;x1++)
{
for(x2=1;x2<=4;x2++)
{
for(x3=1;x3<=4;x3++)
{
printf("%d%d%d\n",x1,x2,x3);
muncount+=1;
}
}
}
printf("总共有%d个\n",muncount);

}
无法解释解题思路
第3个回答  推荐于2018-02-20
#include<stdio.h> /* 头文件*/
int main(void) /*主函数*/{ int i,j,k,w=0; /*定义四个变量*/
for(i=1;i<=4;i++) /*一层循环*/{
for(j=1;j<=4;j++) /*二层循环*/{
if(i==j) /* if+continue 作用排除1至4中重复出现数字 */
continue; for(k=1;k<=4;k++) /* 三层循环-----完成三位数*/{
if(k==i || k==j) /* if 语句同理二循环中排除重复作用*/
continue;
w++; /* 每次完成三位数时 w变量加一*/
}
} }
printf("%d\n",w); /* 输出变量w次数*/
return 0; /* 返回一个0数值*/} 一楼你不应该歧视新手,而且你的代码是错误的,丢人,你看看你最后一个是444,一共就1 2 3 4 这四个数,你哪来的三个4,本来没好意思说你,给你狂的,谭浩强的书并不是好的,他只是局限于理论,建议多看看国外的c书,会受益匪浅!本回答被网友采纳
第4个回答  2013-09-22
#include<stdio.h>
int main()
{
int i,j,k;
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)
printf("%d,%d,%d\n",i,j,k);
}
}
}
return 0;
}本回答被网友采纳
相似回答