単純に、隣り合う二文字を入れ替えた。

#include <stdio.h>
#include <string>
using namespace std;

int factorial(int i) {
 if(i==0) {
  return 1;
 }
 else if(i>0) {
  return i*factorial(i-1);
 }
 else {
  exit(1);
 }
}

void main() {
 int i,n;
 string s;
 char t;

 printf("enter the number of sequence\n");
 scanf("%d",&n);
 for(i=0;i<n;i++) s+=(char)(i+'a');
 for(i=0;i<factorial(n);i++) {
  printf("%d: %s\n",i,s.c_str());
  t=s[i%n]; s[i%n]=s[(i+1)%n]; s[(i+1)%n]=t;
 }
}