一、知识点
1、字母和数字的ASCII码
字符‘0’ 的ASCII码是48,字符‘1’的ASCII码是49,字符'9'的ASCII码是57
大写字母A的ASCII码是65,大写字母Z的ASCII码是90
小写字母a的ASCII码是97,小写字母z的ASCII码是122
2、确定长度数组的初始化
创建确定长度数组时,可以在后面通过大括号赋初始值
3、回车键的ASCII码是10
二、题目
1、描述
输入一个只包含小写英文字母和数字的字符串,按照不同字符统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASCII码由小到大排序输出
2、数据范围
1<= len(str) <=1000
3、输入
一个只包含小写英文字母和数字的字符串
4、输出
一个字符串,为不同字母出现次数的降序表示。若出现次数相同,则按ASCII码的升序输出
三、自己写的代码
#include<stdio.h>
int main() {
char line[1001];
int count[128] = {0};
int i = 0, max;
scanf("%s", line);
while (line[i] != '\0') {
count[line[i]]++;
i++;
}
while (1) {
max = 0;
for (i = 0; i < 128; i++) {
if (count[i] > max) {
max = count[i];
}
}
if (max == 0) {
break;
}
for (i = 0; i < 128; i++) {
if (count[i] == max) {
printf("%c", i);
count[i] = 0;
i = 128;
}
}
}
printf("\n");
return 0;
}
四、测试
五、自己写的其他代码
与三的不同之处在于使用了getchar(),可以边读边处理,就不用再建立一个字符数组来存储字符串了
#include<stdio.h>
int main() {
int c;
int count[128] = {0};
int i = 0, max;
while ((c = getchar()) != 10) {
count[c]++;
}
while (1) {
max = 0;
for (i = 0; i < 128; i++) {
if (count[i] > max) {
max = count[i];
}
}
if (max == 0) {
break;
}
for (i = 0; i < 128; i++) {
if (count[i] == max) {
printf("%c", i);
count[i] = 0;
i = 128;
}
}
}
printf("\n");
return 0;
}