#include
/*
当华氏温度为 0,20,40,...300时,打印出华氏温度与摄氏温度对照表
华氏温度与摄氏温度 C=(5/9)(̧F-32) 其中C表示摄氏温度,F表示华氏温度
*/
main()
{
// 华氏温度f, 摄氏温度c
int f, c;
// 最低温度,最高温度,步长
int lower, upper, step;
lower = 0;
upper = 300;
step = 20;
f = lower;
while (f<=upper) {
// 如果先计算5/9,小数部分会被舍位,结果永远是0
c = 5 * (f - 32) / 9;
printf("%d\t%d\n", f, c);
f = f + step;
}
}
上面的程序比较简单,这里从上到下只做粗略描述,目的是了解程序的构造:
输出的数字不是靠右对齐,不美观,可以使用printf()进行格式化,使其右对齐
另一个较为严重的问题是,我们使用的是整型运算,由于小数位会被舍弃,所以得到的结果不太准确。可以使用浮点数计算,修改程序如下:
// %d 按照十进制整型数打印 decimalism
printf("%d|%d|%d\n", 1, 100, 1000);
// %6d 按照十进制整型数打印,至少6个字符宽(待打印字符小于6个,左侧不足位补空格;大于等于6个,按实际打印)
printf("%6d|%6d|%6d|%6d\n", 6, 66666, 666666, 66666666);
// %f 按照浮点数打印 float 小数点最多6位,如果实际不足6位,右侧不足位补0;如果实际多于6位,则进位
printf("%f|%f|%f|%f|%f\n", 1.1, 1000.222, 1.123456, 1.1234567, 1.12345638);
// %6f 按照浮点数打印,至少6个字符宽,基本同上
printf("%6f|%6f|%6f|%6f|%6f\n", 1.1, 1000.222, 1.123456, 1.1234567, 1.12345638);
// %.2f 按照浮点数打印, 小数点后两位小数,不足右端补0,多出进位
printf("%.2f|%.2f|%.2f|%.2f|%.2f\n", 1.1, 1000.222, 1.123456, 1.1234567, 1.12345638);
// %6.2f 按照浮点数打印, 至少6个字符宽(包含小数部分、小数点), 小数部分两位;不足6位左侧补空格,多出6位整数部分按实际打印
printf("%6.2f|%6.2f|%6.2f|%6.2f|%6.2f\n", 1.1, 1000.222, 1.123456, 1.1234567, 123451.12345638);
// %o 按照八进制打印 octonary
printf("%o\n", 8);
// %x 按照十六进制打印 hexadecimal
printf("%x\n", 16);
// %c 字符
printf("%c\n", 'c');
// %s 字符串
printf("%s\n", "hello wrold!");
// %% 表示%本身
printf("%%\n");
#include
main()
{
// 华氏温度f, 摄氏温度c
float f, c;
// 最低温度,最高温度,步长
float lower, upper, step;
lower = 0;
upper = 300;
step = 20;
f = lower;
printf("%s\t%s\n", "华氏温度", "摄氏温度");
while (f <= upper) {
c = 5.0 / 9.0 * (f - 32.0);
printf(" %3.0f\t%14.1f\n", f, c);
f = f + step;
}
}
#include
/*
当摄氏温度为 0,20,40,...300时,打印出摄氏温度与华氏温度对照表
F=(9.0/5.0)*C+32 其中F表示华氏温度,C表示摄氏温度
*/
main()
{
// 华氏温度f, 摄氏温度c
float f, c;
// 最低温度,最高温度,步长
float lower, upper, step;
lower = 0;
upper = 300;
step = 20;
c = lower;
printf("%s\t%s\n", "摄氏温度", "华氏温度");
while (c <= upper) {
f = (9.0 / 5.0) * c + 32;
printf(" %3.0f\t%14.1f\n", c, f);
c = c + step;
}
}