不枉风来水顺 发表于 2023-11-20 10:25:56

C的困难

本帖最后由 不枉风来水顺 于 2023-11-20 10:27 编辑

这个题不明白这个单位转化是什么意思呀!!
由于喵星人和汪星人属于不同的物种,他们的度量衡也不同,比如喵星人的某单位M乘上11,然后再减去23173恰好等于汪星人的某单位W。也就是说0M等于-23173W,1M等于-23162W,现在请你写一段程序来帮助喵星人和汪星人做单位变换。

输入格式:
只有一行,为一个长度大于1且不超过12的字符串。其中最后一个字符只可能是W或M,代表相应的单位。其它字符代表一个整数,其中A代表负号(只可能是第一个字符),B到K代表9到0。

输出格式:
也只有一行,为变换后的结果(数字用阿拉伯数字,单位仍用M和W)。如果输入的单位为M,则转换为对应的W值输出;如果输入的单位为W,则转换为对应的M值输出;测试数据保证1、输入合法;2、除法运算不会有余数;3、运算过程中所有整数都可以用int存储。

输入样例:
JKM

输出样例:
-23063W


求解答!{:5_104:}
用C语言应该怎么解决呀

isdkz 发表于 2023-11-20 10:26:02

def unit_conversion(s):
    unit = s[-1]
    number = int(s[:-1].replace('A', '-').replace('B', '9').replace('C', '8').replace('D', '7').replace('E', '6').replace('F', '5').replace('G', '4').replace('H', '3').replace('I', '2').replace('J', '1').replace('K', '0'))
    if unit == 'M':
      result = number * 11 - 23173
      return str(result) + 'W'
    elif unit == 'W':
      result = (number + 23173) // 11
      return str(result) + 'M'

print(unit_conversion('JKM'))# 输出: -23063W

这段代码首先根据输入的字符串确定单位是M还是W,然后将字符串中的字母转换为对应的数字,再根据题目给出的转换规则进行计算,最后返回转换后的结果。

Mike_python小 发表于 2023-11-20 10:27:43

根据题目描述,喵星人的单位M乘以11再减去23173得到汪星人的单位W,也就是说 M = (W + 23173) / 11。因此可以根据这个关系来编写一个程序来实现单位的转换。

下面是一个简单的C++程序示例,用于实现喵星人和汪星人单位的转换:


#include <iostream>
#include <string>
using namespace std;

int main() {
    string input;
    cin >> input;

    int value = stoi(input.substr(0, input.size() - 1));
    char unit = input.back();

    if (unit == 'M') {
      int result = (value * 11 - 23173);
      cout << result << "W" << endl;
    } else if (unit == 'W') {
      int result = (value + 23173) / 11;
      cout << result << "M" << endl;
    }

    return 0;
}


这个程序首先读取输入的字符串,然后根据输入的最后一个字符判断单位是M还是W。根据不同的情况进行相应的单位转换计算,并输出结果。

对于输入样例"JKM",程序将输出"-23063W",与题目要求的输出样例一致。
页: [1]
查看完整版本: C的困难