19字符串处理函数课后作业动动手最后一题,有部分疑惑
本帖最后由 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 = {0};
char count = "";
printf("请输入英文文本:");
while ((ch = getchar()) != '\n')
{
ascii++;//字符对应的ASCII码加1
input_num++;
}
for(i = 0; i < NUM; i++)
{
if(ascii)
{
count = i;
if (ascii > ascii)
{
max = i;
}
}
}
printf("你总共输入了%d个字符,其中不同的字符个数有%d个。\n", input_num, strlen(count));
printf("它们是: %s\n", count);
printf("出现次数最多的字符是\'%c\', 它总共出现了%d次。\n", max, ascii);
return 0;
}
为什么while语句中字符对应的码值加1?
for语句中if(ascii)是什么意思,以及如何得到max? 前两个问题,我想明白了。
第一ascii[]是一个数组,并且开始令所有的数都为0。因为一个字符对应的码值是不同的,在那个字符对应的码值的地方0+1……,就可以出现差异。
第二if(ascii[])里面是数组里的数,只有加过一的地方才是真,然后执行if语句,每有一个i就是一个不同的字符,进行j++记录。
但是max那个地方还没有弄懂,求解惑祸…… max的地方我也明白了:
就是从max=0开始,一旦有ascii>ascii,就更新max的值,最后出来的就是最大的。
不好意思,脑筋有点转不过来。
来一个回复,我设为最佳答案,我不会删帖。 while 语句中字符对应的码值加 1,如:ascii++ 表示索引位置就是ASCII字符编号,默认为 0
比如:ascii,ASCII编号65是 'A',如果这里 ascii = 1,表示曾经访问过 'A',如果 ascii = 0,没有访问过这个位置,所以 'A' 不存在
(这就是为什么一开始就定义 ascii,因为字符刚好 128 个)
至於 max,初始值为 0,只要有大于 max 的值,就取代 max,最后 max 一定就是最大值。
傻眼貓咪 发表于 2021-10-9 20:32
while 语句中字符对应的码值加 1,如:ascii++ 表示索引位置就是ASCII字符编号,默认为 0
比如:asc ...
大神,我的大神,嘿嘿{:10_301:}
页:
[1]