算法竞赛入门经典 1 实验


1.1

实验1:

printf("%d\n",3-4);  //result :-1

实验4:

printf("%d\n",8/5);  //result : 1


实验6:

printf("%.1f\n",8/5); //result : 0.0

原因:printf函数不会进行任何类型转换,它只是从内存中读出你所提供的元素的值(按照%d,%f等控制字符提示的格式)。C语言设计中,int类型一般是32bit或者16bit,而float一般是64bit,并且有可能使用科学计数保存。8/5=1 在内存中为 0000,0000,0000,0001。而且因为在静态区的原因,这段内存前后默认也是0,使用%f来读,会读64位,而且会使用科学计数法  0*2的1次方 所以结果为0。


实验7:

printf("%d\n",8.0/5.0); //result:1606416400

原因:result为浮点数 输出整形截取以double型保存的数据的后四个字节。


实验6和实验7详细原因建议阅读float与double在内存中储存的相关文章

http://blog.csdn.net/u013412165/article/details/52557483





1.5


实验A1:表达式11111*11111值是多少,把5个1改成6个1呢,9个1呢。

printf("%d\n",11111*11111); // 123454321

printf("%d\n",111111*111111); //-539247567

原因:溢出

printf("%d\n",111111111*111111111); //1653732529

原因:同上



实验A2:把实验A1中的所有数换成浮点数,结果如何?

直接输出是0,将int转化为浮点数输出后,六个1能输出正确结果,9个1不行。


实验A3:表达式sqrt(-10)的值是多少?

sqrt要求参数为非负浮点数,如果为负数,返回值不定,始终采用并返回double。


实验A4:表达式1.0/0.0、0.0/0/0的值是多少?尝试用各种方式输出。在计算的过程中系统会报错吗?

printf("%f\n",1.0/0.0);// inf 无穷大

printf("%f\n",0.0/0.0); // nan


 

实验A5:表达式1/0的值是多少?在计算的过程中系统会报错吗?

printf("%d\n",1/0); // 1606416400

实验B1:在同一行中输入12和2,并以空格分割,是否得到了预期的效果?

可以正常读取。


实验B2:在不同的两行中输入12和2,是否得到了预期的结果?

可以正常读取。


实验B3:在实验1和2中,在数值前后插入大量的空格或水平制表符,甚至插入一些空行。

可以正常读数


实验B4:把2换成字符s。

121606422582

s转化为rascal码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值