题目描述
给你一个四舍五入到两位小数的非负浮点数celsius
来表示温度,以 摄氏度(Celsius)
为单位。
你需要将摄氏度转换为 开氏度(Kelvin)
和 华氏度(Fahrenheit)
,并以数组 ans = [kelvin, fahrenheit]
的形式返回结果。
返回数组 ans
。与实际答案误差不超过
1
0
−
5
10^{-5}
10−5 的会视为正确答案。
注意:
- 开氏度 = 摄氏度 + 273.15
- 华氏度 = 摄氏度 * 1.80 + 32.00
示例
示例1
输入:celsius = 36.50
输出:[309.65000,97.70000]
解释:36.50 摄氏度:转换为开氏度是 309.65 ,转换为华氏度是 97.70 。
示例2
输入:celsius = 122.11
输出:[395.26000,251.79800]
解释:122.11 摄氏度:转换为开氏度是 395.26 ,转换为华氏度是 251.798 。
提示
- 0 <= celsius <= 1000
解题思路
这题是非常基础的题,只需要根据题目给出的公式进行计算并将结果返回即可,只是对于C语言的代码需要注意它传的参数有两个,第二个参数也是需要我们进行处理的,接下来直接看AC代码
AC代码
Python
class Solution:
def convertTemperature(self, celsius: float) -> List[float]:
return [celsius + 273.15, celsius * 1.80 + 32.00]
C
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
double* convertTemperature(double celsius, int* returnSize){
double* arr = (double*) malloc(sizeof(double) * 2);
arr[0] = celsius + 273.15;
arr[1] = celsius * 1.80 + 32.00;
*returnSize=2; //这里必须要将returnSize赋值为2
return arr;
}
对于上面的代码*returnSize=2
这句代码可以我认为完整的C代码是这样的
#include<stdio.h>
#include<stdlib.h>
double* convertTemperature(double celsius, int* returnSize){
double* arr = (double*) malloc(sizeof(double) * 2);
arr[0] = celsius + 273.15;
arr[1] = celsius * 1.80 + 32.00;
*returnSize=2;
return arr;
}
int main()
{
int* returnSize;
double celsius;
scanf("%lf", &celsius);
double* arr = convertTemperature(celsius, returnSize);
// printf("%d\n", *returnSize);
for(int i=0;i<*returnSize;i++)
{
printf("%f ", arr[i]);
}
return 0;
}
所以我们必须要将这行代码加上去
C++
class Solution {
public:
vector<double> convertTemperature(double celsius) {
vector<double> arr;
double result;
result = celsius + 273.15;
arr.push_back(result);
result = celsius * 1.80 + 32.00;
arr.push_back(result);
return arr;
}
};
Java
class Solution {
public double[] convertTemperature(double celsius) {
double[] arr = {0, 0};
arr[0] = celsius + 273.15;
arr[1] = celsius * 1.80 + 32.00;
return arr;
}
}