用C语言写一个程序,输入一个整数n,输出1,2,3,4.……n的全排列
这个只支持数字,字母的不支持
#include
#define MAXN 100
int a[MAXN] = {0};
int flag[MAXN] = {0};
void comb(int m,int s)
{
int i;
if (s>=m)
{
for (i=0;i<m;i++)
printf("%d",a[i]);
printf("
");
}
else
{
for (i=1;i<=m;i++)
if (flag[i]==0)
{
flag[i]=1;
a[s]=i;
comb(m,s+1);
a[s]=0;
flag[i]=0;
}
}
}
void main()
{
int N;
printf("Input N:
");
scanf("%d",&N);
comb(N,0);
}
#include
main()
{
int a1,a2,a3,a4,a5,a6,a7,a8,a9,n,t=0;
scanf("%d",&n);
for(a1=1;a1<=n;a1++)
if(n==1){printf("%d
",a1);t=t+1;}
else
for (a2=1;a2<=n;a2++)
if(a2!=a1)
{if(n==2) {printf("%d%d
",a1,a2);t=t+1;}
else
for (a3=1;a3<=n;a3++)
if(a3!=a2&&a3!=a1)
{if(n==3) {printf("%d%d%d
",a1,a2,a3);t=t+1;}
else
for (a4=1;a4<=n;a4++)
if(a4!=a3&&a4!=a2&&a4!=a1)
{if(n==4) {printf("%d%d%d%d
",a1,a2,a3,a4);t=t+1;}
else
for (a5=1;a5<=n;a5++)
if(a5!=a4&&a5!=a3&&a5!=a2&&a5!=a1)
{if(n==5) {printf("%d%d%d%d%d
",a1,a2,a3,a4,a5);t=t+1;}
else
for (a6=1;a6<=n;a6++)
if(a6!=a5&&a6!=a4&&a6!=a3&&a6!=a2&&a6!=a1)
{if(n==6) {printf("%d%d%d%d%d%d
",a1,a2,a3,a4,a5,a6);t=t+1;}
else
for (a7=1;a7<=n;a7++)
if(a7!=a6&&a7!=a5&&a7!=a4&&a7!=a3&&a7!=a2&&a7!=a1)
{if(n==7) {printf("%d%d%d%d%d%d%d
",a1,a2,a3,a4,a5,a6,a7);t=t+1;}
else
for (a8=1;a8<=n;a8++)
if(a8!=a7&&a8!=a6&&a8!=a5&&a8!=a4&&a8!=a3&&a8!=a2&&a8!=a1)
{if(n==8) {printf("%d%d%d%d%d%d%d%d
",a1,a2,a3,a4,a5,a6,a7,a8);t=t+1;}
else
for (a9=1;a9<=n;a9++)
if(a9!=a8&&a9!=a7&&a9!=a6&&a9!=a5&&a9!=a4&&a9!=a3&&a9!=a2&&a9!=a1)
{if(n==9) {printf("%d%d%d%d%d%d%d%d%d
",a1,a2,a3,a4,a5,a6,a7,a8,a9);t=t+1;}
}
}
}
}
}
}
}
}
printf("共有%d种
",t);
getchar();getchar();
}
自己辛辛苦苦写的,用dev c运行成功
#include <string.h>
char string[9]="12345678";
int used[9]={0};
char output[9];
int length;
void F(int d)
{
int i;
for(i=0;i<=length;i++)
{
if(!used[i])
{
used[i]=1;
output[d]=string[i];
if(d==length)
{
for(d=0;d<length;d++)
printf("%c ",output[d]);
printf("%c\n",output[length]);
}
else
F(d+1);
used[i]=0;
}
}
}
int main(void)
{
int n;
scanf("%d",&n);
string[n]=0;
length=strlen(string)-1;
F(0);
return 0;
}
考虑输出速度问题,最多支持8个数字,需要更多自己改相应的数据
用C语言写一个程序,输入一个整数n,输出1,2,3,4.……n的全排列
output[d]=string[i];if(d==length){ for(d=0;d<length;d++)printf("%c ",output[d]);printf("%c\\n",output[length]);} else F(d+1);used[i]=0;} } } int main(void){ int n;scanf("%d",&n);string[n]=0;length=strlen(string)-1;F(0);return 0;} 考虑输出速度问...
C语言题目。编写程序实现,用户输入一个整数n,计算n!并输出。
int main(){ int n,i,j;scanf("%d",&n);int sum=1;for(i=1;i<=n;i++){ sum=sum*i;} printf("%d\\n",sum);return 0;}
C语言 编写一个程序,用户输入一个整数n后打印出由* '号组成的n行n列的...
int n,i,j;printf("请输入数字:");scanf("d%",&n);for(i=0;i<n;i++){ for(j=0;j<n;j++){ printf("* ");} printf("\\n");} 插进去就ok了
如何用C语言编写程序输入一个正整数n,编程序输出从2到n间的所有完数...
C语言实现如下:include<stdio.h> void main(){ int i,j,k,n;scanf("%d",&n); \/\/输入一个正整数n for(i=2;i<=n;i++){ k=0;for(j=1;j<=i-1;j++)if(i%j==0) k+=j;if(k==i) printf("%d\\n",i);\/\/判断i的所有真因子之和是否等于i,是则输出i。} } 注意:建...
输入一个整数n(n<10),输出n的阶乘。
您好,很高兴为您作答。可以使用如下的C语言程序代码实现:include <stdio.h> int main() { int n, fac = 1;printf("请输入一个正整数n(n<10):\\n");scanf("%d", &n);for (int i = 1; i <= n; i++) { fac *= i;} printf("fac = %d\\n", fac);return 0;} 这里使用...
C语言 编写一个程序,输入一个正整数,求出它是几位数。
思路:求一个正整数n的位数可以先定义一个变量num,并初始化为0,依次把该整数n除以10,直到其为0为止,并且每除一次10,变量num的个数就自加1,最后num的值就是该整数n的位数。参考代码:include <stdio.h>int main(){ int n,num=0;scanf("%d",&n);while(n){num++;n\/=10;}printf("...
编写程序,输入一个整数n,寻找大于n的那个最小的完数。c语言?
include <stdio.h> int main(){ int n, i, j, sum = 0;while (scanf("%d", &n) != EOF){ j = n;do { ++n;sum = 0;for (i = 1; i < n; i++){ if (n % i == 0)sum += i;} } while (sum != n);printf("大于%d的最小完数为:%d\\n", j, n);} } ...
c语言编程 输入正整数n,求n是几位数
以下是一个简单的C语言程序,可以实现这个功能:```include <stdio.h> int main() { int n;int count = 0;printf("请输入一个正整数:");scanf("%d", &n);while (n >= 10) { n \/= 10;count++;} count++; \/\/ 加上最高位 printf("%d 是 %d 位数。\\n", n, count);return ...
用C语言编写程序从键盘输入一个正整数数n,输出n!
要编写一个C语言程序,从键盘输入一个正整数n并计算其阶乘(n!),可以通过两种方法实现:递归和循环。首先,我们来看递归的方法:c include \/\/ 递归函数计算阶乘 int factorial(int n) { if (n <= 1)return 1;else return n * factorial(n - 1);} int main() { int n, result;printf(...
用c语言怎样编写:输入一个整数n,求n的各位数字的之积程序
include<stdio.h> int main(void){ int n,m;printf("整数n:");scanf("%d",&n);m = 1;while(n){ m *= n % 10;n \/= 10;} printf("各个位数之积:%d\\n",m);return 0;}