请大虾来看看这个小程序,在线等答案

来源:百度知道 编辑:UC知道 时间:2024/05/17 02:58:51
#include "stdafx.h"
#include <iostream>
#include <string>
#include <conio.h>

using namespace std;

int main()
{
char a;
int char_n=0,word_n=0;
int num=0;
cout<<"enter a string:";
//cin.getline(a,sizeof(a),'\r');
while((a=getchar())!='\t')
{
char_n++;
if(a==' '||a=='\t')
{num--;}
else if(num>0)
{
word_n++;
num=0;
}

}

cout<<"word num:"<<word_n<<" char num:"<<char_n<<endl;

return 0;
}

程序目的:输入一个带空格的字符串,求出字符数和单词数;

问题:只有输入,没有输出,请大虾们在原程序上做下修改就好,不要复制人家的东西了,如果要复制,那就加上详细的注释啊··呵呵··
用vs 2005环境··

这个程序建立一个空项目就行,不需要#include "stdafx.h"的

回车符是'\n'不是'\t'

我写的:

int main()
{
string str; //利用string来实现
int word_n = 0, char_n = 0;

cout<<"enter a string:" << endl;
getline(cin, str); //获取字符

char_n = str.size(); //字符总长度

for(int i = 1; i <= str.size(); ++i) //对string中的每个字符进行判断
{
if( (str[i] == ' '|| str[i] == NULL ) && str[i-1] != ' ')
//只有遇到空格并且前面也不是空格才说明这是一个单词的结束
//string类型相等于一个很长的字符数组,最后一个字符的下一个是空字符
++word_n;
}

cout<<"word num : "<<word_n<<" char num : "<<char_n<<endl;

return 0;
}

一共有两个错误,我写在注释中了:
1.看你程序的意思,制表符'\t'也用来作为单词之间的分隔符,所以判断输入结束的条件改成回车符'\n'比较好

2.你是用num来判断分隔符的数目,所以接收到一个分隔符时当然数量要++而不是--了

3.以上两条是让程序有输出,但是输出单词数目结果比实际结果会少1,原因是在最后一个单词输入完