【发布时间】:2019-01-01 03:27:56
【问题描述】:
我正在尝试解决一个问题,即给定一串小写字符,我必须将元音转换为大写。
(e.g. : "mother" becomes "mOthEr".)
我的尝试
#include <iostream>
#include <cstring>
using namespace std;
char s[20];
int i;
int main()
{
cin.getline(s,20);
for(i=0;i<20;i++)
{
if(s[i]=='a'||s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u')
s[i]=toupper(s[i]);
}
cout<<s;
}
谁能告诉我我做错了什么?我在其中一项测试中得到错误答案。
【问题讨论】:
-
如果字符串超过 20 个字符怎么办? (如 Supercalifragilisticexpialidocious)
-
你能展示你失败的测试,以及你的输出吗?
-
您的代码非常糟糕地混合了 C 和 C++。使用正确的 C 或 C++,但不要像这样混合它们。
-
@hellow 这不是很有帮助的建议,因为我猜他们是初学者,根本不知道什么是好的或坏的做法。尤其是当许多老师试图通过先教 C 来教 C++ 时。
-
也许是这样,但恐怕评论部分没有留下很好的解释空间。我试试看:char[20] 不好。您最多可以存储 19 个字符(第 20 个字符是
\0终止符),并且您可以非常轻松地阅读超出限制的内容。请改用std::string:) 看看en.cppreference.com/w/cpp/string/basic_string/getline 的示例,使用带有字符串的getline 来读取任意长度。