我写了一个代码来列出字符串中字符的出现.它有效,但我想知道,是否有可能把它整理好?例如下降.听起来很简单,但我在这里使用了两个数组,我不知道怎么可能将它们链接起来,这样它们就不会在排序后搞砸了.我读到在C++中我可以使用std :: pair但是从我发现的内容来看,在C++中没有替代品.
是不是只有一个简单的方法来排序它,以便我可以有一个大多数/最不受欢迎的字符列表?我开始进入冒泡排序,但无论我选择什么,两个阵列之间仍然没有链接.
这是代码:
#include#include #include main(int argc, char **argv) { int hits[26] = { 0 }; char letters[26] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; char *line; int i; printf("Write the line:\n"); scanf("%25[^\n]", line); for (i = 0; i < strlen(line); i++) { if (!isalpha(line[i])) continue; hits[(int)(tolower(line[i]) - 'a')]++; } for (i = 0; i < 26; i++) { printf("%c is showing up %d times.\n", letters[i], hits[i]); } return 0; }
也许我的方法中有一个简单的错误,如果有的话,那么我很乐意指出它.