C 笔记三 基于 for 循环的温度转换程序

2019-03-18  本文已影响0人  吃柠檬的鸮

编写程序,打印华氏温度到摄氏温度的转换表,要求按照从 300 度到 0 度逆序打印。

/* fahr2Celsius_for_1.c */
#include <stdio.h>

int main() {
    float fahr;
    
    for (fahr = 300; fahr >= 0; fahr -= 20) {
        printf("%3.0f\t%6.1f\n", fahr, (5.0 / 9.0) * (fahr - 32));
    }
    
    return 0;
}

for 也是 C 语言的一种循环语句,它是对 while 的一种推广,相比 whilefor 语句更加直观。for 语句比较适合初始化和增加步长都是单条语句并且逻辑相关的情形。

上述程序中 printf 的第三个参数是计算摄氏温度的表达式,C 语言允许使用复杂的表达式来替代同类型变量值:

printf("%3.0f\t%6.1f\n", fahr, (5.0 / 9.0) * (fahr - 32));

/* 等价于 */
celsius = (5.0 / 9.0) * (fahr - 32);
printf("%3.0f\t%6.1f\n", fahr, celsius);

上述程序的编译运行结果:

300  148.9
280  137.8
260  126.7
240  115.6
220  104.4
200   93.3
180   82.2
160   71.1
140   60.0
120   48.9
100   37.8
 80   26.7
 60   15.6
 40    4.4
 20   -6.7
  0  -17.8

上面的程序在 for 循环里使用了 300、20 这样的常量,C 语言中把直接使用的常数称之为 “幻数”。在程序中大量使用幻数会使得程序的修改变得更加困难,也降低了程序的可读性。

for (fahr = 300; fahr >= 0; fahr -= 20) {
    printf("%3.0f\t%6.1f\n", fahr, (5.0 / 9.0) * (fahr - 32));
 }

使用 #define 可以把一个符号名定义为一个特定的字符序列(包括数字),注意 define 语句不需要分号:

#define name replacement-list

符号常量名通常用大写字母拼写,以便于与小写字母拼写的变量名区分。符号常量不是变量,因此不需要再进行声明。所以上述的程序可以改写成:

/* fahr2Celsius_for_2.c */
#include <stdio.h>

#define  LOWER  0
#define  UPPER  300
#define STEP    20

int main() {
    float fahr;
    
    for (fahr = UPPER; fahr >= LOWER; fahr -= STEP) {
        printf("%3.0f\t%6.1f\n", fahr, (5.0 / 9.0) * (fahr - 32));
    }
    
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读