新手求教。C语言中输出1到8的所有排列。写了个程序,但是有错,看了15分钟没看出来。

作者&投稿:吴瞿 (若有异议请与网页底部的电邮联系)
求用c++/c语言编写一个输入n输出1~n的所有排列(千万不是排列数哦)的...~

#include
#include
using namespace std;
int main()
{
int n;
cout << "Input n" << endl;
// 输入n
cin >> n;
// 这里可以自己做输入错误检测
// 给数组动态分配大小
int* a = new int[n];
// 给数组赋值(要排列的数据源)
for(int i = 1; i <= n; i++)
{
a[i - 1] = i;
}
do{
// 依次输出每个数
for(int i = 0; i < n; i++)
{
cout << a[i] << " ";
}
// 换行
cout << endl;
}
// 做排列计算(C++ stl函数)
while (next_permutation(a,a+n));
// 记得释放
delete[] a;
return 0;
}
运行结果如下:

#include
#include
main()
{
int a[20],i,t,j;
int index;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<9;i++)
{
index=i;
for(j=i+1;j<10;j++)
{
if(a[j]<a[index])
index=j;
t=a[index];
a[index]=a[i];
a[i]=t;
}
}
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
getch();
}

if(A!=B&&B!=C&&C!=D&&D!=E&&E!=F&&F!=G&&G!=H&&H!=A)
不能这样连续

你程序功能是什么?要不要这么麻烦,直接写到子函数去调用就行了!

新手求教。C语言中输出1到8的所有排列。写了个程序,但是有错,看了15...
答:if(A!=B&&B!=C&&C!=D&&D!=E&&E!=F&&F!=G&&G!=H&&H!=A)不能这样连续

c语言问题,新手求教
答:include<stdio.h> void main(){ int a[5]={12,5,7,8,14},i,k;for(i=0;i<2;i++){ k=a[i];a[i]=a[5-i-1];//数组大小为5,下标是从0开始,到4结束,所以你的程序下标超了 a[5-i-1]=k;} for(i=0;i<5;i++)//输出5个数才对 printf("%d ",a[i]);printf("\...

c语言的高手求教、我是新手
答:include <stdio.h>int main(){ int a = 35, b = 126; printf("%d %d\n", a, b); printf("%c %c\n", a, b);}

...这个程序输出8,10 为什么呢??C语言新手求教
答:变量 i 初始化位010,表示位8进制,8进制的10对应是进制就是8。C语言中:一般以0开始后面还有数字的话,就是8进制,范围是0-7。

c语言新手求教
答:scanf("%f,%f,%f",a,b,c);你输入这三个数的时候 有用逗号隔开吗? 如 1,2,3 回车 你试试 还不行的话 追问把。

等一个C语言高手,新手求教 用主函数产生10个1-100的随机数放进一个数 ...
答:include<stdio.h>#include<stdlib.h>#includevoid op(int *a,int *max, int *min){int i;*max = a[0],*min = a[0];for(i = 1;i<10;i++) {if(*max a[i]) *min = a[i];}}int main(){int i,a[10],max,min;srand(time(0));for(i =0;i<10;i++) a[i] =...

C语言新手求教
答:首先你要明白getchar()方法呢,是得到一个字符,也就是说你输入2473,相当于是4个字符,循环4次。那么当getchar接受到第一个字符2呢,转换成ASCII码,就是50-50,执行case0,那么在case0结束后没有break,所以就一直执行case1\case2,一直到有break,才完成本次。所以当输入2时,输出的应该是66。

新手求教 c语言 编程
答:先读入h和r 然后计算体积(例如6升)然后,20升来判断 如果 算出来的体积大于20 那么直接输出1 否则 如果 20升能整除算出来的体积 就输出 (20 整除 体积)否则 (输出 20升 整除体积+1)因为只学了pascal,所以附上pascal代码,你可以找人翻译下 Varh,r,s:real;k:integer; begin read(h,r)...

C语言完全新手求教,让3个数字倒着输出
答:e=10,f=1,所以g=1+2*10+3+100=124。之前的b,c,d,e,f都是没问题的,你拿到了三个数字:b是个位,d是十位,f是百位,现在你要的结果是变成b是百位,d是十位,f是个位。所以g应该是这样表示:g=f+10*d+100*b了。(我也没想明白你最初的g=f+d*10+b+100是怎么来的。。)...

c语言新手求教
答:// 职称补贴Date birthday;// 出生日期}Teacher;typedef struct _Node {Teacher teacher;struct _Node *next;}Node;typedef Node *LinkList;void LinkList_Insert(LinkList *list, const Teacher *teacher){Node *node, *temp;node = (Node *)malloc(sizeof(Node));strcpy(node->teacher.id, ...