2.2C+基础知识 .15 例:赋值运算 X=3: x=y=3;/∥等价于y=3;xy;这种赋值方式不能用于初始化 (2)自增自减:+, ·前置:先自增或自减,然后参与表达式运算: -后置:先参与表达式运算,然后自增或自减 不要在同一语句中包含一个变量的多个+或一,因为它们的解释在C/C+标准中没有 规定,完全取决于编译器的个人行为.另外,也不要出现y=x+*×;以及类似的语句。 例2.3自增自减运算. x4+;/等价于x=x41: +×;/等价于x=x+1 y=X++ X=X41;y=x*3 (3)复合赋值运算符:+、-=、*=、/=、% 例:复合赋值运算。 int x 什等热手: int a,b,c,d,e,f; 8901 d e=f aj /f-li,e-li,d-11 .2:∥or2 ·逗号运算符: 表达式1,表达式2 (①)先计算表达式1,再计算表达式2,并将表达式2的值作为整个表达式的结果 例2.4逗号运算(注意运算的优先级!) int a=2,b; 凸注记:为了连免由运算优先级所导致的低饭错误,建议多使用小括号 ·位运算符:按二进制位进行运算 http://math.ecnu.edu.cn/-jypan
2.2 C++ 基础知识 · 15 · 例: 赋值运算 1 x=3; 2 x=y=3; // 等价于 y=3; x=y; 这种赋值方式不能用于初始化 (2) 自增自减: ++, ‐‐ 前置: 先自增或自减, 然后参与表达式运算; 后置: 先参与表达式运算, 然后自增或自减; 不要在同一语句中包含一个变量的多个 ++ 或 ‐‐, 因为它们的解释在 C/C++ 标准中没有 规定, 完全取决于编译器的个人行为. 另外, 也不要出现 y=x++*x; 以及类似的语句. 例 2.3 自增自减运算. 1 x++; // 等价于 x=x+1; 2 ++x; // 等价于 x=x+1; 3 y=x++*3; // 等价于 y=x*3; x=x+1; 如果是 y=x++*x, 则结果怎样? 4 y=++x*3; // 等价于 x=x+1; y=x*3; (3) 复合赋值运算符: +=、‐=、*=、/=、%= 例: 复合赋值运算. 1 int x 2 x+=3; // 等价于 x=x+3; 3 x/=3; // 等价于 x=x/3; 4 5 int a, b, c, d, e, f; 6 a = 5; 7 b = a + 3; // b=8 8 a = a + (c=6); // c=6; a=11; 9 d = e = f = a; // f=11, e=11, d=11 10 e *= d; // e=121 11 f /= c ‐ 2; // f=? (1 or 2) • 逗号运算符: ✞ ☎ 表达式1 , 表达式2 ✝ ✆ (1) 先计算 表达式 1, 再计算 表达式 2, 并将 表达式 2 的值作为整个表达式的结果. 例 2.4 逗号运算 (注意运算的优先级!) 1 int a=2, b; 2 a = 3*5, a+10; // a=12 or 15? 3 b = (3*5, a+10); // b=? b 注记:为了避免由运算优先级所导致的低级错误, 建议多使用小括号. • 位运算符: 按二进制位进行运算 http://math.ecnu.edu.cn/~jypan 仅供课堂教学使用,请勿外传
.16 第二讲C+编程基础 &、、(异或)、~(取反)、<(左移)、>(右移) 例2.5二进制位运算 short cl,c2,c3,c4,c5,c6; g: D 1111111111111810 C4-a bi / gg00890088081g11 ·求字节数运算符 sizeof(变量) //返回指定变量所占的字节数 51zeof(数据类型)∥返回存储单个指定数据类型的数据所需的字节数 sizeof(表达式)/∥返回存储表达式结果所需的字节数 例2.6 sizeof举例 int a,b,c,d; 型数据所需的字节数 2:1ze8f85;∥件储装达或装采所考的字节数 d sizeof(3.0L 5); 2.2.6常用数学函数 需加人cmath头文件:#include<cmath> 绝对值 abs(x) 平方根 sqrt(x) 指数函数 exp(x) 29 pow(x,y) 对数函数 1og(x),1og18(x) 取整函数 ceil(x),floor(x),round(x),trunc(x) 二角函数 sin,cos,tan,asin,acos,atan 双曲三角函数 sinh,cosh,tanh,asinh,acosh,atanh http://nath.ecnu.edu.cn/-jypan
· 16 · 第二讲 C++ 编程基础 &、|、^ (异或)、~ (取反) 、<< (左移)、>> (右移) 例 2.5 二进制位运算 1 short a=5; // a : 00000000 00000101 2 short b=14; // b : 00000000 00001110 3 4 short c1,c2,c3,c4,c5,c6; 5 c1 = a & b; // : 00000000 00000100 6 c2 = a | b; // : 00000000 00001111 7 C3 = ~ a; // : 11111111 11111010 8 C4 = a ^ b; // : 00000000 00001011 9 C5 = a << 3; // : 00000000 00101000 10 C6 = a >> 2; // : 00000000 00000001 • 求字节数运算符: ✞ ☎ sizeof(变量) // 返回指定变量所占的字节数 sizeof(数据类型) // 返回存储单个指定数据类型的数据所需的字节数 sizeof(表达式) // 返回存储表达式结果所需的字节数 ✝ ✆ 例 2.6 sizeof 举例 1 int a, b, c, d; 2 a = sizeof(b); // 变量 b 所占的字节数 3 b = sizeof(int); // 存储单个 int 型数据所需的字节数 4 c = sizeof(3 + 5); // 存储表达式结果所需的字节数 5 d = sizeof(3.0L + 5); 2.2.6 常用数学函数 需加入 cmath 头文件: #include <cmath> 绝对值 abs(x) 平方根 sqrt(x) 指数函数 exp(x) x y pow(x,y) 对数函数 log(x), log10(x) 取整函数 ceil(x), floor(x), round(x), trunc(x) 三角函数 sin, cos, tan, asin, acos, atan 双曲三角函数 sinh, cosh, tanh, asinh, acosh, atanh http://math.ecnu.edu.cn/~jypan 仅供课堂教学使用,请勿外传
2.3C+简单输入输出 .17 例2.7数学函数举例 #include <iostream> 2 #include<cmath>:/∥数学数库文件 space std; double x,y; cout<"cei1(3.5)="<ce11(3.5)<end1; cout <(3.5) or(3.5)<endl cout <<"trunc(3.5)="<<trunc(3.5)<<endl; 13 return 0; 41 2.3C+简单输人输出 2.3.1输人输出语句 ·C+输入/输出: cin>变量名或字符串;/输入 cout<《变量名或字符串;/输出 ·输人运算符与输出运算符:>》《< ·字符串中可以包含转义字符,常见的转义字符有 1a响铃 r回车 反斜杠 1b退后一格 1t水平制表符 1·单引号 n换行 v垂直制表符 1”双引号 2.3.2操纵符 ·操纵符:控制输出格式.常用的操纵符有(需加入头文件tinclude<iomanip>) 操作符 含义 endl 插入换行符,并刷新流(将缓冲区中的内容刷入输出设备) setw(n) 设置域宽 fixed 使用定点方式输出 scientific 使用指数形式输出 setfill(c) 设置填充,c可以是任意字符,缺省为空格, setprecision(n) 设置输出的有效数字个数, 若在fixed或scientific后使用,则设置小数位数 left 左对齐 right 右对齐(缺省方式) http://math.ecnu.edu.cn/-jypan
2.3 C++ 简单输入输出 · 17 · 例 2.7 数学函数举例 1 #include <iostream> 2 #include <cmath> // 数学函数库文件 3 using namespace std; 4 int main() 5 { 6 double x, y; 7 cout << "max(1.2,3.1)=" << max(1.2,3.1) << endl; 8 cout << "min(1.2,3.1)=" << min(1.2,3.1) << endl << endl; 9 cout << "ceil(3.5)=" << ceil(3.5) << endl; 10 cout << "floor(3.5)=" << floor(3.5) << endl; 11 cout << "round(3.5)=" << round(3.5) << endl; 12 cout << "trunc(3.5)=" << trunc(3.5) << endl; 13 return 0; 14 } 2.3 C++ 简单输入输出 2.3.1 输入输出语句 • C++ 输入/输出: ✞ ☎ cin >> 变量名或字符串; // 输入 cout << 变量名或字符串; // 输出 ✝ ✆ • 输入运算符与输出运算符: >> << • 字符串中可以包含转义字符, 常见的转义字符有 \a 响铃 \r 回车 \\ 反斜杠 \b 退后一格 \t 水平制表符 \' 单引号 \n 换行 \v 垂直制表符 \" 双引号 2.3.2 操纵符 • 操纵符: 控制输出格式. 常用的操纵符有 (需加入头文件 #include <iomanip>) 操作符 含义 endl 插入换行符, 并刷新流(将缓冲区中的内容刷入输出设备) setw(n) 设置域宽 fixed 使用定点方式输出 scientific 使用指数形式输出 setfill(c) 设置填充, c 可以是任意字符, 缺省为空格, setprecision(n) 设置输出的有效数字个数, 若在 fixed 或 scientific 后使用, 则设置小数位数 left 左对齐 right 右对齐 (缺省方式) http://math.ecnu.edu.cn/~jypan 仅供课堂教学使用,请勿外传
.18. 第二讲C+编程基础 showpoint 显示小数点和尾随零(即使没有小数部分) ·操纵符的作用范围: 。setw仅对紧随其后的输出起作用: ,其它操纵符:至下一个同类型命令为止 例2.8操纵符举例 doub1exa153456789 cout<<"y="《<y<<end1 <<x <endli cout <"y="<<y <endl cout <<left: cout <"x= cout <setw(20)<<"x= 2.4程序示例 例2.9(银行贷款问题 已知贷款总额为L万元,贷款年利率为,贷款年限为y年,计算每月需偿还的金额和偿还总额.假设 采用等额本息方式,则每月的还款额为(万元) Lrm(1+rm)i2y (1+rm)2w-1 其中rm表示月利率,即rm=r/12.(思考:每月还款额公式是怎么推导出来的?)(ex82_1oan.cpp) 例2.10(显示系统当前的时间 头文件ctime中函数time(o)或time(NULL)返回当前时间与1970年1月1日零时的时间差(格 林威治时间,以秒为单位),北京时间:格林威治时间+8小时. (exe2_showtime.cpp) 2.5上机练习 练习2.1编写程序,从键盘读入圆柱体的半径和高度,计算其表面积和体积,并将结果在屏幕上输出 (元取值3.14159265)(程序取名hw0201.cpD) 练习2.2银行提供两种5年定期存款方式:(1)一年期方式:年利率1%每年到期后,自动将本年度的 利息加入本金中:(2)五年期方式:年利11%,五年后本金和利息一起归还储户.编写程序,分别 以两种方式存人100万元,输出五年后各得多少?(程序取名hw82B2.cpp) http://nath.ecnu.edu.cn/-jypan
· 18 · 第二讲 C++ 编程基础 showpoint 显示小数点和尾随零 (即使没有小数部分) • 操纵符的作用范围: setw 仅对紧随其后的输出起作用; 其它操纵符: 至下一个同类型命令为止. 例 2.8 操纵符举例 1 double x=3.14159, y=12.3456789; 2 cout << setprecision(5); 3 cout << "x=" << x << endl; 4 cout << "y=" << y << endl; 5 6 cout << fixed; cout << setprecision(5); 7 cout << "x=" << x << endl; 8 cout << "y=" << y << endl; 9 10 cout <<left; 11 cout << "x=" << setw(20) << x << "MATH" <<endl; 12 cout << setw(20) << "x=" << x << "MATH" <<endl; 2.4 程序示例 例 2.9 (银行贷款问题) 已知贷款总额为 L 万元, 贷款年利率为 r, 贷款年限为 y 年, 计算每月需偿还的金额和偿还总额. 假设 采用等额本息方式, 则每月的还款额为(万元) Lrm(1 + rm) 12y (1 + rm) 12y − 1 , 其中 rm 表示月利率, 即 rm = r/12. (思考: 每月还款额公式是怎么推导出来的?)(ex02_loan.cpp) 例 2.10 (显示系统当前的时间) 头文件 ctime 中函数 time(0) 或 time(NULL) 返回当前时间与 1970 年 1 月 1 日零时的时间差(格 林威治时间, 以秒为单位), 北京时间: 格林威治时间 + 8 小时. (ex02_showtime.cpp) 2.5 上机练习 练习 2.1 编写程序, 从键盘读入圆柱体的半径和高度, 计算其表面积和体积, 并将结果在屏幕上输出. (π 取值 3.14159265)(程序取名 hw02_01.cpp) 练习 2.2 银行提供两种 5 年定期存款方式: (1) 一年期方式: 年利率 10%, 每年到期后, 自动将本年度的 利息加入本金中; (2) 五年期方式: 年利率 11%, 五年后本金和利息一起归还储户. 编写程序, 分别 以两种方式存入 100 万元, 输出五年后各得多少?(程序取名 hw02_02.cpp) http://math.ecnu.edu.cn/~jypan 仅供课堂教学使用,请勿外传
25上机练习 .19 练习2.3修政程序ex2_showtime.cpp,使得输出的时、分、秒都占两个位置,如:14点25分10秒显 示为14:25:18,9点8分5秒显示为89:88:85.(程序取名hw02_83.cpp) 仅供课堂数学使用,情勿外传 http://math.ecnu.edu.cn/-jypan
2.5 上机练习 · 19 · 练习 2.3 修改程序 ex02_showtime.cpp, 使得输出的时、分、秒都占两个位置, 如: 14 点 25 分 10 秒显 示为 14:25:10, 9 点 8 分 5 秒显示为 09:08:05. (程序取名 hw02_03.cpp) http://math.ecnu.edu.cn/~jypan 仅供课堂教学使用,请勿外传