c语言的问题大家帮我看一下,把错
必须知道你输入的文章里有哪些可能是单词的分隔符,空格和换行符肯定是,主要问题是标点算不算?
如果在标点后总会加入空格,标点可以忽略;如果不是,标点也要作为分隔符。
下面是源代码,可以按照注释加入相应的分隔符。
这份代码中用了conio。h中的getch()方法,因为scanf不能知道何时输入的字符已经够了。
使用CTRL+D以结束文章输入,也可以在代码中修改(见注释)。
#include
#include
void main()
{
// 行宽度,可根据需要修改
const int ROW_LEN = 100;
// 列宽度,可根据需要修改
const int COL_LEN = 10...全部
必须知道你输入的文章里有哪些可能是单词的分隔符,空格和换行符肯定是,主要问题是标点算不算?
如果在标点后总会加入空格,标点可以忽略;如果不是,标点也要作为分隔符。
下面是源代码,可以按照注释加入相应的分隔符。
这份代码中用了conio。h中的getch()方法,因为scanf不能知道何时输入的字符已经够了。
使用CTRL+D以结束文章输入,也可以在代码中修改(见注释)。
#include
#include
void main()
{
// 行宽度,可根据需要修改
const int ROW_LEN = 100;
// 列宽度,可根据需要修改
const int COL_LEN = 100;
// 要输入的文章,总长度为ROW_LEN * COL_LEN
char szText[ROW_LEN][COL_LEN];
// nWordNum代表文章中的字数
int i, j, nWordNum;
// bWord代表当前读的位置是在单词区还是在分隔符区(用于有连续多个分隔符时,例如不小心输入两个空格)
bool bWord;
// bEot代表文章是否结束
bool bEot;
bEot = false;
// 从stdin中获得文章输入
for(i=0; i "也是分隔符,则应该这样写:
// if ( ( (szText[i][j] == ' ') || (szText[i][j] == 0x0A) || (szText[i][j] == 0x0D) || (szText[i][j] == '。
') ) && bWord )
// 预定义了两个分隔符,一个是空格,一个是标准输入流中的回车符,即0x10
if ( ( (szText[i][j] == ' ') || (szText[i][j] == 0x0A) || (szText[i][j] == 0x0D) ) && bWord )
{
// 进入分隔符区
bWord = false;
// 因为以前在单词区,所以单词记数加1
++nWordNum;
}
// 若当前字符为\0,则文章已经结束,推出循环
else if ( szText[i][j] == '\0' )
{
bEot = true;
break;
}
else
// 进入单词区
bWord = true;
}
if ( bEot )
break;
}
// 最后一步很重要,若文章最后不在分隔符区,说明最后也是一个单词,记数加1
if ( bWord )
++nWordNum;
// 输出单词记数
printf("\n共有单词数:%d\n", nWordNum);
}。
收起