双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

一个有关于C++的问题

zhangyongnihao1 zhangyongnihao1 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
录入一篇英文文章(放在字符数组a[n]中),统计单词个数。并依次输出各个单词(用指针的一维数组编程)。
假定文章不超过1000个字符,单词不超过240个。
请自我录入结束条件。
我需要一篇完整的程序,谢谢,这道题的原题还需要按照单词的长度依次输出,但是我原题的程序有错误改不了。我希望能帮我先把上面简单的程序解决了 我好改下面得代码。或者告诉我下面代码的错误。谢谢


最好是能帮我重新做一个上面简单的代码。谢谢


这是原代码:
#include <iostream>
#include <cctype>
#define N 1000
using namespace std;
int main()
{
char a[N+1], ch;
int i, j, k, m, n;
int anum[240], loc[240];
//anum[i]存放第i个单词的长度,loc[i]存放第i个单词在a[]中的开始位置
i = 0;
while ((ch=getchar())!='#')//输入
{
a[i] = ch;
i++;
}
a[i] = 0;
k = 0;
for (j=0; j <i; j++)
{
while (!isalpha(a[j]) && j <i)//排除非字符
{
j++;
}
if (j>=i)//输入最后为非字符的时候在此退出循环
{
break;
}
loc[k] = j;//记录第k个单词的位置
m=0;
while (isalpha(a[j]) && j <i)//求第k个单词的长度
{
j++;
m++;
}
anum[k] = m;//记录长度
k++;
}
j = 1;
m = k;//m=k为总的单词个数
while (m)//查询anum[],分别输出长度为1、2、3.。。的单词
{//所以只是按照单词长度和出现次序排序,没管大小,而且没动原数组
for (i=0; i <k; i++)
{
if (anum[i] == j)
{
for (n=0; n <j; n++)
{
putchar(*(a+loc[i]+n));
}
putchar('\n');
m--;
}
}
j++;
}

return 0;
}
...全文
评论 8
收藏 已收藏
分享
返回顶部
zhangyongnihao1
C++ 语言 65,214 成员 250,514 内容