我试着打印一个数字的"功率表",而不使用"e"显示它们。格式,但我不知道出了什么问题。下面是我的程序:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double num [11][11];
for (int i=0; i<=10; i++)
{
cout << "t^" << i;
}
cout << endl;
for (int row=1; row<=10; row++)
{
cout << row << "t";
for (int col=0; col<=10; col++)
{
num [row][col] = pow (row,col);
cout << num [row][col] << "t";
}
cout << endl;
}
return 0;
}
您可以使用setiosflags
函数并将std::ios_base::fixed
作为其参数来指定科学记数法(使用'e')不应该使用;您还(很可能)需要用0
作为参数来调用setprecision
。
在main
函数的开头添加这一行:
std::cout << std::setiosflags(std::ios_base::fixed) << std::setprecision(0);
一定要在代码中添加#include <iomanip>
。还要注意的是,使用这种(固定的)输出格式会在数字中的数字多于制表位宽度(通常为8个字符)时弄乱您的表。不过,处理这种情况是一个略有不同的问题。一种方法是为每列添加两个制表符,仅在第一列或前一列中的值少于8位时打印第二个制表符;像这样(假设每个制表符有8个字符):
#include <iostream>
#include <cmath>
#include <iomanip>
int main()
{
std::cout << std::setiosflags(std::ios_base::fixed) << std::setprecision(0);
double num[11][11];
for (int i = 0; i <= 10; i++) {
std::cout << "tt^" << i; // Two tabs per column
}
std::cout << std::endl;
for (int row = 1; row <= 10; row++)
{
std::cout << row << "t";
for (int col = 0; col <= 10; col++)
{
num[row][col] = pow(row, col);
if ((col == 0) || (num[row][col-1] <= 9999999)) std::cout << "t"; // Need the extra tab
std::cout << num[row][col] << "t";
}
std::cout << std::endl;
}
return 0;
}