题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2071
这道题是简单题,我尝试用了C++做这道题,主要还是了解了一下C++的输出格式(使用流操作算子)怎么用。C++ 中常用的输出流操纵算子都是在头文件 iomanip 中定义的;要使用这些流操纵算子,必须包含该头文件。百度查了之后学到了几个比较常用的:
fixed 以普通小数形式输出浮点数;
scientific 以科学计数法形式输出浮点数;
setprecision(n)设置输出浮点数的精度为 n。在使用非 fixed 且非 scientific 方式输出的情况下,n 即为有效数字最多的位数,如果有效数字位数超过 n,则小数部分四舍五人,或自动变为科学计 数法输出并保留一共 n 位有效数字。在使用 fixed 方式和 scientific 方式输出的情况下,n 是小数点后面应保留的位数。
❤❤在笔记最下方的代码有这些使用流操作算子的使用例子❤❤
代码如下:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int t, n;
double max, arr[100];
cin>>t;
while (t--)
{
cin>>n;
for(int i = 0; i<n; i++)
cin>>arr[i];
max = arr[0];
for (int i = 1; i<n; i++)
if (max<arr[i])
max = arr[i];
cout<<fixed<<setprecision(2)<<max<<endl;
}
return 0;
}
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int n=141;
//1) 分别以十六进制、十进制、八进制先后输出 n
cout<<"1)"<<hex<<n<<" "<<dec<<n<<" "<<oct<<n<<endl;
double x=1234567.89,y=12.34567;
//2)保留5位有效数字
cout<<"2)"<<setprecision(5)<<x<<" "<<y<<" "<<endl;
//3)保留小数点后面5位
cout<<"3)"<<fixed<<setprecision(5)<<x<<" "<<y<<endl;
//4)科学计数法输出,且保留小数点后面5位
cout<<"4)"<<scientific<<setprecision(5)<<x<<" "<<y<<endl;
//5)非负数显示正号,输出宽度为12字符,宽度不足则用 * 填补
cout<<"5)"<<showpos<<fixed<<setw(12)<<setfill('*')<<12.1<<endl;
//6)非负数不显示正号,输出宽度为12字符,宽度不足则右边用填充字符填充
cout<<"6)"<<noshowpos<<setw(12)<<left<<12.1<<endl;
//7)输出宽度为 12 字符,宽度不足则左边用填充字符填充
cout<<"7)"<<setw(12)<<right<<12.1<<endl;
//8)宽度不足时,负号和数值分列左右,中间用填充字符填充
cout<<"8)"<<setw(12)<<internal<<-12.1<<endl;
cout<<"9)"<<12.1<<endl;
return 0;
}
程序的输出结果是:
1)8d 141 215
2)1.2346e+06 12.346
3)1234567.89000 12.34567
4)1.23457e+06 1.23457e+01
5)***+12.10000
6)12.10000****
7)****12.10000
8)-***12.10000
9)12.10000