【问题标题】:Lowercase to uppercase vowels C++小写到大写元音 C++
【发布时间】: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 来读取任意长度。

标签: c++ string


【解决方案1】:

首先,如前所述,您将代码限制为最多 20 个字符,同时您可以通过使用 std::stringstd::getline() 使其更流畅并允许可变长度。你可以通过使用字符串长度函数i &lt; input.length()来做到这一点。

变量i 被声明为全局变量,这有点过头了。

您还需要让用户知道该做什么;如果按照说明运行,控制台将显示为空白,除非您编写程序,否则您不知道发生了什么。你需要像cout &lt;&lt; "Enter Line to modify: "; 这样的东西来指导用户输入一些东西。

间距和适当的命名约定是您从第一天开始就需要做的事情,这样才能成为第二天性。无法告诉你我浪费了多少时间试图弄清楚程序员正在使用什么变量,这些变量的名称有 a、b、cc 等。给你所有的变量起有意义的名字,你以后会感谢我的。

【讨论】:

  • 这个页面上的自动格式化让我很生气。我想展示:input.length();
  • #include #include using namespace std; int main() { 字符串输入; cout
  • 使用勾号“`”获取内联代码样式。要获得块代码样式,请将所有内容缩进 4 个空格。
  • 使用 ` 表示内联代码。另外:你为什么不编辑你的答案而不是写 cmets 给它?
  • Swordfish - 我多次尝试编辑答案无济于事。这就是我尝试评论路线的原因。感谢本的链接。刚从这里开始,所以我需要学习绳索。
猜你喜欢
  • 2020-10-30
  • 2012-11-13
  • 1970-01-01
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 2016-07-15
  • 1970-01-01
  • 2016-07-22
相关资源
最近更新 更多