用对角线表示写一个名字

时间:2014-02-22 18:49:12

标签: c++

我正在尝试编写一个在对角线上显示名称的程序。 我知道我应该添加一个带空格的变量,比如\ t,并在每个循环中递增它。 我试图这样做没有成功。有什么建议吗?

int main()
{
    string space = "\t";
    string firstName;
    cout << "Enter your first name:";
    cin >> firstName;
    for (int posChar = 0;
    posChar < firstName.length( );
    posChar++)
    cout << space << firstName.at(posChar) << endl;
    space=space + "\t"; // this is what I've tried, it's a long shot. 

    return 0;
}

output:
Enter your first name:Alexander
A
l
e
x
a
n
d
e
r

3 个答案:

答案 0 :(得分:3)

如果您要正确缩进代码,您会发现space=space + "\t";不属于for

此外,您应该使用空格而不是标签。

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string space;
    string firstName;

    cout << "Enter your first name:";
    cin >> firstName;

    for (int posChar = 0; posChar < firstName.length( ); posChar++)
    {
      cout << space << firstName.at(posChar) << endl;
      space = space + " ";
    }

    return 0;
}

您可以将一些代码(不一定是此代码)提交给code review。在格式化和(缺少)缩进方面,你有一些不好的做法。

答案 1 :(得分:0)

for for循环需要{}。如果没有它,您不会为每个字符添加选项卡,而是在循环完成时添加它。

如果你做一个没有块的for循环,那么只执行循环后面的命令。

答案 2 :(得分:0)

您是否忘记了代码块的开始和结束括号? 你写的循环只做

cout << space << firstName.at(posChar) << endl;

并且在完成之后它会执行一次

space=space + "\t"; // this is what I've tried, it's a long shot.

它应该是这样的:

for (int posChar = 0;
posChar < firstName.length( );
posChar++)
{
cout << space << firstName.at(posChar) << endl;
space=space + "\t"; // this is what I've tried, it's a long shot.
}