这类题一个思路,用字符对应的ascii码做下标,按题目要求顺序打印就可以了。
for循环的i=1000,可以优化下取最多的字符次数,减少循环次数。tmp['z']也可以优化。
#include "stdio.h" #include "string.h" char str[1001] = {0}; int tmp['z'] = {0}; int main(void) { int i, j; scanf("%s", str); int len = strlen(str); for (i = 0; i < len; i++) { tmp[str[i]] ++; } for (i = 1000; i > 0; i--) { for (j = '0'; j <= '9'; j++) { if (tmp[j] == i) { printf("%c", j); } } for (j = 'a'; j <= 'z'; j++) { if (tmp[j] == i) { printf("%c", j); } } } return 0; }