从今天起,我们会进行一系列信奥试题的解析,便于复习前一阶段我们学过的 C 语言的理论内容,并且会补充一些语言中需要掌握的语法细节。
今天,我们从最简单的题目开始。
将输入的华氏温度转换为摄氏温度。由华氏温度 F 与摄氏温度 C 的转换公式为:
F = C * 9 / 5 + 32
输入输入一个实数,表示华氏温度
输出输出对应的摄氏温度,答案保留 4 位小数
样例输入50
样例输出10.0000
这是一个很基础的运算题目。
注意事项#include <stdio.h>
int main() {
float f, c;
scanf("%f", &f);
c = (f - 32) * 5 / 9; // 公式的转换
printf("%.4f", c); // 输出小数点后 4 位 `%.4f`
return 0;
}
输入三角形三边长 a, b, c(保证能构成三角形),输出三角形面积
输入一行三个用一个空格隔开的实数 a, b, c,表示三角形的三条边长
输出输出三角形的面积,答案保留四位小数
样例输入3 4 5
样例输出6.0000
数据范围限制1 <= a,b,c <= 10000
这是一个很基础的运算题目,考察的是三角形面积公式。
注意事项#include <stdio.h>
#include <math.h>
int main() {
float a, b, c, p, s;
scanf("%f %f %f", &a, &b, &c); // 按空格分开接收输入值
p = (a + b + c) / 2;
s = sqrt(p * (p - a) * (p - b) * (p - c));
printf("%.4f", s);
return 0;
}
有一个“就是它”的猜数游戏,步骤如下:请你对任意输入的一个三位数 x,在这三位数后重复一遍,得到一个六位数,467 --> 467467。
把这个数连续除以 7、11、13,输出最后的商。
输入输入一个三位数x
输出输出最后的商
样例输入100
样例输出100
数据范围限制100 <= x <= 999
这道题也是一个基本运算的题目,难点在于三位数重复变成六位数的方法:
六位数 = 三位数 * 1000 + 三位数
注意事项#include <stdio.h>
int main() {
int x;
scanf("%d", &x);
x = x * 1000 + x;
printf("%d", x / 7 / 11 / 13);
return 0;
}
课后思考
有的同学可能有疑问:这个六位数要连续除三个数,结果一定是整数吗?如果不是的话,输出 %d 是否有问题?
这个问题很有意思,大家可以多运行几次这段代码,你就会发现一个很特别的规律,然后仔细分析一下吧!