1. 两个int型相除要得到double
int a=3;
int b=2;
double c=a/b;
结果c=1;
事实上/是取余。
如何得到double或float型呢。
方法1:(隐式转化)
int a=3;
int b=2;
double c=a*1.0/b;
结果c=1.5
因为数据类型沿着低级向高级转化,一旦出现高级类型,数据运算过程都是转化成最高级的类型运算。
方法2:(强制转化)
int a=3;
int b=2;
double c=(double)a/b;
道理同上。
2输出格式
输出宽度setw(int n)
填充setfill(char c)
对齐方式 右对齐setiosflags(ios::right) 左对齐setiosflags(ios::left)
setiosflags(ios::fixed)<<setprecisoin(int n)<< 设置浮点数输出的精度
下面是一道练习题
附上ac代码
#include<iostream>
#include<iomanip>
#include<algorithm>
using namespace std;
class times
{
int hour;
int minute;
int second;
public:
times(){}
void settime(int a,int b,int c)
{
hour=a;
minute=b;
second=c;
}
void showtime()
{
cout<<hour<<":"<<setw(2)<<setfill('0')<<setiosflags(ios::right)<<minute<<":";
cout<<setw(2)<<setfill('0')<<setiosflags(ios::right)<<second<<endl;
}
};
int main()
{
int a,b,c;
times one;
while(cin>>a>>b>>c)
{
if(a>12||a<0)
a=12;
if(b>60||b<0)
b=0;
if(c>60||c<0)
c=0;
one.settime(a,b,c);
one.showtime();
}
}