
(急)求帮忙写一个C语言程序,大体就是计算一句话中各字母出现的次数,并输出一个数组
程序要求:1.使用C语言,不是C++2.输入一个指令,R代表读取一句话并将个字母出现字数保存到一数组内,P代表输出出现次数的数组,C代表清除以前读过句子的字母数,Q代表退...
程序要求:
1.使用C语言,不是C++
2.输入一个指令,R代表读取一句话并将个字母出现字数保存到一数组内,P代表输出出现次数的数组,C代表清除以前读过句子的字母数,Q代表退出程序
3.使用两个调用函数 void ReadText(int histo[], int *max)和
void DrawHist(int histo[], int max),第一个是读取句子,第二个是画出数组,histo[]是用来存放26个字母出现次数,出现次数用“|”表示,即出现一次多一个|(如图中所示),max是其中出现次数最多的字母的出现次数。
4.可以使用isalpha()和tolower()来计算出现次数和将大写字母变为小写字母。
5.不输入C指令再次输入R指令的话字母出现次数累加到原来基础上
6.不区分大小写,如果输入Hello World!,出现次数数组应是{0,0,0,1,1,0,0,1,0,0,0,3,0,0,2,0,0,1,0,0,0,0,1,0,0,0}.
测试结果应如下图
大致就是这个样子,实在没有头绪该怎么写,如果能写些注释就更好了,十分感谢 展开
1.使用C语言,不是C++
2.输入一个指令,R代表读取一句话并将个字母出现字数保存到一数组内,P代表输出出现次数的数组,C代表清除以前读过句子的字母数,Q代表退出程序
3.使用两个调用函数 void ReadText(int histo[], int *max)和
void DrawHist(int histo[], int max),第一个是读取句子,第二个是画出数组,histo[]是用来存放26个字母出现次数,出现次数用“|”表示,即出现一次多一个|(如图中所示),max是其中出现次数最多的字母的出现次数。
4.可以使用isalpha()和tolower()来计算出现次数和将大写字母变为小写字母。
5.不输入C指令再次输入R指令的话字母出现次数累加到原来基础上
6.不区分大小写,如果输入Hello World!,出现次数数组应是{0,0,0,1,1,0,0,1,0,0,0,3,0,0,2,0,0,1,0,0,0,0,1,0,0,0}.
测试结果应如下图
大致就是这个样子,实在没有头绪该怎么写,如果能写些注释就更好了,十分感谢 展开
7个回答
展开全部
读取计数清空我就不说了,我相信你能处理
说说画图,这里是这样的
一次画一条|
那么我们可以这样做,先找到26个字母里面最多的那个
然后
for(i= max; i>0; i--)
for(j=0; j<26; j++)
if( char_count[j] == i )
printf(" |");
else
printf(" ");
大概思路就是这样
说说画图,这里是这样的
一次画一条|
那么我们可以这样做,先找到26个字母里面最多的那个
然后
for(i= max; i>0; i--)
for(j=0; j<26; j++)
if( char_count[j] == i )
printf(" |");
else
printf(" ");
大概思路就是这样
更多追问追答
追问
如何输入一个不确定行列数的二维数组呢?比如这里我要建立一个A[max][26]的数组,但是max是不确定的,我在程序里这样写提示我是错误的,该如何输入呢?另外这个max是在我的读取函数里得到的,能直接套用到这个画数组的函数里么?
追答
max是根据你计算完毕每个字母有多少次得出的
这里的max是指出现最多的字母
可以一次循环得到
max = A[i]
for i 0-25
if A[i] > max
max = A[i];
读取函数得到的当然可以,有两种办法,一是用读取函数返回一个max
另外修改全局变量
还有一种就是修改main函数下的变量,用指针
我仔细看了下题,这里要求的是在读入时计算出max,因此是用指针修改main函数下的max实现的
另外这里不需要二维数组
展开全部
分为两个用例,分开实现,第一个是寻找文本或者是字符串流中某个字符出现的次数,并记录
第二个是显示,这个其实也不复杂,出现最多的那个,就是行数,列数可以根据最下面那一行算出,lz不会输出是吧,看看stdio.h中,有关于输出的功能,调查一下,做个demo最后整合到一起。
我不会写代码给你的,因为我也需要调查,设计整合优化代码然后发给你,我没那么多时间,但我可以给你一个思路。把复杂的系统分成简单小模块是设计的基础。
第二个是显示,这个其实也不复杂,出现最多的那个,就是行数,列数可以根据最下面那一行算出,lz不会输出是吧,看看stdio.h中,有关于输出的功能,调查一下,做个demo最后整合到一起。
我不会写代码给你的,因为我也需要调查,设计整合优化代码然后发给你,我没那么多时间,但我可以给你一个思路。把复杂的系统分成简单小模块是设计的基础。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个问题用低版本的编译器(比如TC3.0)容易解决,统计出结果以后可以用gotoxy函数定位输出每一个'|'。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
今天一上班,看到有这个任务。。大致看了下题目,难到是不难,就逻辑比较多
第一步,设计好数据结构
第二步,读取输入的字符串,把字符串里的数据通过一定的计算方式,把读取到的信息存入你设计好的数据结构(当然,这时的数据结构应该有了你的所有字符的 C R P的数据了)
第三部,就是负责打印了,按固定格式把你的数据结构dump出来。
要上班,代码就不写了,LZ不喜欢这样的回答,就忽略我吧。。哈哈
第一步,设计好数据结构
第二步,读取输入的字符串,把字符串里的数据通过一定的计算方式,把读取到的信息存入你设计好的数据结构(当然,这时的数据结构应该有了你的所有字符的 C R P的数据了)
第三部,就是负责打印了,按固定格式把你的数据结构dump出来。
要上班,代码就不写了,LZ不喜欢这样的回答,就忽略我吧。。哈哈
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先统计问题。逐个扫描字符串,看看是第几个字母,然后再数组相应位置累加。
二,求最值问题。扫描数组,找最大值。
三,格式化输出。有了数据,输出就简单了吧,加两个循环就行了。
二,求最值问题。扫描数组,找最大值。
三,格式化输出。有了数据,输出就简单了吧,加两个循环就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询