C语言内涵教程练习2参考答案.doc

C语言内涵教程练习2参考答案.doc

ID:50504962

大小:55.00 KB

页数:8页

时间:2020-03-10

C语言内涵教程练习2参考答案.doc_第1页
C语言内涵教程练习2参考答案.doc_第2页
C语言内涵教程练习2参考答案.doc_第3页
C语言内涵教程练习2参考答案.doc_第4页
C语言内涵教程练习2参考答案.doc_第5页
资源描述:

《C语言内涵教程练习2参考答案.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、练习二2.1答:语句shortj=50000;在语法上虽然没有问题,可以理解为把整数50000赋值给short型变量j,但实际上它是有问题,因为变量j的了取值范围为-32768至32767,它的值不可能为50000。程序的输出结果为:分析:以短整型有符号数的方式输出变量j的实际值时,结果为-15536,与所赋值50000相差甚远。2.2答:计算机中的数据都是编码后的数据,实际上全部为01串,因此,不同类型的数据相互赋值时至少在形态上没有任何障碍。可以用负数给不能取负值的无符号整型变量赋值。程序的输出结果为:分析:以无符号短整型的方式输出变量j的

2、实际值时,结果为65535,可见它的存储状态为16个1,而-1在计算机中的存储状态为32个1,因此,赋值操作使得变量j与-1的2个字节保持了一致。2.30xac=10×16+12=172  0253=2×82+7×8+3=171  -027=-(2×8+7)=-23  -0x20=-(2×16)=-32升序排列为-0x20<-027<169<0253<0xac2.4(一)分析:scanf函数要求用户输入三个有符号十进制整数,因此,它不会把-023中的0看作是八进制的标志,它把-0x23中的x看作是非法字符从而提前结束匹配认为用户输入了-0。(二

3、)分析:替换之后,scanf函数要求用户输入一个有符号十进制整数一个有符号八进制整数和一个有符号十六进制整数,因此,它把-023看作八进制整数,把-0x23看作合法的十六进制整数。可见,scanf函数根据格式字符匹配用户的输入数据。2.5程序如下:#includevoidmain(){longj=2147483647;printf("%ld",j+1);j=-2147483648;printf("%ld",j-1);}输出结果为:规律为:对于有符号整型,最大值加1变最小值;最小值减1变最大值。一个有符号整型变量j,一直

4、重复执行j=j+1;,变量的取值会什么情况?一直重复执行j=j–1;呢?2.6答:程序为#includevoidmain(){longj;shortk;j=128;k=128;printf("%lx",j);printf("%hx",k);j=-2;k=-2;printf("%lx",j);printf("%hx",k);}输出结果为:分析:由输出可知,当变量j和k的值为128时,j的存储状态为0x00000080k的存储状态为0x0080因此,正数的存储状态从2个字节变为4个字节时多余的字节只需补0即可。当变

5、量j和k的值为-2时,j的存储状态为0xfffffffek的存储状态为0xfffe因此,负数的存储状态从2个字节变为4个字节时多余的字节只需补1即可。语句printf(“%hx,%lx”,-2,-2);的输出结果可理解为整数-2用2个字节和4个字节存储时的十六进制形式的存储状态。也就是说可以通过类似语句的输出结果分析这道题。2.7答:程序为:#includevoidmain(){printf("%hu,%hu,%hu",-1,-2,-3);}程序的输出结果为:分析:规律为65536-1,65536-2,65536-3。2.

6、8答:以.8为例,可以用下面的程序进制测试,能编译通过没有语法错误的就是合法的。#includevoidmain(){floatf=.8;printf("%e",f);}不合法的有:12e2.0有同学用程序#includevoidmain(){floatf;scanf("%f",&f);printf("%e",f);}测试时输入12e2.0,程序运行正确,就认为12e2.0也为合法的浮点型字面量。出现这种情况与scanf函数有关,当它遇到非法字符时自动停止转换,这个例子中,scanf函数遇到小数点后就

7、停止了转换,把12e2赋值给了变量f。输入12e2.3时程序的输出依然为1.200000e+003。规律:一般形式:要有小数点,但整数部分和小数部分可以省略。指数形式:整数部分可以是整数或一般形式的浮点数,指数部分必须为整数。2.9答:程序中错误为:用scanf函数给double型变量赋值时,相对应的格式字符必须加长度修饰符l。2.10输出为:6.236.23用〝%.8f〞后的输出结果为:6.229999786.23000000用〝%.18f〞后的输出结果为:6.2299997806549072006.230000000000000400语句p

8、rintf("(3.11)%.18f+(3.12)%.18f=%.18f〞,fa,fb,fa+fb);和printf("(6.23)%.18f

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。