PAT乙级1011(C语言实现)

大家好啊,这里是Cyber Striver的博客。今天我继续为大家带来PAT乙级的题解。


目录

题目

题解

思路

经验总结


题目


题解

#include <stdio.h>
int main()
{
	int n = 0,i=0;
	long A = 0, B = 0, C = 0;
	scanf("%d", &n);
	for (i = 0; i < n; i++)
	{
		scanf("%ld %ld %ld", &A, &B, &C);
		if (A + B > C)
			printf("Case #%d: true\n", i + 1);
		else
			printf("Case #%d: false\n", i + 1);
	}
	return 0;
}


思路

  由于这道题题解比较简单我就不再赘述,那么就简单说说我的心路历程吧。

  我第一眼看见这道题,我觉得是有点小难的。因为我以为要按他题目中所说的那样要把全部输入完后再开始打印出结果,这样就会涉及到该怎么存储这3*n个数字就会有点麻烦(其实也还好,可以使用结构体变量,然后定义一个结构体变量数组)

  但是不慌,我去测试了一下用例发现并不需要实现这样的功能,输入一组然后输出一组打印也可以实现,所以这个题就很好解决了。


经验总结

1)注意题目的整数的范围是【-2^31~2^31】而int型变量是【-2^31~2^31-1】。如果使用的是int型变量来定义三个整数的话,便会出现溢出的情况。

  【eg】在这里补充int型变量的取值范围是怎么算出来的:

①计算正数部分:

1.在一般情况下,int型变量占4个字节。一个字节占八位,故一个int型变量占32位。

2.int为有符号整型,最高位不算大小,只算符号。【正数最高位为0,负数最高位为1】

3.正数在计算机中三码相等:原码=反码=补码。

4.最大整数:01111111111111111111111111111111 ---->2^31-1。

②计算0:

+0:00000000 00000000 00000000 00000000

-0:10000000 00000000 00000000 00000000

因为0只需要一个原码,故C语言规定+0的原码为0的原码,而把-0的原码规定为最小的数的原码。

③计算负数部分:

1.在计算机中,负数是以补码的形式存储的。并存在以下关系:

  原码——(最高位不变,其余位按位取反)——反码——(反码+1)——补码

例如:分析一下-1

原码:10000000 00000000 00000000 00000001

反码:111111111 111111111 111111111 111111110

补码:111111111 111111111 111111111 111111111

原码:111111111 111111111 111111111 111111111————>-2^31+1

但是C语言规定了最小的数:

原码为:10000000 00000000 00000000 00000000————>-2^31

反码为:111111111 111111111 111111111 111111111

补码为:1 00000000 00000000 00000000 00000000

2)scanf的一些转换说明符:

 


本次博客到这里就结束了,如果你觉得我的文章还不错的话,请给我多多点赞评论哦!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值