晴问新手杯——第1场

最近发现一个组织的很不错的练习赛事–晴问新手杯,网址:晴问算法 (sunnywhy.com)

文章目录

  • A. 范围内和值
  • B. 最简计算器

第一场链接:https://sunnywhy.com/contest/32

A. 范围内和值

  • C++

    #include 
    
    int main()
    {
        int N;
        scanf("%d",&N);
        if(N > 200 || N == 1)
            printf("No");
        else
            printf("Yes");
    }
    
    • 一开始漏了1 的那种情况
  • python

    N = int(input())
    
    if N > 200 or N == 1:
        print("No")
    else:
        print("Yes")
    

B. 最简计算器

学习答案的写法

  • 解法1:scanf

    由于两个整数均可能不止一位数,所以可以通过scanf的形式先后以%d的格式输入第一个整数、以%c的格式输入操作符、以%d的格式输入第二个整数,接下来判断输入的操作符是+还是-,分别进行相应的计算即可。

    标程:

    #include 
    int main() {
        int a, b;
        char c;
        scanf("%d%c%d", &a, &c, &b);
        if (c == '+') {
            printf("%d", a + b);
        } else {
            printf("%d", a - b);
        }
        return 0;
    }
    
  • 解法2:stringstream

    可以用字符串流 stringstream 将字符串转化为整数,然后根据运算符计算表达式的值。

    具体实现步骤如下:

    使用 stringstream 将字符串 A 和 B 转化为整数 a 和 b。 根据运算符号 ?,计算表达式的值。 如果 ? 是加号,则表达式的值为 a+b; 如果 ? 是减号,则表达式的值为 a−b; 输出表达式的值。

    标程:

    #include    // 包含输入输出流头文件
    #include     // 包含字符串流头文件,用于将字符串转化为整数
    using namespace std;
    
    int main() {
        string s;          // 定义字符串变量 s,用于存储输入的字符串
        cin >> s;          // 从标准输入流中读取字符串 s
        stringstream ss(s);  // 定义字符串流 ss,将字符串 s 转化为字符串流
        int a, b;          // 定义两个整数变量 a 和 b,用于存储从字符串流中读取的整数
        char op;           // 定义字符变量 op,用于存储运算符
        ss >> a >> op >> b;  // 从字符串流中依次读取整数 a、运算符 op 和整数 b
        int result;        // 定义整型变量 result,用于存储表达式的结果
        if (op == '+') {   // 如果运算符为加号
            result = a + b;  // 计算 a + b 的结果
        } else {           // 如果运算符为减号
            result = a - b;  // 计算 a - b 的结果
        }
        cout << result << endl;  // 输出表达式的结果
        return 0;          // 程序正常结束
    }
    
  • chatgpt给的写法

    #include 
    using namespace std;
    
    int main()
    {
        string str;
        cin >> str;
    
        int pos = str.find("+"); // 查找加号的位置
        if (pos == -1) {
            pos = str.find("-"); // 如果找不到加号,再查找减号的位置
            cout << stoi(str.substr(0, pos)) - stoi(str.substr(pos + 1));
        }
        else {
            cout << stoi(str.substr(0, pos)) + stoi(str.substr(pos + 1));
        }
    
        return 0;
    }
    

    stoi 函数将字符串转换为整数

    这里用到了 **string**类的 **find()函数和 substr()
    函数。
    find()函数用于查找字符串中是否包含某个子字符串,如果找到了返回该子字符串的位置,否则返回 -1。substr()**函数用于截取字符串的一部分,第一个参数指定起始位置,第二个参数指定子串的长度(可选)。

  • python写法

    str = input()
    
    if '+' in str:
        a, b = str.split('+')
        print(int(a)+int(b))
    
    else:
        a, b = str.split('-')
        print(int(a)-int(b))
    

你可能感兴趣的:(数据结构与算法,数据结构与算法)