浙大版《C语言程序设计(第4版)》题目集参考答案
输入2个正整数lower
和upper
(lower
≤upper
≤100),请输出一张取值范围为[lower
,upper
]、且每次增加2华氏度的华氏-摄氏温度转换表。
温度转换的计算公式:C=5×(F−32)/9,其中:C表示摄氏温度,F表示华氏温度。
输入格式:
在一行中输入2个整数,分别表示lower
和upper
的值,中间用空格分开。
输出格式:
第一行输出:"fahr celsius"
接着每行输出一个华氏温度fahr(整型)与一个摄氏温度celsius(占据6个字符宽度,靠右对齐,保留1位小数)。
若输入的范围不合法,则输出"Invalid."。
输入样例1:
32 35
输出样例1:
fahr celsius
32 0.0
34 1.1
输入样例2:
40 30
输出样例2:
Invalid.
提交结果:
基本思路:
***要有浮点数类型参与计算,才能得出浮点数类型结果***
1.创建三个变量分别用来接收最低,最高华氏温度和转化后的摄氏温度
2.先判断输入范围是否合法,合法则利用循环依次将要求范围内的所有华氏温度转化为摄氏温度并按照格式输出结果;不合法则按对应输出格式打印结果
代码实现:
1.for循环
#include<stdio.h>
int main()
{
int lower = 0;//最低华氏温度
int upper = 0;//最高华氏温度
double C = 0;//摄氏温度
scanf("%d %d", &lower, &upper);//接收最低,最高华氏温度
if (lower <= upper)//判断输入范围是否合法,输入范围合法
{
printf("fahr celsius\n");//按照输出格式打印
for (int F = lower; F <= upper; F += 2)//计算取值范围中规则要求的所有华氏温度
{
C = 5 * (F - 32) / 9.0;//转换成对应的摄氏温度
printf("%d%6.1lf\n", F, C);//按照输出格式打印结果
}
}
else//输入范围不合法
{
printf("Invalid.");//打印结果
}
return 0;
}
2.while循环
#include<stdio.h>
int main()
{
int lower = 0;//最低华氏温度
int upper = 0;//最高华氏温度
double C = 0;//摄氏温度
scanf("%d %d", &lower, &upper);//接收最低,最高华氏温度
if (lower <= upper)//判断输入范围是否合法,输入范围合法
{
printf("fahr celsius\n");//按照输出格式打印
int F = lower;//华氏温度初始化
while (F <= upper) //计算取值范围内规则要求的所有华氏温度
{
C = 5 * (F - 32) / 9.0;//转换成对应的摄氏温度
printf("%d%6.1lf\n", F, C);//按照输出格式打印结果
F += 2;
}
}
else//输入范围不合法
{
printf("Invalid.");//打印结果
}
return 0;
}
3.do...while循环
#include<stdio.h>
int main()
{
int lower = 0;//最低华氏温度
int upper = 0;//最高华氏温度
double C = 0;//摄氏温度
scanf("%d %d", &lower, &upper);//接收最低,最高华氏温度
if (lower <= upper)//判断输入范围是否合法,输入范围合法
{
printf("fahr celsius\n");//按照输出格式打印
int F = lower;//华氏温度初始化
do
{
C = 5 * (F - 32) / 9.0;//转换成对应的摄氏温度
printf("%d%6.1lf\n", F, C);//按照输出格式打印结果
F += 2;//每次增加2华氏度
} while (F <= upper);//计算取值范围内规则要求的所有华氏温度
}
else//输入范围不合法
{
printf("Invalid.");//打印结果
}
return 0;
}
欢迎提问和纠错,共同讨论一起进步!