|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 coura 于 2021-10-9 20:10 编辑
中间两个循环语句完全不明白为什么??
- #include <stdio.h>
- #include <string.h>
- #define NUM 128
- int main()
- {
- int ch, i, j = 0, max = 0;
- int input_num = 0;
- int ascii[NUM] = {0};
- char count[NUM] = "";
-
- printf("请输入英文文本:");
-
- while ((ch = getchar()) != '\n')
- {
- ascii[ch]++;//字符对应的ASCII码加1
- input_num++;
- }
-
- for(i = 0; i < NUM; i++)
- {
- if(ascii[i])
- {
- count[j++] = i;
- if (ascii[i] > ascii[max])
- {
- max = i;
- }
- }
- }
-
- printf("你总共输入了%d个字符,其中不同的字符个数有%d个。\n", input_num, strlen(count));
- printf("它们是: %s\n", count);
- printf("出现次数最多的字符是\'%c\', 它总共出现了%d次。\n", max, ascii[max]);
-
- return 0;
- }
复制代码
为什么while语句中字符对应的码值加1?
for语句中if(ascii[i])是什么意思,以及如何得到max?
while 语句中字符对应的码值加 1,如:ascii[ch]++ 表示索引位置就是ASCII字符编号,默认为 0
比如:ascii[65],ASCII编号65是 'A',如果这里 ascii[65] = 1,表示曾经访问过 'A',如果 ascii[65] = 0,没有访问过这个位置,所以 'A' 不存在
(这就是为什么一开始就定义 ascii[128],因为字符刚好 128 个)
至於 max,初始值为 0,只要有大于 max 的值,就取代 max,最后 max 一定就是最大值。
|
|