|
20鱼币
题目要求写一个字符统计程序
要求 A:统计用户输入的所有字符个数;
要求 B:统计不同的字符个数,并打印出来;
要求 C:找出出现次数最多的字符。
#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]++; // ch为整型变量,getchar输入的是字母,所以此时下标为ascii码值
input_num++;
}/*输入f,ascii[102]=ascii[102]+1,ascii[102]==1,input_num=1;
输入c,ascii[99]==1,input_num=2;
输入c,ascii[99]==2,input_num=3;
输入c,ascii[99]==3,input_num=4;
输入c,ascii[99]==4,input_num=5;*/
for (i = 0; i < NUM; i++)
{
if (ascii[i])//由于ascii[]数组初始化为0,只有i为输入的ascii码值时,ascii[i]!=0,才能进入if语句
{
count[j++] = i;
if (ascii[i] > ascii[max])
{
max = i;
}/*i为99时,ascii[99]==4,count[0]=1(count[]=={1}),j++,ascii[99] > ascii[0](即4>0),max=99;
i为115时,ascii[115]==1,count[1]=1(count[]=={1,1}),j++,ascii[105] < ascii[99],max不变*/
}
}
printf("你总共输入了%d个字符,其中不同的字符个数有%d个。\n", input_num, strlen(count));
printf("它们是:%s\n", count);//这一句没有懂,count应该是一个{1,1,....}的数组吧,怎么变成字符数组的呢?
printf("出现次数最多的字符是\'%c\',它总共出现了%d次。\n", max, ascii[max]);
return 0;
}
这道题真可谓是初见杀,真实感受到了智商的差距;
每一个函数我都认识,组合到一起就蒙圈了,小萌新瑟瑟发抖 ;
也搜了论坛里的讲解,但是有点笼统,我实在 是看不懂,于是自己硬着头皮捋了一晚上,总算有点思路了;
但是倒数第二个printf还是不太明白,各位大神救救孩子吧 |
|