当前位置:首页 » 编程语言 » c语言打印排列

c语言打印排列

发布时间: 2022-03-14 20:03:30

A. c语言 打印给定字符串的所有排列

#include <stdio.h>

void pern(char s[],int k)

{int i;

char c;

if(k==2)

printf("%s ",s);

else

for(i=k;i<=2;i++)

{c=s[k];s[k]=s[i];s[i]=c;

pern(s,k+1);

c=s[k];s[k]=s[i];s[i]=c;

}

}

void print_all_permutations(char *str)

{ pern(str,0);

return;

}

int main(void)

{ char str[256] = "ABC";

print_all_permutations(str);

return 0;

}

B. C语言如何打印一个数组排列组合

N个元素中取出M个元素的所有排列
#include
<stdio.h>
#define
MAX
10int
used[MAX];
int
result[MAX];
int
M,
N;void
print()
{
int
i;
for(i
=
0;
i
<
M;
i++)
printf("%d
",
result[i]);
printf("\n");}void
Perm(int
step)
{
int
i;
if
(step
==
M)
print();
else
for(i
=
0;
i
<
N;
i++)
if
(!used[i])
{
used[i]
=
1;
result[step]
=
i
+
1;
Perm(step
+
1);
used[i]
=
0;
}}main()
{
scanf("%d
%d",
&M,
&N);
Perm(0);
}
N个元素中取出M个元素的所有组合
#include<stdio.h>#define
MAX
20int
c[MAX]
=
{0};int
M,
N;void
print()
{
int
i;
for(i
=
0;
i
<
M;
i++)
printf("%d",
c[i
+
1]);
printf("\n");}void
Comp(int
m)
{
if
(m
==
M
+
1)
print();
else
for(c[m]
=
c[m
-
1]
+
1;
c[m]
<=
N
-
M
+
m;
c[m]++)
Comp(m
+
1);}void
main()
{
scanf("%d
%d",
&M,
&N);
Comp(1);}

C. c语言代码输出排列的问题

你确定那是书上的代码???要原样输出,搞个 干啥? 相当于3空格(是缩进的说!!!)

我给个代码吧!!!

#include<stdio.h>
voidmain(){
printf("Hithere! ");
printf(". ");
printf("Butreallyit'sonlymoretext. ");
printf(" Hey,waitaminute!!Whatwasthat??? ");
printf(" 1.Abird? ");
printf("2.Aplane? ");
printf("3.Acontrolcharacter? ");
printf("? ");
system("pause");
}

D. 用C语言编程:打印由字符A、B、C、D组成的所有全排列。

#include<stdio.h>
#include<string.h>char a[20];
int lenth;
long count=0;void main()
{void move(int,int);
int i,j=0;
printf("input:");gets(a);
lenth=strlen(a);
for(i=0;i<lenth;i++)
move(j,i);//move a[i] to the front of a[j];
printf("\ntotal=%d\n",count);
}
void move(int here,int which)//move a[which] to the front of a[here];
{char b[20];
char temp;
int m,n;
if(here<lenth-1)
{if(here!=which)
{for(m=0;m<lenth;m++)
b[m]=a[m];
temp=a[which];
for(m=which;m>here;m--)
a[m]=a[m-1];
a[m]=temp;
}
for(n=here+1;n<lenth;n++)
move(here+1,n);
if(here!=which)
for(m=0;m<lenth;m++)
a[m]=b[m];
}
else
{printf("%-10s",a);
count++;}
} 运行程序时输入ABCD即可本程序可以输入任意字符序列。如12345等。

E. c语言中,如何输出一个数组的全排列!如a[3]={1,2,3} 要求输出1 2 3,1 3 2,

#include <stdio.h>
#define N 3
int a[N];
void perm(int);
void print();
void swap(int, int);
int main()r> {
int i,n;
int offset;
for(i = 0; i<N; i++)
a[i] = i + 97;
perm(0);
}
void perm(int offset)
{
int i, temp;
if(offset == N-1)
{
print();
return;
}
for(i = offset; i < N; i++)
{
swap(i, offset);
perm(offset + 1);
swap(i, offset);
}
}
void print()
{
int i;
for(i = 0; i < N; i++)
printf(' %c ',a[i]);
printf('\n');
}
void swap(int i, int offset)
{
int temp;
temp = a[offset];
a[offset] = a[i];
a[i] = temp;
}

F. 如何使用C语言编写一个打印所给数的所有排列

不用递归是因为费时间和空间
当然,数字大了pc算不过来, 本题只能输入小数, 即使递归也不会榨干系统资源, 所以在这里递归也无所谓...
不过嘛, 就这样好了...迭代美

组合

#include <stdio.h>
#include <malloc.h>
#include <time.h>
main()
{
int m,n,p=0;
char *r,*letter,c;
FILE *f=fopen("1.txt","w");
clock_t s;
scanf("%d%d",&m,&n);
r=(char*)malloc(m+1);
letter=(char*)malloc(m+1);
memset(r,0,m+1);
memset(letter,0,m+1);
s=clock();
while(1)
{
if(letter[p]==n-m+p+1)
{
p--;
if(p==-1)
break;
continue;
}
c=letter[p]++;
r[p]=c+49;
if(p==m-1)
fputs(r,f),fputc('\n',f);
else
{
p++;
letter[p]=letter[p-1];
}
}
printf("耗时%10.3f秒",(clock()-s)/1000.0);
fclose(f);
free(letter);
free(r);
}

排列
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <time.h>
int main()
{
int m,n,p=0,i;
char *letter,*pos,*r;
FILE *f=fopen("1.txt","w");
clock_t s;
puts("A(m,n):\n(注:m<=n)");
scanf("%d%d",&m,&n);
letter=(char*)malloc(m+1);
pos=(char*)malloc(m+1);
r=(char*)malloc(m+1);
memset(letter,0,m+1);
memset(pos,0,m+1);
memset(r,0,m+1);
s=clock();
while(1)
{
for(i=pos[p],i?r[i-1]=0:0;i<m;i++)
{
if(!r[i])
{
r[i]=letter[p]+49;
pos[p]=i+1;
if(p==m-1)
fputs(r,f),fputc('\n',f);
else
{
p++;
letter[p]=letter[p-1]+1;
}
break;
}
}
if(i==m)
letter[p]++,pos[p]=0;
if(letter[p]==n-m+p+1)
p--;
if(p==-1)
break;
}
printf("耗时%10.3f秒",(clock()-s)/1000.0);
fclose(f);
free(letter);
free(r);
free(pos);
return 0;
}

G. C语言实现输入一个字符串后打印出该字符串中字符的所有排列 拜托加点

啥价所有字符的所有排列,比如abc 就输出abc,acb,bac,bca,cab,cba?

H. 求个c语言程序 打印123456的排列!谢谢了!

建立一个控制台应用程序即可运行
#include <iostream>
using namespace std;

#define Type char

//交换数组中的两个元素的位置
void Swap(Type* list, int origin, int target)
{
Type temp = list[origin];
list[origin] = list[target];
list[target] = temp;
}

//产生list[currentIndex:count]的所有全排列
void Perm(Type* list, int currentIndex, int count)
{
if(currentIndex == count)
{
for(int i = 0; i < count; i ++)
cout << list[i];

cout << endl;
}
else
{
for(int i = currentIndex; i < count; i ++)
{
Swap(list, currentIndex, i);
Perm(list, currentIndex + 1, count);
Swap(list, currentIndex, i);
}
}
}

int main()
{
Type list[] = {'1','2','3', '4', '5', '6'};
Perm(list, 0, 6);
return 0;
}

I. 初学C语言,请问打印下图这种*的排列方式的语言怎么写居中排列的。

如前面的回答者所说,严格按你图中的排列在字符界面貌似真弄不出来

我做了个近似的:

代码:

#include<stdio.h>
voidmain()
{

inti,j,n;
printf("请输入要打印的行数:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=n-i;j>0;j--) //打印n-i个空格
printf("");
for(j=1;j<=2*i-1;j++)//打印2i-1个*
printf("*");
printf(" ");
}
}

热点内容
python安装依赖包 发布:2025-01-16 05:11:45 浏览:995
澳门云主机品牌服务器 发布:2025-01-16 05:06:55 浏览:768
数据库设计主要内容 发布:2025-01-16 05:02:02 浏览:12
存储过程如何修改 发布:2025-01-16 05:01:55 浏览:633
照片压缩包 发布:2025-01-16 04:56:56 浏览:742
手机存储用到多少最好 发布:2025-01-16 04:56:19 浏览:781
ftp站点不能启动 发布:2025-01-16 04:55:31 浏览:54
pythonip合法性 发布:2025-01-16 04:48:52 浏览:75
锂电池用3a的充电器是什么配置 发布:2025-01-16 04:26:43 浏览:35
好配置为什么感觉打联盟不流畅 发布:2025-01-16 04:23:02 浏览:900