回复 8楼 猪4321
是的
回复 6楼 pgy
不是26进制。
#include <stdio.h> #include <string.h> int len; long sum=0; char a[27],b[27]; int panduan(char *a) /* 判断字符串是否为升序 */ { char *p=a; for(;*(p+1);p++) if(*p>=*(p+1)) return 1; p=a; while(*p) /* 如有大写转成小写 */ if(*p++<97) *(p-1)+=32; return 0; } void funsuan(int n) /* 递归排字母 */ { if((strcmp(a,b))==0) {printf("%s\n",b); return; } if(n+1==len) { b[n]++; sum++; if(b[n]>'z') { funsuan(n-1); b[n]=b[n-1]+1; funsuan(n); } else funsuan(n); } else { b[n]++; if(b[n]>=b[n+1]-1) { funsuan(n-1); b[n]=b[n-1]+1; } } } int main(void) { int i; while(1) { gets(a); if(panduan(a)) printf("input error!\n"); else break; } len=strlen(a); for(i=0;i<len;i++) b[i]=96; b[i]=0; funsuan(len-1); printf("%s=%ld\n\n",b,sum); return 0; }有VC的朋友帮运行下,看输入:vwxyz 会显示什么,TC递归多次会中断。