您的位置:首页 > 文旅 > 美景 > 中国十大热门网站_网页版微信怎么截图_泉州百度seo公司_国外引擎搜索

中国十大热门网站_网页版微信怎么截图_泉州百度seo公司_国外引擎搜索

2024/12/23 7:15:22 来源:https://blog.csdn.net/2401_87257864/article/details/144315636  浏览:    关键词:中国十大热门网站_网页版微信怎么截图_泉州百度seo公司_国外引擎搜索
中国十大热门网站_网页版微信怎么截图_泉州百度seo公司_国外引擎搜索

算术操作符

  • 5.1 算术操作符
  • 5.2 浮点数的除法
  • 5.3 负数取模
  • 5.4 数值溢出
  • 5.5 练习
    • 练习1:计算(a+b)*c
    • 练习2:带余除法
    • 练习3:整数个位
    • 练习4:整数⼗位
    • 练习5:时间转换
    • 练习6:⼩⻥的游泳时间
  • 6.1 连续赋值
    • 6.2 复合赋值符
  • 6.3 练习
    • 练习:交换值

5.1 算术操作符

在写代码时候,⼀定会涉及到计算。为了⽅便运算,提供了⼀系列操作符,其中有⼀组操作符叫:算术操作符。分别是: + - * / % ,这些操作符都是双⽬操作符。
注:操作符也被叫做:运算符,是不同的翻译,意思是⼀样的。

#include <iostream>
using namespace std;
int main()
{int a = 7 + 2;//加法运算int b = 7 - 2;//减法运算int c = 7 * 2;//乘法运算int d = 7 / 2;//除法运算,得到的是整除后的商int e = 7 % 2;//取余运算,得到的是整除后的余数cout << a << endl;cout << b << endl;cout << c << endl;cout << d << endl;cout << e << endl;
return 0;
}

易错点:
• / 除法的操作符,除数不能为0,如果除数为0,程序会崩溃的。
• % 取模操作符的计算结果是两个操作数进⾏除法运算后的余数。
• 取模操作符的操作数只能是整型,不能是浮点型,这个编译器会报语法错误的。

#include <iostream>
using namespace std;
int main()
{int a = 10;int b = 0;int c = a / b;float d = 6.0;float e = d % 2;return 0;
}

5.2 浮点数的除法

#include <iostream>
using namespace std;
int main()
{float x = 6 / 4;cout << x << endl;// 1float y = 6.0 / 4;// 6/4.0结果是⼀样的cout << y << endl;// 1.5return 0;
}

上⾯⽰例中,尽管变量 x 的类型是 float (浮点数),但是 6 / 4 得到的结果是 1.0 ,⽽不是
1.5 。原因就在于 整数除法是整除,只会返回整数部分,丢弃⼩数部分。
如果希望得到浮点数的结果,两个运算数必须⾄少有⼀个浮点数,这时就会进⾏浮点数除法。

5.3 负数取模

• 负数也是⽀持取模的,但是负数求模结果的正负号由第⼀个运算数(操作数)的正负号决定

#include <iostream>
using namespace std;
int main()
{cout << 11 % -5 << endl;// 1cout << -11 % -5 << endl;// -1cout << -11 % 5 << endl;// -1return 0;
}

5.4 数值溢出

前⾯我们了解到数据类型都有对应的数值范围,⽽在实际运算过程中可能会存在加法操作导致数据范围超过当前数据类型规定的范围,如下:

#include <iostream>
using namespace std;
int main()
{char a = 'Z';char b = a + 'Z';cout << b << endl;// 输出了不显⽰的内容//printf是格式化输出,后⾯章节会讲,这⾥暂不做讲解printf("%d", b);// -76,char的⼗进制内容
return 0;
}

以 char 类型为例, char 的数值范围在 -128 ~ 127 ,当字符相加超过最⼤值后,打印出来的结
果会变成负数,这与数据的存储有关

在这里插入图片描述
意识到数据类型的取值是有其范围的,那么我们在编程的时候就要选择合适的数据类型,才能得到正确的结果。正所谓:⼗年 IO ⼀场空,不开 long long ⻅祖宗。

5.5 练习

练习1:计算(a+b)*c

链接:https://www.luogu.com.cn/problem/B2008

#include <iostream>
using namespace std;
int a, b, c;
int main()
{cin >> a >> b >> c;int r = (a + b) * c;cout << r << endl;return 0;
}

练习2:带余除法

链接:https://www.luogu.com.cn/problem/B2010

#include <iostream>
using namespace std;
int a, b;
int main()
{cin >> a >> b;cout << a / b << " " << a % b << endl;
}

练习3:整数个位

链接:https://ac.nowcoder.com/acm/problem/21990

#include <iostream>
using namespace std;
int a;
int main()
{cin >> a;cout << a % 10 << endl;return 0;
}

练习4:整数⼗位

链接:https://ac.nowcoder.com/acm/problem/21991

#include <iostream>
using namespace std;
int a;
int main()
{
cin >> a;
cout << a % 100 / 10 << endl;
return 0;
}

练习5:时间转换

链接:https://ac.nowcoder.com/acm/contest/18839/1031

#include <iostream>
using namespace std;
int time;
int main()
{cin >> time;cout << time / 60 / 60 << " " << time / 60 % 60 << " " << time % 60 <<
endl;return 0;
}

解释:

  1. time除以60(1分钟有60秒)先换算出分钟数,分钟数除以60(1⼩时有60分钟)交换算
    成⼩时。
  2. time除以60(1分钟有60秒)先换算出分钟数,分钟数对60取模,就是换完⼩时后剩余的
    分钟数
  3. time对60取模,每60秒凑1分钟,还剩多少多少秒,没办法凑够⼀分钟。

练习6:⼩⻥的游泳时间

链接:https://www.luogu.com.cn/problem/P1425

#include <iostream>
using namespace std;
int main()
{int a, b, c, d;cin >> a >> b >> c >> d;int h, m;int t = c * 60 + d - a * 60 - b;//计算机出时间差,单位是分钟h = t / 60;m = t % 60;cout << h << " " << m << endl;return 0;
}

6.1 连续赋值

赋值操作符也可以连续赋值,如:

int a = 3;
int b = 5;
int c = 0;
c = b = a + 3;//连续赋值,从右向左依次赋值的。

虽然⽀持这种连续赋值,但是写出的代码不容易理解,建议还是拆开来写,这样⽅便观察代码的执⾏细节。

6.2 复合赋值符

在写代码时,我们经常可能对⼀个数进⾏⾃增、⾃减的操作,如下代码:

int a = 10;
a = a + 3;
a = a - 2;

这样代码C++给提供了更加⽅便的写法:

int a = 10;
a += 3;
a -= 2;

C++中提供了复合赋值符,⽅便我们编写代码,这些赋值符有:
在这里插入图片描述

6.3 练习

练习:交换值

链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=2064

#include <iostream>
using namespace std;
int main()
{int a = 0;int b = 0;cin >> a >> b;int c = a; //c是⼀个临时变量,作为中间变量实现交换的a = b;b = c;cout << a << " " << b << endl;return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com