第4课 赋值运算和算术运算


前言

一个程序主题(主函数内)通常包含四部分:定义数据、输入变量、计算处理、输出结果。
从现在开始,我们将逐一介绍计算处理方法。
C++语言中有很多运算符和表达式,本课值涉及到C++语言中最基本的赋值运算和算术运算。
本课主要介绍了以下内容。
(1)基本赋值运算=。
(2)基本算术运算包括+、-、、/、%、++和﹣-。
(3)复合算术赋值运算包括+=、-=、
=、/=和%=。
(4)混合运算优先级是"短向长转"、“右向左转”,强制类型转换加括号。


一、内容提纲

这里只给出内容提纲,具体参见《C++案例趣学》对应的部分。

1. 基本赋值运算符(=)

2. 算术运算七兄弟(+, -, *, /, %, ++, --)

算术运算符使用时需要注意的几点
(1)两个整数做除法运算,那么结果一定是整数。计算方法是舍去小数点后的数据,仅取整数部分。
 例如:表达式11/4的值为2,1/3的值为0。
若要使结果是小数,可以将其中一个表示为小数形式,例如:1.0/2结果就是小数,保留1位小数那就是0.5。
(2)求余运算符的结果是整型数据相除的余数,它不能用于实型数据的运算。
 例如:表达式3%4的值为3,9%4的值为1,100%4的值为0。
(3)+和-还可以作为单目运算符,用于表示数值常量的符号,如+7和-7。
(4)双目运算符两侧操作数的类型要相同,否则,系统会自动进行类型转换,使它们具有相同的数据类型,然后再进行运算。转换的原则一般是转换成占存储空间较大的数据类型。
 例如:10.0/4时,系统会先自动将其转换为10.0/4.0,再算出其值为2.5。
 (5)算术表达式中乘号不能省略,和数学不同,例如5(fahr-32)/9是错误的,会报错: [Error] called object is not a function or function pointer,需要改成5*(fahr-32)/9;

3. 运算符简写

简写含义
a+=ba=a+(b)
a-=ba=a-(b)
a*=ba=a*(b)
a/=ba=a/(b)
a%=ba=a%(b)

注意:a-=b+c相当于a=a-(b+c),所以,这里的括号是必要的。

4. 混合运算

  1. 多类型混合运算扽的类型转换规则是“短向长转”,即占用字节少的类型向占用字节多的类型转换。
  2. 赋值时的类型转换规则是“右向左转”,即等号右边的类型向等号左边的类型转换。

5. 取整的4种方法

(1)四舍五入法:与数学规定相同。如3.4四舍五入后为3,3.5四舍五入后为4。
(2)截尾取整法:无论小数部分是多少都要舍掉。如3.5截尾为3,-3.5截尾为﹣3。
(3)下取整法:取小于或等于数据的最大整数。在 C ++中,用 floor(数据)函数完成下取整。如 floor(3.5)结果为3, floor(-3.5)结果为﹣4。
(4)上取整法:取大于数据的最小整数。在 C ++中,用 ceil (数据)函数完成上取整。如 ceil(3.4)结果为4, ceil(-3.4)结果为﹣3。
注意
要想使用floor(数据)和 ceil (数据)函数,需要在程序开头添加如下头文件:# include < cmath >


二、课后练习

3. 长方形面积计算问题

输入长方体的长a、宽b(单位:cm),计算长方形面积。

4. 球的体积计算问题

已知球的半径r,球的体积计算公式为 4 3 π r 3 \frac4 3\pi r^3 34πr3。输入球的半径r,求球的体积V。

5. 温度转换问题

摄氏温度是目前世界使用广泛的一种温标,用符号 ∘ C ^\circ\text{C} C表示。华氏温度也是用来计量温度的单位,用符号 ∘ F ^\circ\text{F} F表示,两者间的转换公式如下
c = 5 9 ( f − 32 ) c=\frac 5 9 (f-32) c=95(f32)
f = 9 5 c + 32 ) f=\frac 9 5 c +32) f=59c+32)
输入一个表示华氏温度的单精度实数(f>=459.67),计算其对应的摄氏温度,要求精确到小数点后3位。

代码如下(示例):

#include<iostream>
#include<iomanip>
using namespace std;

// 输入一个表示华氏温度的单精度实数(f>=459.67),
// 计算其对应的摄氏温度,要求精确到小数点后3位。
// 摄氏度 = (华氏度 - 32°F) ÷ 1.8
// 华氏度 = 32°F + 摄氏度 × 1.8
int main() {
	float f, c;
	cout << "请输入一个华氏温度:";
	cin >> f;
	c = (f-32)*5/9;
	cout << fixed << setprecision(3) << c << endl;
	return 0;
}

运行测试程序如下:
请输入一个华氏温度:100
37.778

6. 学期成绩评定问题

卡路这学期学习了 “人工智能入门” 课程。这门课程的总成绩计算方法是:
总成绩=作业成绩x30%+小测成绩x20%+期末考试成绩x50%
期末考试后,卡路想知道这门课程自己最终能得多少分。
输入:一行,包含3个非负整数 a 、b 、c(a 、b 和 c 均大于0且小于100),即卡路的作业成绩、小测成绩和期末考试成绩,3个数据用空格分隔。
输出:一行,包含一个整数,即卡路这门课程的总成绩,满分也是100分。
输入样例:
100 100 98
输出样例:
99
代码如下:

#include<iostream>
using namespace std;

// 总成绩=作业成绩x30%+小测成绩x20%+期末考试成绩x50%
// 输入:作业成绩、小测成绩和期末考试成绩
int main() {
	int exercise, midterm_test, end_test;
	float final_score;
	cout << "输入作业成绩、小测成绩和期末考试成绩:" << endl;
	cin >> exercise >> midterm_test >> end_test;
	final_score = exercise*0.3 + midterm_test*0.2 + end_test*0.5;
	cout << int(final_score) << endl;
	return 0;
}

运行程序,测试如下:
输入作业成绩、小测成绩和期末考试成绩:
100 100 98
99


  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值