我的c++作业遇到麻烦了。
我需要一个算法,可以把一个5 (x4, x3, x2, x1, x0)位的数字,变成这样的金字塔:
x2
x3x2x1
x4x3x2x1x0
交货。=比;12345
3
234
12345
我该怎么做呢?我必须把每个数字单独拿出来并按顺序显示吗?
编辑*我这样做了,代码看起来像(对于任何可能有相同问题的人):
int num;
string str;
cout << "Type a 5-digit number: ";
cin >> num;
stringstream ss;
ss << num;
ss >> str;
char x0 = str[4];
char x1 = str[3];
char x2 = str[2];
char x3 = str[1];
char x4 = str[0];
cout << " " << x2 << endl;
cout << " " << x3 << x2 << x1 << endl;
cout << x4 << x3 << x2 << x1 << x0;
是的,你必须单独处理这些数字。
一般来说,我希望学生们试着用以下方法来解决这个问题:
-
将数字转换为字符串,然后在该字符串上索引单个字符并显示它们。有多种方法可以进行整型到字符串的转换。最简单的可能是使用
std::ostringstream
,例如(std::ostringstream() << 1234).str()
。 -
使用算术方法提取字符串的每个数字,并在传递给打印函数时将数字转换为字符。通过将数字转换成一个字符
5 -> '5'
。顺便说一下,这种转换非常简单,只需将'0'
加到数字上即可。所以,5+'0' == '5'
。'0
'是一个数字,因为在C语言家族中,字符只是小数字。
可能有许多格式化金字塔的方法,但由于赋值不需要任何灵活性,因此最简单的方法将是最好的:手动添加必要的空格。