当前位置: 首页 > 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题库

http://www.xdnf.cn/news/1004203.html

相关文章:

  • SAP ERS 自动化发票
  • ubuntu 挂载问题
  • COHERENT XPRV23光电接收器控制软件
  • 观点 | 技术型企业在参数堆砌下的品牌识别度缺失
  • 5分钟玩转Swagger UI:Docker部署+静态化实战
  • 零基础设计模式——行为型模式 - 观察者模式
  • 将创世SD NAND FLASH设计在无人机上,可从硬件适配、接口与协议兼容、性能匹配
  • 不同环境的配置文件
  • OpenCV 图像几何形状绘制
  • 回归-嵌入式与c概念
  • docker 单机部署redis集群(一)
  • 股指期货入门基础知识
  • 【笔记】Blockchain
  • 微机原理与接口技术,期末习题(一)
  • 突破微小目标检测瓶颈:智能无人机在蓝莓产量估算中的解决方案
  • Smart Form Adobe form
  • 华为云Flexus+DeepSeek征文|基于华为云一键部署的 Dify LLM 应用平台三种方案横评:单机、知识库增强、高可用容器化比较
  • DAY 52 神经网络调参指南
  • yolov5环境配置
  • linux共享内存解析
  • 完整 Bootloader 框架
  • 智能制造:解读41页中小工厂数字化新路径【附全文阅读】
  • CoSchedule Headline Analyzer:分析标题情感强度与可读性
  • 在 Flask 或 Tornado 中返回渲染后的页面内容
  • 爱普生SG5032EEN差分晶体振荡器的特点
  • Element UI 表格el-table宽度不能自适应的问题解决方法
  • 深度学习编译器
  • Docker搭建2FAuth服务
  • 数据结构 (树) 学习 2025年6月12日12:59:39
  • Vue 生命周期