我有以下程序生成乘法表。当输出达到两位数时会出现格式化问题。如何理顺柱子?
#include <iostream>
using namespace std ;
int main()
{
while (1 != 2)
{
int column, row, c, r, co, ro;
cout << endl ;
cout << "Enter the number of columns: " ;
cin >> column ;
cout << endl ;
cout << "Enter the number of rows: " ;
cin >> row ;
cout << endl ;
int temp[column] ;
c = 1 ;
r = 1 ;
for(ro = 1; ro < row ; ro ++ ){
for(co = 1; co < column ; co ++ ){
c = c ++ ;
r = r ++ ;
temp [c]= co * ro;
cout << temp[c] << " ";
}
cout << endl ;
}
system("pause");
}
}
答案 0 :(得分:3)
C ++有setw
和setfill
就是为了这个目的。 setw
设置宽度,setfill
设置填充字符。
在您的情况下,您可以使用以下内容:
#include <iostream>
#include <iomanip>
int main (void) {
std::cout << std::setw(5) << 7 << std::endl; // will output " 7".
return 0;
}
您的代码存在许多其他问题,其中至少部分内容如下所示:
column*row
(或使用二维数组)。c = c++
不是一个好主意,c++
足以增加c
。c
两次,一次for
语句本身,一次for
正文。system("pause");
是一个丑陋的黑客,其语言提供了非常好的getchar
或cin
等效。while (1 != 2)
看起来很简单错误 :-)因为1
永远不会等于2
。只需使用while (1)
或for(;;)
- 任何值得他们的盐的编码员都会知道你的意思。答案 1 :(得分:2)
cout&lt;&lt; setw(3)&lt;&lt;温度[C];
默认情况下,这会使用空格来填充,看起来就像你想要的那样。
如文档所示,您需要包含iomanip。
答案 2 :(得分:2)
您可以使用如下的流操纵器设置列元素的宽度:
cout << setw(3) << temp[c]
但这是你需要解决的问题:c = c++;
不会增加变量!
答案 3 :(得分:2)
这是旧式printf
比cout
容易得多的情况之一。将cout << temp[c] << " "
替换为printf("%2d ", temp[c])
。
我希望您在c
计算中发现了这个错误。
答案 4 :(得分:1)
您可以使用“\ t”而不是“”。