📜  C |运营商|问题27(1)

📅  最后修改于: 2023-12-03 14:39:41.224000             🧑  作者: Mango

C |运营商|问题27

问题描述

给定两个整数,计算它们的和,并返回适当的运营商使结果为正。

函数签名
char findOperator(int a, int b);
输入
  • a: 整数,-1000 <= a <= 1000
  • b: 整数,-1000 <= b <= 1000
输出
  • 返回char型,表示运算符,取值为'+', '-', '*', '/'中的一个
解题思路

题目要求使两个数的和为正数。因此,首先需要计算两个数的和,然后判断它的正负,最后根据正负来返回相应的运算符。

具体实现如下:

  1. 定义变量sum,计算a和b的和。

  2. 判断sum的正负:

    • 如果sum为0,则返回'+';
    • 如果sum为正数,则返回'+';
    • 如果sum为负数,则返回'-';
  3. 如果返回的是'+', 直接返回;如果返回的是'-', 则需根据a和b的大小关系来选择运算符。

    • 如果a>b,则返回'-';
    • 如果a<b,则返回'+';
    • 如果a=b,则返回'+';
  4. 如果返回的是'*'或'/', 则说明b不能为0,根据b的正负来选择相应的运算符。

    • 如果b为正数,则返回'*';
    • 如果b为负数,则返回'/';
代码实现
char findOperator(int a, int b) {
    int sum = a + b;
    if (sum == 0) {
        return '+';
    } else if (sum > 0) {
        return '+';
    } else {
        if (a > b) {
            return '-';
        } else if (a < b) {
            return '+';
        } else {
            return '+';
        }
    }
    if (b == 0) {
        return '*';
    } else {
        if (b > 0) {
            return '*';
        } else {
            return '/';
        }
    }
}
测试样例
#include <stdio.h>

int main() {
    printf("%c\n", findOperator(1, 2));  // +
    printf("%c\n", findOperator(1, -2));  // -
    printf("%c\n", findOperator(-1, 2));  // +
    printf("%c\n", findOperator(-1, -2));  // -
    printf("%c\n", findOperator(0, 0));  // +
    printf("%c\n", findOperator(1, 0));  // *
    printf("%c\n", findOperator(-1, 0));  // *
    printf("%c\n", findOperator(0, 1));  // *
    printf("%c\n", findOperator(0, -1));  // /
    return 0;
}
测试结果
+
-
+
-
+
*
*
*
/