( 全排列 ) 下面程序的功能是利用递归方法生成从 1

( 全排列 ) 下面程序的功能是利用递归方法生成从 1 到 n(n<10) 的 n 个数的全部可能的排列 ( 不一定 按升序输出 ) 。例如,输入 3,则应该输出 ( 每行输出 5 个排列 ) :

 123 132 213 231 321 312 

程序:

#include<stdio.h>
int n,a[10]; /*a[1],a[2], …,a[n] 构成 n 个数的一个排列 */
long count=0; /* 变量 count 记录不同排列的个数,这里用于控制换行 */ 
void perm(int k) 
{ 
    int j,p,t;
    if(______ ①______) 
    { 
      count++; 
      for(p=1;p<=n;p++) 
        printf("%1d",a[p]); /* "%1d" 中是数字 1,不是字母 l */ 
      printf(" "); 
      if(______ ②______) 
        printf("\n");
      return; 
    } 
    for(j=k;j<=n;j++) 
    { 
      t=a[k]; 
      a[k]=a[j];
      a[j]=t;
      ______③______; 
      t=a[k]; ______④______; 
    } 
} 
int main() 
{ 
   int i;
   printf("Entry n:\n"); 
   scanf("%d",&n); 
   for(i=1;i<=n;i++) 
     a[i]=i; 
    ______⑤______; 
}


答案
第1空:k==n
第2空:count%5==0
第3空:perm(k+1)
第4空:a[k]=a[j];a[j]=t
第5空:perm(1)

题目信息

题号:6485
题型:填空题
难度:普通