kangtong 发表于 2023-5-12 22:25:40

家人们谁会,这是哪一块的算法啊

陶远航 发表于 2023-5-12 22:25:41

以下是用C语言实现的代码,可以直接运行:
#include <stdio.h>
#include <string.h>

#define MAX_LEN 101

int main() {
    int n, num1, num2, result;
    char exp_str, op;
    scanf("%d", &n);// 输入测试数据组数
    for (int i = 0; i < n; i++) {
      scanf("%s", exp_str);// 读取表达式字符串
      int len = strlen(exp_str);// 计算字符串长度
      
      // 将数字字符串转换成整数类型,并依次提取运算符和数字进行比较
      sscanf(exp_str, "%d", &num1);
      result = 1;// 初始化表达式结果为True
      for (int j = 1; j < len; j += 2) {
            op = exp_str;
            sscanf(exp_str+j+1, "%d", &num2);
            if (op == '<') {
                if (!(num1 < num2)) {
                  result = 0;
                  break;
                }
            } else if (op == '>') {
                if (!(num1 > num2)) {
                  result = 0;
                  break;
                }
            } else if (op == '=') {
                if (!(num1 == num2)) {
                  result = 0;
                  break;
                }
            } else if (op == '!') {
                if (!(num1 != num2)) {
                  result = 0;
                  break;
                }
            }
            num1 = num2;// 更新num1的值
      }
      
      // 输出最终结果
      printf("%d\n", result);
    }
    return 0;
}

该代码先读取输入数据,然后遍历每一组测试数据,将表达式字符串拆分成数字和运算符,并依次进行比较。在比较运算时,根据运算符的类型,选择相应的逻辑运算符进行比较。同时,通过设置一个初始值为1的result变量,来记录表达式的结果,如果出现了任意一项比较的结果为0,就说明整个表达式结果为0,立即跳出循环。最终输出result的值即可。注意,此处将字符型的数字字符串转换为整型的方法是使用sscanf函数。

kangtong 发表于 2023-5-12 22:28:33

家人们,好像可以用栈弹出
页: [1]
查看完整版本: 家人们谁会,这是哪一块的算法啊