为什么会是wrong answer 呢 急!!!

来源:百度知道 编辑:UC知道 时间:2024/06/20 12:14:44
#include <iostream>
using namespace std;
int main()
{
char t[1000];
int i,w;
while (cin.get(t,1000))
{
w=0;
for(i=0;i<1000;i++)
{
if(t[i]!='\0'&&(t[i]!=' '||t[i]!='\t'||t[i]!='\r'||t[i]!='\n'))
{
if(i==0||(t[i-1]==' '||t[i-1]=='\t'||t[i-1]=='\r'||t[i-1]=='\n'))
t[i]=t[i]-32;
w++;
}
}
for(i=0;i<w;i++)
cout<<t[i];
cout<<endl;
for(i=0;i<1000;i++)
t[i]='\0';
}
return 0;
}

问题是:对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。在字符串中,单词之间通过空白符分隔,空白符包括:空格(' ')、制表符('\t')、回车符('\r')、换行符('\n')。

Input
输入一行:待处理的字符串(长度小于80)。

Output
输出一行:转换后的字符串。

Sample Input

if so, you already have a google ac

(t[i]!=' '||t[i]!='\t'||t[i]!='\r'||t[i]!='\n')这个语句无论t[i]为何值结果都是true啊。你想好了。
还有,你没有判断该字母是否为单词首字母的语句。我的程序用flag==1表示是首字母。首字母的大小写判断也要加上。
你看这个更好些吧:
#include <iostream>
using namespace std;
int main()
{
char str[1000];
int i,flag;
cin>>str;
flag=1;
for(i=0;str[i]!='\0';i++)
{
if(str[i]==' '||str[i]=='\t'||str[i]=='\r'||str[i]=='\n')
{
flag=1;
continue;
}
if(str[i]>='a' && str[i]<='z')
if(flag==1)
{
str[i]-=32;
flag=0;
}
}

cout<<str<<endl;
return 0;
}

注意这句话:"如果单词的首字母不是大写字母"
试试这个字符串:
Abc

if(t[i]!='\0'&&(t[i]!=' '||t[i]!='\t'||t[i]!='\r'||t[i]!='\n'))
{
if(i==0||(t[i-1]==' '||t