课课通第2单元第1课-COUT语句

实践巩固

1.写出程序的运行结果

#include<iostream>
using namespace std;
int main(){
    int a,b,c,d,ans;
    a = 2; b = 3; c = 4;
    d = a - b;    //2-3=-1
    a = d + c;    //-1+4=3
    ans = a * b;    //3*3=9
    cout << "Ans = " << ans << endl;
    return 0;
}

结果:Ans = 9

__________________________________________________________

2.体会实数的输出格式

#include<iostream>
#include<iomanip>       //格式函数的头文件
using namespace std;
int main(){
    cout << 10.0 / 6.0 << endl;
    cout << fixed << setprecision(8) << 10.0 / 6.0 << endl;
    return 0;
}

输出:

1.66667

1.66666667

为什么是1.66667呢,在C++中float能够精确到小数点后6位,并且四舍五入。这里涉及float的存储。

十进制中的9,在二进制中的表示形式是1001,这里也就告诉我们,表示十进制中的一位数在二进制中需要4bit,所以我们现在float中具有24bit的精度,所以float在十进制中具有24/4=6,所以在十进制里,float能够精确到小数点后6位。同理,具有53bit精度的double类型能够精确到小数点后13位。

fixed    以普通小数形式输出浮点数
setprecision(n)    设置输出浮点数的精度为 n。

在使用非 fixed 且非 scientific 方式输出的情况下,n 即为有效数字最多的位数,如果有效数字位数超过 n,则小数部分四舍五人,或自动变为科学计 数法输出并保留一共 n 位有效数字.

在使用 fixed 方式和 scientific 方式输出的情况下,n 是小数点后面应保留的位

3.体会把整数以不同进制的形式输出

#include<iostream>
#include<iomanip>
using namespace std;
int main(){
  int a;
  cin >> a;
  cout << "dec:" << dec << a << endl; //以十进制形式输出整数
  cout << "hex:" << hex << a << endl; //以十六进制形式输出整数
  cout << "oct:" << setbase(8) << a << endl; //以八进制形式输出整数
  return 0;
}

输入:17

输出:

dec:17

hex:11

oct:21

ios::dec 以10进制表示整数
ios::hex 以16进制表示整数
ios::oct 以8进制表示整数
ios::showbase 为整数添加一个表示其进制的前缀
ios::internal 在符号位和数值的中间插入需要数量的填充字符以使串两端对齐
ios::left 在串的末尾插入填充字符以使串居左对齐
ios::right 在串的前面插入填充字符以使串居右对齐
ios::boolalpha 将bool类型的值以true或flase表示,而不是1或0
ios::fixed 将符点数按照普通定点格式处理(非科学计数法)
ios::scientific 将符点数按照科学计数法处理(带指数域)
ios::showpoint 在浮点数表示的小数中强制插入小数点(默认情况是浮点数表示的整数不显示小数点)
ios::showpos 强制在正数前添加+号
ios::skipws 忽略前导的空格(主要用于输入流,如cin)
ios::unitbuf 在插入(每次输出)操作后清空缓存
ios::uppercase 强制大写字母

以上每一种格式都占用独立的一位,因此可以用“|”(位或)运算符组合使用。调用setf/unsetf或flags设置格式一般按如下方式进行:

cout.setf(ios::right | ios::hex); //设置16进制右对齐
cout.setf(ios::right, ios::adjustfield); //取消其它对齐,设置为右对齐

默认包含的头文件均为:

#include <iomanip>
#include <iostream>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值