C语言 每日一题 力扣习题 10.19日 day1

简介: C语言 每日一题 力扣习题 10.19日 day1

1.两整数相加

给你两个整数 num1 和 num2,返回这两个整数的和。

示例 1:

输入:num1 = 12, num2 = 5

输出:17

解释:num1 是 12,num2 是 5 ,它们的和是 12 + 5 = 17 ,因此返回 17 。

示例 2:

输入:num1 = -10, num2 = 4

输出: - 6

解释:num1 + num2 = -6 ,因此返回 - 6 。

int sum(int num1, int num2)
{
  return num1 + num2;
}



2. 温度转换

给你一个四舍五入到两位小数的非负浮点数 celsius 来表示温度,以 摄氏度(Celsius)为单位。

你需要将摄氏度转换为 开氏度(Kelvin)和 华氏度(Fahrenheit),并以数组 ans = [kelvin, fahrenheit] 的形式返回结果。

返回数组 ans 。与实际答案误差不超过 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 。

思路与算法:

题目要求将给定摄氏度 celsius\textit{celsius}celsius 转换为开氏度和华氏度,我们根据题目给定的计算公式直接计算即可,其中计算公式如下 :

开氏度:Kelvin = Celsius + 237.15\text{Kelvin} = \text{Celsius} + 237.15Kelvin = Celsius + 237.15;

华氏度:Fahrenheit = Celsius×1.80 + 32.00\text{Fahrenheit} = \text{Celsius} \times 1.80 + 32.00Fahrenheit = Celsius×1.80 + 32.00;

double* convertTemperature(double celsius, int* returnSize)
{
    double* res = (double*)malloc(sizeof(double) * 2);
    res[0] = celsius + 273.15;
    res[1] = celsius * 1.80 + 32.00;
    *returnSize = 2;
    return res;
}

 

3.最小偶倍数

给你一个正整数 n ,返回 2 和 n 的最小公倍数(正整数)。

示例 1:

输入:n = 5

输出:10

解释:5 和 2 的最小公倍数是 10 。

示例 2:

输入:n = 6

输出:6

解释:6 和 2 的最小公倍数是 6 。注意数字会是它自身的倍数。

解法一:

int smallestEvenMultiple(int n) {
    if (n % 2 == 0) {
        return n;
    }
    else
    {
        return n * 2;
    }
}

解法二:

int smallestEvenMultiple(int n) {
    int result = n % 2 == 0 ? n : 2 * n;
    return result;
}

解法二优化:

int smallestEvenMultiple(int n) {
    return n % 2 == 0 ? n : 2 * n;
}

4.整数的各位积和之差

给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。

示例 1:

输入:n = 234

输出:15

解释:

各位数之积 = 2 * 3 * 4 = 24

各位数之和 = 2 + 3 + 4 = 9

结果 = 24 - 9 = 15

示例 2:

输入:n = 4421

输出:21

解释:

各位数之积 = 4 * 4 * 2 * 1 = 32

各位数之和 = 4 + 4 + 2 + 1 = 11

结果 = 32 - 11 = 21

int subtractProductAndSum(int n) {
    int sum = 0, mul = 1;
    while (n != 0) {
        sum += n % 10;
        mul *= n % 10;
        n = n / 10;
    }
    return mul - sum;
}

5.丑数

丑数 就是只包含质因数 2、3 和 5 的正整数。

给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false

bool isUgly(int n) {
    if (n <= 0) return false;
    while (n % 2 == 0) {
        n /= 2;
    }
    while (n % 3 == 0) {
        n /= 3;
    }
    while (n % 5 == 0) {
        n /= 5;
    }
    if (n == 1)
        return true;
    else
        return false;
}

代码优化:

bool isUgly(int n) {
    if (n <= 0) return false;
    while (n % 2 == 0) {
        n /= 2;
    }
    while (n % 3 == 0) {
        n /= 3;
    }
    while (n % 5 == 0) {
        n /= 5;
    }
    return n == 1;
}


目录
相关文章
TU^
|
5月前
|
存储 C语言
C语言习题~day35
C语言习题~day35
TU^
29 1
|
1月前
【力扣题】关于单链表和数组习题
【力扣题】关于单链表和数组习题
13 2
|
1月前
|
程序员 C语言
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目
|
3月前
|
机器学习/深度学习 C语言
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
要保持最小的步数,每一次汉诺塔问题(无论是最初还是递归过程中的),如果此时初始柱盘子数为偶数,我们第一步是把最上面的盘子移动到中转柱,如果为奇数,我们第一步则是将其移动到目标柱。
81 0
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
TU^
|
5月前
|
编译器 C语言
C语言习题~day31
C语言习题~day31
TU^
23 2
TU^
|
5月前
|
算法 程序员 C语言
C语言习题~day36
C语言习题~day36
TU^
40 1
TU^
|
5月前
|
存储 C语言
C语言习题~day34
C语言习题~day34
TU^
33 1
TU^
|
5月前
|
算法 C语言
C语言习题~day33
C语言习题~day33
TU^
28 1
TU^
|
5月前
|
C语言
C语言习题~day32
C语言习题~day32
TU^
17 1
TU^
|
5月前
|
C语言
C语言习题~day30
C语言习题~day30
TU^
23 1