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(); } }