• C语言学习第二天


    学习C语言第二天,

    1.2 变量与算术表达式

    第二个C语言程序,使用公式C=(5/9)(F-32),打印下列华氏温度与摄氏温度对照表:

    0       -17
    20     -6
    40     4
    60    15
    80    26
    100  37
    120  48
    140  60
    160  71
    180  82
    200  93
    220  104
    240  115
    260  126
    280  137
    300  148

    #include

    /*当fahr= 0, 20, ..., 300时,分别
        打印华氏温度与摄氏温度对照表   */

    main() {
        int fahr, celsius;
        int lower, upper, step;

        lower = 0;  /* 温度表的下限 */
        upper = 300;  /* 温度表的上限 */
        step = 20;  /*步长*/

        fahr = lower;
        while (fahr <= upper) {
            celsius = 5 * (fahr-32) / 9;
            printf("%d\t%d\n", fahr, celsius);
            fahr = fahr + step;
        }
    }    

    其中两行

    /*当fahr= 0, 20, ..., 300时,分别
        打印华氏温度与摄氏温度对照表   */

    称为注释,此处简单地解释了该程序时做什么的。包含在/**/中间的字符序列将被编译器忽略。注释可以出现在任何空格、制表符或换行符处。    

    在C语言中,所有变量都必须先声明后使用。声明通常放在函数起始处,在任何可执行语句之前。声明用于说明变量的属性,它由一个类型名和一个变量表组成,例如:

    int fahr, celsius;
    int lower, upper, step;

    其中,类型int表示其后所列变量为整数,与之相对应的,float表示所列变量为浮点数(即,可以带有小数部分的数)。int和float类型的取值范围取决与具体的机器。对于int类型通常是16位,其取值范围在-32768~+32768之间,也有用32为表示int类型。float类型通常是32位,它至少有6位有效数字,取值范围一般在10^-38~10+38之间。

    除int和float类型之外,还有
    char      字符——一个字节
    short    短整型
    long      长整型
    double  双精度浮点型
    这些数据类型的大小也取决与具体机器。另外,还存在这些基本类型数据的数组、结构、联合,指向这些类型的指针以及返回这些类型值的函数。

    最开始执行的计算是4个赋值语句:

    lower = 0;  /* 温度表的下限 */
    upper = 300;  /* 温度表的上限 */
    step = 20;  /*步长*/
    fahr = lower;

    它们为变量设置初值。各条语句均以分号结束。
    每行计算方式相同,此处使用while循环。while循环执行方式:先测试圆括号中的条件:如果为真,则执行循环体,直到条件为假,循环结束,并继续执行跟在循环语句后的下一条语句。本程序中之后没有其他语句,整个称许执行终止。

    花括号{}循环体内可以写一条语句或多条语句,并缩进。这种缩进方式突出了程序的逻辑结构。
    我们建议每行只书写一条语句,并在运算符两边各加上一个空格字符,这样可以使得运算的结合关系更清楚明了。

    循环体内的赋值语句:

    celsius = 5 * (fahr-32) / 9;

    用于计算与指定华氏温度相对应的摄氏温度的值,并将结果赋值给变量celsius。再该语句中把表达式写成先乘5再除以9,而不是直接写成5/9,是应为C语言及许多其他语言中,整数除法操作将执行舍位,结果中的任何小数部分都会舍弃。由于5和9都是整数,5/9结果是0,所有计算结果都将是0。

    printf是一个通用输出格式化函数。该函数第一个参数是待打印的字符串,其中每个%表示其他的参数(第二个、第三个、...)之一进行替换的位置,并指定打印格式。例如,%d指定一个整型参数。因此:

    printf("%d\t%d\n", fahr, celsius);

    用于打印两个整数fahr和celsius的值,并再两者中间留一个制表符的空间。printf第一个参数中的%对应的参数,数目和类型都必须匹配,否则将出现错误的结果。
    printf函数并不是C语言本身的一部分,C语言本身并没有定义输入/输出功能。printf仅仅是标准库函数中一个有用的函数而已,这些标准库函数在C语言程序中通常都可以使用。

    上述程序存在两个问题。
    第一个是输出的数不是右对齐,所以输出结果不是很美观。如果在printf语句的第一个参数的%d中指明打印宽度,则可以右对齐。

    printf("%3d %6d\n", fahr, celsius);

    如上,fahr的值占3个数字宽,celsius的值占6个数字宽度
    另一个比较严重的问题是,整型计算得到的温度值不太精确,例如0 F度对应精确的摄氏温度应该是-17.8 C度,而不是-17。为了得到更精确的结果,使用浮点数代替。

    #include

    /*当fahr= 0, 20, ..., 300时,分别
        打印华氏温度与摄氏温度对照表   */

    main() {
        float fahr, celsius;
        int lower, upper, step;

        lower  = 0;  /* 温度表的下限 */
        upper = 300;  /* 温度表的上限 */
        step = 20;  /*步长*/

        fahr = lower;
        while (fahr <= upper) {
            celsius = (5.0/9.0) * (fahr-32.0);
            printf("%3.0f %6.1f\n", fahr, celsius);
            fahr = fahr + step;
        }
    }    

    两个程序基本一致,不同之处是把fahr和celsius声明程float类型,转换公式更自然。
    如果某个算术运算符的所有操作数均是整数,则执行整数运算。但是,如果有一个浮点数,那么整型会被转换为浮点数后再运算。即使浮点数取的是整数值,也最好加上一个显式的小数点,这样可以强调其浮点性质,便于阅读。

    printf中的转换说明%3.0f表明待打印的浮点数至少占3个字符宽,且不带小数点和小数部分;%6.1f表明另一个待打印的数至少占6个字符宽,且小数点后面有1位小数。
    %d      按照十进制整型打印
    %6d     按照十进制整型打印,至少6个字符宽
    %f       按照浮点数打印
    %6f    按照浮点数打印,至少6个字符宽
    %.2f    按照浮点数打印,小数点后有两位小数
    %6.2f   按照浮点数打印,至少6个字符宽,小数点后有两位小数

    此外,printf还支持:%o八进制,%x十六进制,%s字符串,%%百分号本身。

    练习1-3 修改温度转换程序,使之能在转换表的顶部打印一个标题
    练习1-4 编写一个程序打印摄氏温度转换为相应华氏温度的转换表。

    ______________________________________________________________________________

    练习1-3:
    #include

    /*当fahr= 0, 20, ..., 300时,分别
        打印华氏温度与摄氏温度对照表   */

    main() {
        float fahr, celsius;
        int lower, upper, step;

        lower  = 0;  /* 温度表的下限 */
        upper = 300;  /* 温度表的上限 */
        step = 20;  /*步长*/

        fahr = lower;
        printf("\n---------------华氏温度与摄氏温度对照表------------\n\n");
        printf("  F      C\n");
        while (fahr <= upper) {
            celsius = (5.0/9.0) * (fahr-32.0);
            printf("%3.0f %6.1f\n", fahr, celsius);
            fahr = fahr + step;
        }
    }      

    练习1-4:

    摄氏温度转换为相应华氏温度,公式是 celsius*(9.0/5.0)+32

    #include

    /*当fahr= 0, 20, ..., 300时,分别
        打印摄氏温度与华氏温度对照表   */

    main() {
        float fahr, celsius;
        int lower, upper, step;

        lower  = -17;  /* 温度表的下限 */
        upper = 148;  /* 温度表的上限 */
        step = 11;  /*步长*/

        celsius = lower;
        printf("\n---------------摄氏温度与华氏温度对照表------------\n\n");
        printf("  C      F\n");
        while (celsius < upper) {
            fahr = celsius * (9.0/5.0)  + 32.0;
            printf("%3.0f %6.1f\n", celsius, fahr);
            celsius = celsius + step;
        }
    }    

  • 相关阅读:
    【Python机器学习】sklearn.datasets其他通用函数
    Spring Cloud Gateway3.x自定义Spring Cloud Loadbalancer负载均衡策略以及实现动态负载均衡策略的方案
    数仓开发之DWD层(四)
    博士新生应该懂得哪些道理? - 易智编译EaseEditing
    JavaScript do-while循环
    【网络安全的神秘世界】文件上传、JBOSS、Struct漏洞复现
    在RISC-V64架构的CV1811C开发板上应用perf工具进行多线程程序性能分析及火焰图调试
    SSM整合过程梳理
    JAVA计算机毕业设计定西扶贫惠农推介系统Mybatis+源码+数据库+lw文档+系统+调试部署
    Stable Diffusion8
  • 原文地址:https://blog.csdn.net/u014360189/article/details/127914035