有关C 的问题,高手们帮帮忙!!!!
作者:管理员 来源:新浪爱问 日期:2008-04-16
好像我问的都是C 问题,没办法,不懂啊!
以下程序个人感觉没问题,但就是不行,帮帮忙啊!!!求字符串的单词和字母个数。
#include<iostream>
using namespace std;
int main()
{
char str[81];
cin>>str;
int i,j=0,k=0;
for(i=0;str[i]!='\0';i )
{
j=j 1;
if(str[i]==' ')k=k 1;
}
cout<<"字母数为:"<<j-k<<endl;
cout<<"单词数为:"<<k 1<<endl;
return 0;
}
电脑问题网给出的最佳答案
cin从输入队列中读取字条串,直到遇到空白符(回车,换行,空格)为止。故str中只保存了一个单词。
应该使用getline(cin,str)或者cin.getline(str,80)
其他回答
你错误的原因是因为你没有理解用cin输入字符时结束的标志,用cin从输入流提取数据,遇空格就终止。比如说你输入I LOVE那么它只读取一个字符,存放在字符数组元素str[0],然后在str[1]中存放\'\'。因此用cout输出时,只输出一个字符\'I\',这就是你错误的原因。可以该成:
#include<iostream>
using namespace std;
int main()
{
char str[80];
cin.getline(str,80) ;
//cin>>str;
int i,j=0,k=0;
for(i=0;str[i]!=\'\';i )
{
j=j 1;
if(str[i]==\' \')k=k 1;
}
cout<<\"字母数为:\"<<j-k<<endl;
cout<<\"单词数为:\"<<k 1<<endl;
return 0;
}
cin和cin.getline()读数据的区别:用cin读数据时以空白字符(包括空格、tab、回车键)作为终止标志,而用cin.getline()读数据时连续读取一系列字符,可以包括空格。用cin可以读取C 的标准类型的各类型数据,而用cin.getline()只用于输入字符型数据。
愿与你一起成长.