课后作业S1E19最后一题,自己分析了一波,求指导
题目要求写一个字符统计程序要求 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 = { 0 };
char count = "";
printf("请输入英文文本:");
while ((ch = getchar()) != '\n')
{
ascii++; // ch为整型变量,getchar输入的是字母,所以此时下标为ascii码值
input_num++;
}/*输入f,ascii=ascii+1,ascii==1,input_num=1;
输入c,ascii==1,input_num=2;
输入c,ascii==2,input_num=3;
输入c,ascii==3,input_num=4;
输入c,ascii==4,input_num=5;*/
for (i = 0; i < NUM; i++)
{
if (ascii)//由于ascii[]数组初始化为0,只有i为输入的ascii码值时,ascii!=0,才能进入if语句
{
count = i;
if (ascii > ascii)
{
max = i;
}/*i为99时,ascii==4,count=1(count[]=={1}),j++,ascii > ascii(即4>0),max=99;
i为115时,ascii==1,count=1(count[]=={1,1}),j++,ascii < ascii,max不变*/
}
}
printf("你总共输入了%d个字符,其中不同的字符个数有%d个。\n", input_num, strlen(count));
printf("它们是:%s\n", count);//这一句没有懂,count应该是一个{1,1,....}的数组吧,怎么变成字符数组的呢?
printf("出现次数最多的字符是\'%c\',它总共出现了%d次。\n", max, ascii);
return 0;
}
这道题真可谓是初见杀,真实感受到了智商的差距;
每一个函数我都认识,组合到一起就蒙圈了,小萌新瑟瑟发抖{:10_266:} ;
也搜了论坛里的讲解,但是有点笼统,我实在 是看不懂,于是自己硬着头皮捋了一晚上,总算有点思路了;
但是倒数第二个printf还是不太明白,各位大神救救孩子吧{:9_234:} 倒数第二个printf输出的时候使用的是%s 使得结果输出为字符串了 %s是输出字符串用的 果然做题不能死扣啊,一觉起来再看,自己就能发现问题了.自我更正下:
第17行的注释表达有误,正确表述是getchar读取下一个字符,返回类型为int型,为用户输入的ASCII码或EOF.
第29行完全是看错,把i看成1了{:9_239:},原式count = i;所以count是一个{99,102}的数组才对,打印出来就是c和f了 ascii++; 这里是ascii=0+1; 把 ch 做下标里面的值 0+1 再次循环到一样字符值再+1
页:
[1]