zoukankan      html  css  js  c++  java
  • A1065 A+B and C (64bit) (20)(20 分)

    A1065 A+B and C (64bit) (20)(20 分)

    Given three integers A, B and C in [-2^63^, 2^63^], 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&gtC, 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
    ", tcase++);
            } else {
                printf("Case #%d: false
    ", tcase++);
            }
        }
        return 0;
    }
    

    c语言的布尔型

    现在的C语言已经有了布尔型:从C99标准开始,类型名字为“_Bool”.

    ​ 在此之前的C语言中,使用整型int来表示真假。在输入时:使用非零值表示真;零值表示假。在输出时:真的结果是1,假的结果是0;(这里我所说的“输入”,意思是:当在一个需要布尔值的地方,也就是其它类型转化为布尔类型时,比如 if 条件判断中的的条件;“输出”的意思是:程序的逻辑表达式返回的结果,也就是布尔类型转化为其他类型时,比如 a==b的返回结果,只有0和1两种可能)。

    ​ 所以,现在只要你的编译器支持C99,可以直接使用布尔型了。另外,C99为了让CC++兼容,增加了一个头文件stdbool.h。里面定义了booltruefalse,让我们可以像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来定义布尔变量,通过truefalse对布尔变量进行赋值。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
    
  • 相关阅读:
    2558: 游起来吧!超妹!
    2554: 巨巨来袭
    2557: 不如来21玩一局?
    tortoisesvn 本项目的忽略项
    【C语言】随机数随机种子
    【leetcode】按奇偶排序数组
    【leetcode】按奇偶排序数组 II
    【leetcode】根据数字二进制下 1 的数目排序
    【leetcode】合并排序的数组
    【leetcode】稀疏数组搜索
  • 原文地址:https://www.cnblogs.com/lingr7/p/9363126.html
Copyright © 2011-2022 走看看