简明现代魔法 -> C/C++ -> C 程序设计:变量与算术表达式
C 程序设计:变量与算术表达式
2010-02-12
问题:使用公式 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
我比较熟悉 Java,先用 Java 把程序写一遍吧:
public class temperature {
public static void main(String[] args){
int fahr, celsius;
int lower, upper, step;
lower = 0;
upper = 300;
step = 20;
fahr = lower;
while(fahr <= upper){
celsius = 5 * (fahr-32) / 9;
System.out.println(fahr + ", " + celsius);
fahr = fahr + step;
}
}
}
C 程序代码如下:
#include
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;
}
}
在 C 语言中,所有变量都必须先声名后使用。声名一般都要放在函数起始处,在任何可执行语句之前。声名的主要用途就是说明变量的属性,它由一个类型名和一个变量表组成:
int fahr, celsius;
int lower, upper, step;
在这个程序中,最先执行下列4个赋值语句:
lower = 0; /* 温度表下限 */
upper = 300;/* 温度表上限 */
step = 20;/* 步长 */
fahr = lower;
它们的作用就是为变量设置初值。
温度转换的各行计算方式都是相同的,所以可以用循环语句重复输出各行。
从本程序也可以看得出 printf() 函数的一些功能。printf() 是一个通用输出格式化函数,它的第一个参数是待打印的字符串,其中每个百分号表示其它参数进行替换的位置,并指定打印的格式。比如这里 %d 指定一个整形参数。
printf("%d\t%d\n", fahr, celsius);
用于打印两个整数 fahr 与 celsius 的值,并在两者之间留一个制表符空间 \t。
由于我们使用整型算术运算,因此计算得到的摄氏温度值是不太精确的。要得到精确的结果,需要使用浮点算术运算。
#include
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;
}
}
在 printf() 函数中,%3.0f 表示变量 fahr 至少占3个字符宽,且不带小数点和小数部分。%6.1f 表示变量 celsius 至少占6个字符宽,且小数点后面有1位数字。
程序运行结果为:
0 -17.8
20 -6.7
40 4.4
60 15.6
80 26.7
100 37.8
120 48.9
140 60.0
160 71.1
180 82.2
200 93.3
220 104.4
240 115.6
260 126.7
280 137.8
300 148.9