C++若干复习要点.docx
- 文档编号:23557702
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:14
- 大小:26.78KB
C++若干复习要点.docx
《C++若干复习要点.docx》由会员分享,可在线阅读,更多相关《C++若干复习要点.docx(14页珍藏版)》请在冰豆网上搜索。
C++若干复习要点
C++语言的若干重要问题及其实例解释
朱从旭老师最后一节课的讲稿(2010年6月13日)
教学邮箱:
teacher601.z@/密码:
student
C++课考试范围:
第1-6章为主;第7-9章有12分左右;第10章文件部分(5分)
考试题型:
(见考试网站
单选题、填空题、程序阅读题、程序语句填空题、1道编程题。
考试时间、地点:
2010-06-26(17周星期六)中午1:
20~3:
00,综合实验楼404机房
(班号097162_015所有选课学生)。
●关于输出格式问题
cout.setf(ios:
:
fixed);等价于:
cout< : fixed); ――设置浮点数输出格式为定点方式。 cout.setf(ios: : scientific);等价于: cout< : scientific); ――设置浮点数输出格式为科学计数法方式。 cout.precision(n);等价于: cout< ――单独使用时是设置浮点数输出的有效数字位数为n。 cout.precision(n);/cout< cout.setf(ios: : fixed);/cout< : fixed); cout.setf(ios: : scientific);/cout< : scientific); ――precision(n)的含义是设置浮点数输出的小数点后数字位数为n。 例: precision(n)单独使用,表示输出数据取n位有效数字. doublex=123.12544;cout<<"x="< //不使用格式控制,则按浮点数默认输出形式输出。 浮点数默认输出6位有效数字,故输出结果为: 123.125 cout.precision (2);//设置输出数据保留2位有效数字 cout< 1.2e+002 cout.precision(5);//设置输出数据保留5位有效数字 cout< 123.13 cout.precision(7);//设置输出数据保留7位有效数字 cout< 123.1254 例: precision(n)与格式控制符配合使用,表示输出数保留n位小数。 doublex=123.12544; cout.setf(ios: : fixed);//设置以“定点方式”输出 cout.precision (2);//输出数据保留2位小数 cout< 123.13 cout.precision(3);//输出数据保留3位小数 cout< 123.125 cout.precision(6);//输出数据保留6位小数 cout< 123.125440 doublex=123.12544; cout.setf(ios: : scientific);//设置以“科学计数法”方式输出 cout.precision (2);//输出数据保留2位小数 cout< 1.23e+002 cout.precision(3);//输出数据保留3位小数 cout< 1.231e+002 cout.precision(6);//输出数据保留6位小数 cout< 1.231254e+002 ●关于x++,++x或x--,--x的表达式值和变量终值问题 (1)自增(自减)算符在变量后,表达式的值取变量的原值计算;自增(自减)算符在变量前,表达式的值取变量的终值(增减1后)计算。 (2)无论自增(自减)算符在变量前或在变量后,变量的终值一样。 例: x++,++x;x--,--x的使用。 #include voidmain(void) {intn=0,m; charc='A',d; doublex=4.25,y; m=n++;d=++c;y=x--; cout<<"m="< cout<<"d="< cout<<"y="< cout<<"n="< cout<<"c="< cout<<"x="< 若开始n=3;则表达式(n++)+(n++)+(n++)的值是9,表达式执行后n的终值为6. ●关于表达式求值、数据类型的问题(算符优先级、结合方向) 例: 表达式18/4*sqrt(4.0)/8值的数据类型是(double),其值是(1.0)。 解: (1)因为表达式中精度最高的参数是4.0(为浮点数),而表达式的结果是取精度最高的参数的类型;另外,当结果是浮点数时,C++自动将浮点数转化为double类型(双精度实数类型)。 (2)因18/4参与运算的两数均为整数型,故结果也为整数(即18/4的结果为4,并非4.5);sqrt(4.0)为4.0开平方,即为2.0;于是18/4*sqrt(4.0)的值为4×2.0==8.0;故18/4*sqrt(4.0)/8的值为8.0/8==1.0。 例: 若有定义“inta=7;floatx=2.5,y=4.7;”,则表达式x+a%3*(int)(x+y)%2/4的值是(2.5或2.500000)。 解: 本题涉及的算符优先级如下(从先到后): ()(int)*、/、%同为2级(见主教材p27表)+。 优先级属同一级的运算按自左到右顺序运算即可。 所以: x+a%3*(int)(x+y)%2/4x+a%3*(int)(7.2)%2/4x+a%3*7%2/4x+1*7%2/4x+7%2/4x+1/4x+0x2.5。 即结果绝对值是2.5(直接输出是2.5);如果按定点格式(fixed)输出,浮点数的输出默认保留6位小数,则为2.500000。 例: 若有定义“intm=5,y=2;”,则执行表达式y+=y-=m*=y后的y值是(-16)。 解: 本题涉及复合赋值运算符(+=,-=,*=),它们和赋值运算符的结合性一样,都是右结合性(自右往左)计算。 计算步骤阐述如下(每步应该先计算的那部分加了下划线突出): y+=y-=m*=y(m*=y即为m=m*y,此部分执行后,m为10) y+=y-=10(y-=10即为y=y-10,此部分执行后,y为-8) y+=-8即y=y+(-8)(注意此时的老y即右边的y已经是-8,故得到新y即左边的y为-16) y=-16 ●关于if语句和循环语句的条件表达、循环次数的确定 if(条件)语句; for(表达式1;条件;表达式3)语句; 下列意思等价: “条件”成立,“条件”为真,“条件”为非0值。 例: 下面for语句的循环次数是( 6)次: for(inti=0,x=0;! x&&i<=5;i++); 解: 循环条件为“! x&&i<=5”的值,当它为“真”(非0数)时执行循环体语句。 按照关系运算符、逻辑运算符的优先级,该表达式相当于“(! x)&&(i<=5)”。 即要求(! x)为非0(即x为0,这部分始终成立),同时要求“i<=5”成立,才执行循环体语句(本题的循环体语句为空语句: ;)。 当执行6次循环后,i值将变为6,这时才使得条件“i<=5”首次不成立(终止循环);故循环次数为6。 ●一个指向任何数据类型的指针变量占4字节存储空间 例: 写出下面程序输出结果: #include #include voidmain(void) {charc[8],*p[8];//1个字符类型数据占1字节,数组c有8个元素 char*p1;int*p2; float*p3;double*p4; cout< cout< } 答: 8,32(p是指针数组,有8个元素,相当于有8个指向字符型的指针变量) 4,4,4,4 ●字符串的长度等于其有效字符个数,字符串存储时所占字节数等于“字符串的长度+1”。 注意转义字符的表示。 转义字符是一个特殊字符,用‘\’开头,有: ‘\n’、‘\t’、‘\v’、‘\b’、‘\r’、‘\f’: 换行、横向跳格、纵向跳格、退格、回车、换页。 ‘\\’: 反斜杠字符本身。 ‘\’’: 单引号字符本身。 ‘\ddd’: 以1~3位8进制数ddd为ASCII码的对应字符。 ‘\xhh’: 以1~2位16进制数hh为ASCII码的对应字符。 例如: 已知字符’A’的ASCII码是十进制值65,则 ‘\101’即表示字符’A’(因为八进制数101等于十进制数65); 同理: ‘\x41’也表示字符’A’(因为十六进制数41等于十进制数65)。 又如: 字符串“LineOne\x0aLineTwo\12”的长度为(16)。 解释: 因为‘\x0a’、‘\12’各代表1个转义字符,故本字符串中共有2个转义字符,以及14个普通字符,故共有16个字符。 ●程序阅读题举例 例: 下列程序运行后输出的结果是(36)。 #include usingnamespacestd; floatcacl(float,float); voidmain() {floatx;floaty; x=4;y=3; y=cacl(y,x);//相当于y=cacl(3,4);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 若干 复习 要点