A1065 A+B and C (64bit) (20)(20 分)
A1065 A+B and C (64bit) (20)(20 分)
Given three integers A, B and C in [-263, 263], you are supposed to tell whether A+B > C.
Input Specification:
The first line of the input gives the positive number of test cases, T (<=10). Then T test cases follow, each consists of a single line containing three integers A, B and C, separated by single spaces.
Output Specification:
For each test case, output in one line "Case #X: true" if A+B>C, or "Case #X: false" otherwise, where X is the case number (starting from 1).
Sample Input:
3
1 2 3
2 3 4
9223372036854775807 -9223372036854775808 0
Sample Output:
Case #1: false
Case #2: true
Case #3: false
思考
这里暂时缺少,胡凡书籍图片,暂时空着。
7月30日补上
AC代码
#include <stdio.h>
#include <stdbool.h>
int main() {
int T, tcase = 1;
scanf("%d", &T);
while(T--) {
long long a, b, c;
scanf("%lld%lld%lld", &a, &b, &c);
long long res = a + b;//保存可能溢出的结果
bool flag;
if(a > 0 && b > 0 && res < 0) flag = true;
else if(a < 0 && b < 0 && res >= 0) flag = false;
else if(res > c) flag = true;
else flag = false;
if(flag == true) {
printf("Case #%d: true\n", tcase++);
} else {
printf("Case #%d: false\n", tcase++);
}
}
return 0;
}
c语言的布尔型
现在的C语言已经有了布尔型:从C99标准开始,类型名字为“_Bool”.
在此之前的C语言中,使用整型int来表示真假。在输入时:使用非零值表示真;零值表示假。在输出时:真的结果是1,假的结果是0;(这里我所说的“输入”,意思是:当在一个需要布尔值的地方,也就是其它类型转化为布尔类型时,比如 if 条件判断中的的条件;“输出”的意思是:程序的逻辑表达式返回的结果,也就是布尔类型转化为其他类型时,比如 a==b的返回结果,只有0和1两种可能)。
所以,现在只要你的编译器支持C99,可以直接使用布尔型了。另外,C99为了让C和C++兼容,增加了一个头文件stdbool.h。里面定义了bool、true、false,让我们可以像C++一样的定义布尔类型。
1. 我们自己定义的“仿布尔型”
在C99标准被支持之前,我们常常自己模仿定义布尔型,方式有很多种,常见的有下面两种:
/* 第一种方法 */
#define TRUE 1
#define FALSE 0
/* 第二种方法 */
enum bool{false, true};
2. 使用_Bool
现在,我们可以简单的使用 _Bool 来定义布尔型变量。_Bool类型长度为1,只能取值范围为0或1。将任意非零值赋值给_Bool类型,都会先转换为1,表示真。将零值赋值给_Bool类型,结果为0,表示假。 下面是一个例子程序。
#include <stdio.h>
#include <stdlib.h>
int main(){
_Bool a = 1;
_Bool b = 2; /* 使用非零值,b的值为1 */
_Bool c = 0;
_Bool d = -1; /* 使用非零值,d的值为1 */
printf("a==%d, /n", a);
printf("b==%d, /n", b);
printf("c==%d, /n", c);
printf("d==%d, /n", d);
printf("sizeof(_Bool) == %d /n", sizeof(_Bool));
system("pause");
return EXIT_SUCCESS;
}
运行结果如下:(只有0和1两种取值)
a==1,
b==1,
c==0,
d==1,
sizeof(_Bool) == 1
3. 使用stdbool.h
在C++中,通过bool来定义布尔变量,通过true和false对布尔变量进行赋值。C99为了让我们能够写出与C++兼容的代码,添加了一个头文件<stdbool.h>。在gcc中,这个头文件的源码如下:(注,为了清楚,不重要的注释部分已经省略)
/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of GCC.
*/
#ifndef _STDBOOL_H
#define _STDBOOL_H
#ifndef __cplusplus
#define bool _Bool
#define true 1
#define false 0
#else /* __cplusplus ,应用于C++里,这里不用处理它*/
/* Supporting <stdbool.h> in C++ is a GCC extension. */
#define _Bool bool
#define bool bool
#define false false
#define true true
#endif /* __cplusplus *
/* Signal that all the definitions are present. */
#define __bool_true_false_are_defined 1
#endif /* stdbool.h */
可见,stdbool.h中定义了4个宏,bool、true、false、__bool_true_false_are_defined。 其中bool就是 _Bool类型,true和false的值为1和0,__bool_true_false_are_defined的值为1。
下面是一个例子程序:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
/* 测试C99新添加的头文件 stdbool.h */
int main(){
bool m = true;
bool n = false;
printf("m==%d, n==%d /n", m, n);
printf("sizeof(_Bool) == %d /n", sizeof(_Bool));
system("pause");
return EXIT_SUCCESS;
}
执行结果为:
m==1, n==0
sizeof(_Bool) == 1
A1065 A+B and C (64bit) (20)(20 分)的更多相关文章
- 1065 A+B and C (64bit) (20 分)
1065 A+B and C (64bit) (20 分) Given three integers A, B and C in [−2^63,2^63], you are suppose ...
- pat 1065 A+B and C (64bit)(20 分)(大数, Java)
1065 A+B and C (64bit)(20 分) Given three integers A, B and C in [−263,263], you are supposed t ...
- MVC4 学习笔记 之 URL中存在编译的空格 20%20%
/Config/Edit/QQCC%20%20%20%20%20%20%20 原因是: 通过EF直接添加了空格? NO 是因为你的数据库字段设计问题,因为你当然设计如>:sID nchar(10 ...
- 2016年11月29日 星期二 --出埃及记 Exodus 20:20
2016年11月29日 星期二 --出埃及记 Exodus 20:20 Moses said to the people, "Do not be afraid. God has come t ...
- 安装nginx环境(含lua)时遇到报错ngx_http_lua_common.h:20:20: error: luajit.h: No such file or directory的解决
下面是安装nginx+lua环境时使用的相关模块及版本,ngx_devel_kit和lua-nginx-module模块用的都是github上最新的模块.并进行了LuaJIT的安装. #Install ...
- PAT A1065 A+B and C (64bit) (20 分)
AC代码 #include <cstdio> int main() { #ifdef ONLINE_JUDGE #else freopen("1.txt", " ...
- [C++]PAT乙级1012.数字分类 (20/20)
/* 1012. 数字分类 (20) 给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和: A2 = 将被5除后余1的数字按给出顺序进行交错求和, ...
- [C++]PAT乙级1008.数组元素循环右移问题 (20/20)
/* 1008. 数组元素循环右移问题 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 一个数组A中存有N(N>0)个整数, ...
- [C++]PAT乙级1007.素数对猜想 (20/20)
/* 1007. 素数对猜想 (20) 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数.“素数对猜想”认为“存在无穷 ...
随机推荐
- 前端专业术语: shim 和 Polyfill,了解下
在学习和使用 JavaScript 的时候,我们会经常碰到两个术语:shim 和 polyfill.它们有许多定义和解释,意思相近又有差异. Shim Shim 指的是在一个旧的环境中模拟出一个新 A ...
- orcale函数
字符函数 1.ASCII 返回与指定的字符对应的十进制数; select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space ...
- AJPFX总结java创建线程的三种方式及其对比
Java中创建线程主要有三种方式: 一.继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行 ...
- json解析数组类型的数据
//微信里一个检测是否有发送模版消息的权限的方法//此处的openid代表的微信用户openid,templateId代表的是模版消息idpublic boolean checkIsSendTempM ...
- Sublime常用插件安装大全
作为前端人员,要找一个很顺手的编辑器真的不容易,我向大家推荐的一款实用前端开发神器,不但占地小,且插件很多,很强大. 下面我向大家介绍一下它的安装及插件的使用方法. 一.安装及安装emmet插件 首先 ...
- css高度已知,左右定宽,中间自适应三栏布局
css高度已知,左右定宽,中间自适应三栏布局: <!DOCTYPE html> <html lang="en"> <head> <meta ...
- 零基础逆向工程28_Win32_02_事件_消息_消息处理函数
1 第一个图形界面程序 步骤1:创建Windows应用程序 选择空项目 步骤2:在新建项窗口中选C++代码文件 创建一个新的cpp文件 步骤3:在新的cpp文件中添加:#include <Win ...
- java.lang.ClassNotFoundException:org/apache/commons/collections/CursorableLinkedList
明明有 commons-collections.jar 将jar包复制到Tomcat的WEB-INF/lib下就可以了...
- MySQL-数据类型及选择
一.数据类型 详见:http://www.runoob.com/mysql/mysql-data-types.html 二.类型选择 整形>date,time>enum,char>v ...
- Java 中 Double 相关问题
在项目当中,对于double类型数据的使用比较频繁.尤其是处理金钱相关的数据,在使用Double类型的数据时,涉及到精度,显示,四舍五入等等问题. 1. 显示问题,当double 数据 小于 0.0 ...