当前位置: 首页 > news >正文

第四讲 基础运算之小数运算

第四讲 基础运算之小数运算


🎯 一、认识操纵器 manipulate

操纵器是C++中控制输入/输出格式的特殊工具,通过 <<>> 与流对象(如 cout)交互。分为两类:

  1. 无参数操纵器:如 endl(换行+刷新缓冲区)、hex(十六进制输出)。
  2. 带参数操纵器:如 setw(n)(设置字段宽度)、setprecision(n)(控制精度),需包含 <iomanip> 头文件。
#include <iostream>
#include <iomanip>
using namespace std;
int main() {cout << hex << 255;          // 输出 ff(十六进制)cout << setprecision(3) << 3.14159; // 输出 3.14
}

类别操纵器功能示例
数值进制hex/oct/dec十六/八/十进制输出cout << hex << 15;f
浮点控制fixed固定小数显示cout << fixed << 3.0;3.000
setprecision(n)设置小数位数cout << setprecision(2) << 3.141;3.14
宽度与对齐setw(n)设置字段宽度(仅对下一个输出生效!cout << setw(5) << "Hi"; Hi
left/right左/右对齐cout << left << setw(5) << "Hi";Hi
setfill(c)填充字符(默认空格)cout << setfill('*') << setw(5) << "Hi";***Hi
符号显示showpos显示正数的 +cout << showpos << 42;+42
布尔值boolalpha输出 true/false(非1/0)cout << boolalpha << true;true
流控制endl换行 + 刷新缓冲区(性能慎用!cout << "Hello" << endl;

⚠️ 避坑指南

    1. setw 的陷阱:如 setw(n) 只影响紧接的下一个输出。
    cout << setw(5) << "A" << "B";  // "A"占5位,"B"不受影响 → "    AB"
    
    1. endl 的性能问题:频繁使用会刷新缓冲区,降低效率,可用 '\n' 代替。
    1. 进制切换后忘记恢复:如 hex 会一直生效,直到改为 dec
    cout << hex << 15;     // 输出 f
    cout << 16;            // 输出 10(仍是十六进制!)
    cout << dec;           // 记得切回十进制!
    

🎯 三、小数运算

3.1 常用词汇

单词含义备注
fixed固定的/fɪkst/
set设置/set/
precision精确、精度/prɪˈsɪʒn/
setprecision设置精度组合词
manipulate操纵、操作器/məˈnɪpjuleɪt/

💡 重要特性:

  • setw设置的宽度如果小于字段宽度会失效;
  • fixed固定的意思,在cout时,强制的把float类型和double类型输出小数,而不是科学计数法的形式。
  • setprecision(),设置输出的小数的小数点后显示几位,比如setprecision(2)表示小数点后显示两位。

3.2 案例实操

💡小学的运算注意以下问题:

  • 小数和小数或小数和整数运算,得到的结果是小数。
  • 整数和整数运算,得到的结果是整数。
  • 整数转换成小数的方法是乘1.0;
  • 注意存储数据时使用的数据类型;eg:整数用int 、小数用double

1031 - -【入门】温度转换(课堂讲解)
题目描述: 编一程序,将摄氏温度换为华氏温度。公式为:f=9/5*c+32。其中f为华氏温度,c是摄氏温度。
输入: 输入一行,只有一个整数c
输出: 输出只有一行,包括1个实数。(保留两位小数)
样例: 输入50 输出 122.00
参考程序

#include <iostream>  //输入输出流头文件
#include <iomanip>   //通过此头文件调用控制符
using namespace std;
int main(){int c;//摄氏度 double f;//华氏度 //输入摄氏度ccin>>c;//计算华氏摄氏度f = 9.0 / 5 * c + 32;//输出结果;四舍五入保留2位小数;cout<<fixed<<setprecision(2)<<f<<endl;return 0;
} 

1337 - -【入门】求花坛的面积
题目描述: 龙湖校区有一个圆形花坛,量得花坛周围的篱笆长是x米,请问该花坛的面积是多少平方米?(假设π=3.14)(5.2.99)
输入: 一个小数x
输出: 花坛的面积(结果保留2位小数)
样例: 输入:18.84 输出:28.26
说明: 圆的面积和周长求解公式分别如下;
圆的面积S = π * 半径 * 半径;(π读作pài,π = 3.1415926…,在具体的题目中π的值精确到小数点后多少位,取决于具体的题目):圆的周长C = π * 2 * 半径;
参考程序:

#include<iostream>
#include<iomanip>
using namespace std;
int main(){//已知条件:圆形花坛篱笆周长是x米//求:该花坛的面积 double p=3.14,r,x,s;cin>>x;//通过周长求半径r:x=p*2*r;r=x/p/2;//求半径s=r*r*p;//求面积cout<<fixed<<setprecision(2)<<s<<endl;
}

1345 – 【入门】玫瑰花圃
题目描述: 有一块n * n(n>=5,且n是奇数)的红玫瑰花圃,由n * n个小正方形花圃组成,现要求在花圃中最中间的一行、最中间的一列以及4个顶点处种植粉色玫瑰,请问粉玫瑰占地面积占整个玫瑰花圃总面积的百分比是多少?
如n=5,花圃形状如下,粉玫瑰占地百分比 = 13/25 = 52.0%
在这里插入图片描述

如n=7,花圃形状为如下,粉玫瑰占地百分比 = 17 / 49 = 34.7%
在这里插入图片描述

输入: 一个整数n (n>=5,且n是奇数)
输出: 粉玫瑰占总玫瑰园的百分比,结果保留1位小数,显示为百分比的形式
样例: 输入:5 输出:52.0%
参考程序:

#include<iostream>
#include<iomanip>
using namespace std;
int main(){
//读题可得求粉玫瑰的计算公式为:n*2-1+4
//由于题目的输出要求是以百分比的形式输出,所以计算结果要扩大100倍;int n;cin>>n;double s;s=(n*2-1+4)*100/(n*n);cout<<fixed<<setprecision(1)<<s<<"%"<<endl;
}

💡 本节课后作业在OJ小组内发布 伊娃编程OJ题库

相关文章:

  • 无外接物理显示器的Ubuntu系统的远程桌面连接(升级版)
  • 深度学习编译器
  • Java中wait()为何必须同步调用?
  • 手机射频功放测试学习(一)——手机线性功放的主要测试指标
  • Cesium距离测量、角度测量、面积测量
  • Redis初识第一期
  • 1.线性表的顺序存储-顺序表
  • VAS5081电动工具专用3-8节串联电池监控芯片奇力科技
  • Javascript 单例模式
  • 【QT】 QGraphicsItem 获取点坐标的几种方法
  • vue3项目移动端实现进度条可手动滑动控制进度和点击控制进度
  • 我的世界进阶模组开发教程——开发机械动力附属模组(2)
  • 使用Python和PyTorch框架,基于RetinaNet模型进行目标检测,包含数据准备、模型训练、评估指标计算和可视化
  • linux 安装 opencv源码4.5.4记录
  • DeepSeek 助力 Vue3 开发:打造丝滑的日历(Calendar),日历_学习计划日历示例(CalendarView01_20)
  • Python图像处理基础(六)
  • (十三)计算机视觉中的深度学习:特征表示、模型架构与视觉认知原理
  • 第29节 Node.js Query Strings
  • ETLCloud中数据脱敏规则的使用技巧
  • Linux中source和bash的区别
  • 怎么做卡盟网站免费/百度发广告需要多少钱
  • 网站建设的盈利模式/十大免费最亏的免费app
  • 软件开发公司专业的有哪些/seo是什么意思seo是什么职位
  • 企业建站公司推荐/培训总结心得体会
  • 做的新网站网上搜不到/互联网营销工具
  • 十堰网站开发/微信朋友圈广告30元 1000次