《c程序设计基础》qa-第二章-c程序设计基础.ppt

上传人:小飞机 文档编号:5896065 上传时间:2023-08-31 格式:PPT 页数:33 大小:889.50KB
返回 下载 相关 举报
《c程序设计基础》qa-第二章-c程序设计基础.ppt_第1页
第1页 / 共33页
《c程序设计基础》qa-第二章-c程序设计基础.ppt_第2页
第2页 / 共33页
《c程序设计基础》qa-第二章-c程序设计基础.ppt_第3页
第3页 / 共33页
《c程序设计基础》qa-第二章-c程序设计基础.ppt_第4页
第4页 / 共33页
《c程序设计基础》qa-第二章-c程序设计基础.ppt_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《《c程序设计基础》qa-第二章-c程序设计基础.ppt》由会员分享,可在线阅读,更多相关《《c程序设计基础》qa-第二章-c程序设计基础.ppt(33页珍藏版)》请在三一办公上搜索。

1、C+程序设计基础,Q&A(1)第二章北京邮电大学信通院方莉,2,Q&A,P38,2.1Q:下列变量名不合法的有哪些?为什么?A12-3、123、m123、_ 123、WhileA:A12-3:变量名中不能有-符号123:变量名不能一数字开始_ 123:变量名中不能有空格,3,Q&A,P38,2.3Q:32 位机中,int、float、double 类型在内存中各多少字节?在VC 环节下long double 变量在内存中占用多少字节?A:分别占用4、4、8 字节。long double 变量在内存中占用8 字节,和double 相同。,4,Q&A,Q:转义字符?A:ooo 1-3位8进数 xh

2、h 1-2位16进数 字符a:0 x61:0141#include using namespace std;void main()cout输出字母:x61endl;cout输出字母:141endl;cout输出字母:aendl;,5,Q&A,P39,2.10Q:下列的转义字符中哪个是不正确的?为什么?,089,0 A:089 是不正确的。因为89 不是八进制数。,6,Q&A,运算符的优先级,规律一、按照操作数个数来区分,一元运算符高于二元运算符,二元运算符高于三元运算符;规律二、按照运算符的作用来区分,级别最高的是那些不是严格意义上的运算符,次之是算术运算符,位移运算符,关系运算符,位运算符,

3、逻辑运算符,赋值运算符。此外还有两特别的地方需要注意:一、同为关系运算符,但=和!=的级别低于其它四个;二、一元运算符、条件运算符、赋值运算符是右结合的,其它的都为左结合;,Q&A,Q&A,int x=1,y=0;!x,第一种方案:c=(ab)?a:b);第二种方案:c=(a(b?a:b);第三种方案:(c=a)(b?a:b);,值为:0,x=1,y=0,i=8,j=5,k=5,9,Q&A,运算符的结合性:运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的方向处理。例子:1:int a,b=1,c=2;a=b=c;(右左)a=(b=c)2:a=b=0(左右)(a=b)=0,10,Q&A

4、,P38,2.2Q:2.2 下列表达式不正确的有哪些?为什么?A.int a=a;B.char c=102;C.char c=”abc”;D.char c=n;?A:只有表达式C 不正确。不能将字符串赋值给一个字符变量。,11,Q&A,P38,2.5Q:以下C+的操作符中,符合优先级从高到底正确排列的是_?A.+=&B.=+&C.+&=D.&+=A:A,12,Q&A,P39,2.7Q:2.7 设 a 为整型变量,表达数学关系11&a=5),13,Q&A,P39,2.12Q:2.12 若定义了double t;则表达式t=1,t+5,t+的值是多少?A:1.0,14,Q&A,P39,2.13Q:

5、2.13 若定义了double x,y;则表达式x=2,y=x+5/2 的值是多少?A:4.0,15,Q&A,P39,2.14Q:2.14 若定义了int x=100;则表达式x+100?x+100:x+200 的值是多少?A:301,16,Q&A,P39,2.15Q:2.15 若定义了int a=10,b;则计算表达式b=a|+a 后,a 的值是多少?A:10,Q:2.6 若有以下定义:char a;int b;float c;double d;则表达式 a*b+d-c 值的类型是什么?A:double,Q&A,Q&A,2.18 以下程序通过for 语句重复相加0.01 共10 次,最后判定

6、相加结果和0.1 是否相等。请写出运行的结果,并进行解释。void main()float a=0.1,b=0.0;for(int i=0;i10;i+)b=b+0.01;coutbendl;if(a=b)cout相等endl;else cout不相等endl;答案:运行结果是:0.1,不相等因为float 数在机器内部是按浮点数存放的。看到的数和机器内部的数存在差别。看到的0.1在机器内部不一定刚好是0.1。这是实数运算时必须注意的。,19,Q&A,2.19 以下程序执行的结果是什么?为什么?如果数据定义为double 类型,结果又将如何?void main()float a=5.00000

7、01,b=5.0000002;coutsetprecision(8)b-aendl;答案:0因为float 数本身的精度所限制。即使规定输出精度是8 位,也只能显示为0。定义为double 类型后,结果是9.9999999e-008。,20,Q&A,I/O流的格式控制输出 库文件 iomanip:(manipulator)常用操纵符:setiosflags(ios:left):左对齐setiosflags(ios:right)(默认):右对齐setiosflags(ios:fixed)(默认):定点方式表示浮点数与setprecision(int n)结合,控制小数点右边输出位数setiosf

8、lags(ios:scientific):指数方式显示与setprecision(int n)结合,控制指数法小数点右边输出位数,21,Q&A,setiosflags(ios:fixed)):定点方式表示浮点数与setprecision(int n)结合,控制小数点右边输出位数,22,Q&A,setiosflags(ios:scientific):指数方式显示与setprecision(int n)结合,控制指数法小数点右边输出位数,23,Q&A,常用操纵符:setfill(c):设置填充字符setw(n):设置域宽为n只对其后输出的第一个数据有效;setw(0):默认按实际输出;setw(n

9、):if n实际输出的位数,按实际输出,不损失数据精度;setprecision(int n):显示浮点数的数字个数。直接输出或setprecision(0):输出6位有效数字;若按其他精度,按设置的精度输出。,Q:隐式类型转换和cout输出 float f;f=17/7;float num=1;coutnumendl;coutfendl;A:1 2,Q&A,Q:P15,flaot和double型的数据在机器中都是以浮点数的格式存放。对于float型数据,最小的数据分辨率为1/224=0.00000059604644775390625,也就是保证7位有效数字?A:Float为单精度,内存中占4

10、个字节,有效数位是7位。,Q&A,2023年8月31日,浮点数存储,IEEE754标准:浮点数(单精度),用32bit存储双精度数,用64bit存储,e=e+27-1,e=e+210-1,M为M的小数部分,采用1.xxxx格式,并隐藏最高位的1,增加一位有效位。,参考答案,2.11 若定义了 int a=1,b=2,c=3,d=4;则表达式a+dc+b?a+b:cd?a+c:b+d 的值是多少?答案:4,参考答案,2.16 写出下列程序的运行结果?(1)#include using namespace std;void main()int a1,a2;int i=5,j=7,k=0;a1=!k

11、;a2=i!=j;cout”a1=”a1t”a2=”a2endl;答案:a1=1 a2=1,参考答案,2.16 写出下列程序的运行结果?(2)#include using namespace std;void main()int a=0;couta+endl;cout+aendl;int b=10;coutb-endl;cout-bendl;couta+bendl;,答案:0210810,参考答案,2.16 写出下列程序的运行结果?(3)#include using namespace std;void main()short i=65536;cout iendl.;/在16 位机上运行答案:

12、0,参考答案,2.16 写出下列程序的运行结果?(4)#include#include using namespace std;void main()coutsetfill(*)setw(5)1endlsetw(5)12endlsetw(5)123endl;coutsetiosflags(ios:left)setw(5)1endlsetw(5)12endlsetw(5)123endl;,答案:*1*12*1231*12*123*,参考答案,2.17 以下两个程序执行的结果分别是什么?为什么?程序 1:void main()short k=1000,p;p=k*k;coutpendl;程序2:void main()short k=1000,p;p=k*k/k;coutpendl;答案:程序 1 的结果是16960。因为计算结果超过short 的最大值,溢出了。程序2 的结果是1000。,参考答案,2.20写出下列程序的运行结果,并解释这些为运算实现的操作#includeusing namespace std;void main()Int x=0 x98FDECBA;couthexuppercase;cout(x|0 xFF)endl;cout(x0 xFF)endl;cout(x,FFFFFFBA98FDEC4598FDEC00,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号