• C Primer Plus 第3章 数据和C 编程练习


       1、

    /* 整数上溢 */
    #include <stdio.h>
    int main(void)
    {
        int i = 2147483647;
        unsigned int j = 4294967295;
    
        /*
            无符号整数j像一个汽车里程指示表(形容的太好了,可参考《计算机科学导论》第3章 数据存储,有图),
            当达到最大值时,它将溢出到起始点。整数i也是同样。它们的主要区别是unsigned int变量j的起始点是0(正像里程
            指示表那样),而int变量i的起始点则是-2147483648。——参考《C Primer Plus》
        */
        printf("%d %d %d
    ", i, i+1, i+2);
        printf("%u %u %u
    ", j, j+1, j+2);
        return 0;
    }

       浮点数上溢和浮点数下溢,于浮点数,以目前的知识最终是无法深究的,故留待以后探索。只能借《C Primer Plus》之意:

       当计算结果是一个大得不能表达的数时,会发生上溢。现在C语言要求为这样的数赋予一个代表无穷大的特殊值,以inf或infinity示之。

       用对浮点值可用的全部精度进行表示的最小数字(它具有最小的指数,并且仍具有可以由全部可用位进行表示的最小的尾数值),若此数除以2,通常这个操作将使指数部分减小,但是指数已经达到了最小值,所以计算机只好将尾数部分达到位进行右移,空出首位二进制位,并丢弃最后一位二进制位。此过程称为下溢。(举例说之:以十进制为例,把一个包含4位有效数字的数0.1234E-10除以10,将得到结果0.0123E-10,但是损失了1位有效数字)。

    /* 浮点数上溢与下溢 */
    #include <stdio.h>
    int main(void)
    {
        float toobig = 3.4e38 * 100.0f;
        float toosmall = 0.1234e-2 / 10;
    
        printf("%e
    ", toobig);    // 输出为inf
        printf("%f
    ", toosmall);  // 损失1位有效数字
        return 0;
    }

        2、  

    #include <stdio.h>
    int main(void)
    {
        int ch;
        printf("请输入一个ASCII码值: ");
        scanf("%d", &ch);
        printf("%d相应的字符为: %c", ch, ch);
        return 0;
    }

       3、

    #include <stdio.h>
    int main(void)
    {
        printf("aStartled by the sudden sound, Sally shouted, ");
        printf(""By the Great Pumpkin, what was that! "
    ");
        return 0;
    }

       4、

    #include <stdio.h>
    int main(void)
    {
        float input;
        printf("请输入一个浮点数: ");
        scanf("%f", &input);
        printf("The input is %f or %e.", input, input);
        return 0;
    }

       5、

    #include <stdio.h>
    int main(void)
    {
        int age;
        printf("请输入您的年龄: ");
        scanf("%d", &age);
        printf("您的年龄合%e秒", age * 3.156e7);
        return 0;
    }

       6、  

    #include <stdio.h>
    int main(void)
    {
        int kua;
        printf("请输入水(单位为夸脱)的夸脱数: ");
        scanf("%d", &kua);
        printf("%d夸脱水中包含%e个水分子", kua, kua * 950 / 3.0e-23);
        return 0;
    }

       7、

    #include <stdio.h>
    int main(void)
    {
        float feet;
        printf("请输入您的身高(单位为英寸): ");
        scanf("%f", &feet);
        printf("%.2f inches = %.2f cm", feet, feet * 2.54);
        return 0;
    }
  • 相关阅读:
    CSRF攻击与防御
    別惹我
    单系统登录机制SSO
    jdk8- list操作
    mybatis--Mapper 常见报错总结(持续总结)
    死锁排查的小窍门 --使用jdk自带管理工具jstack
    oracle笔记--查询10条之后记录的数据
    zookeeper集群操作【这里只说明简单的操作步骤,zk的相关参数、说明请参考官方文档】
    利用jquery操作隐藏table某一列
    关于python3.X 报"import urllib.request ImportError: No module named request"错误,解决办法
  • 原文地址:https://www.cnblogs.com/yerenyuan/p/5180359.html
Copyright © 2020-2023  润新知