回复 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递归多次会中断。