1100. Mars Numbers (20)

本文提供了一个C++程序,用于将十进制数转换为13进制,并且在输出时仅保留最高位,忽略低位的0。包括输入解析、数值转换和输出处理。

1.十进制与13进制之间的转换

2.注意输入为13,26,39整数时,只输出一个marsNum,后面低位的0不输出


AC代码:

//#include<string>
//#include <iomanip>
#include<vector>
#include <algorithm>
//#include<stack>
#include<set>
#include<queue>
#include<map>
//#include<unordered_set>
#include<unordered_map>
//#include <sstream>
//#include "func.h"
//#include <list>
#include<stdio.h>
#include<iostream>
#include<string>
#include<memory.h>
#include<limits.h>
using namespace std;
bool isNum(string a)
{
	for (int i = 0; i < a.size(); i++)
	{
		if (a[i]>'9' || a[i] < '0')
			return false;
	}
	return true;
}
int main(void)
{
	vector<string> marsNum = { "tret","jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec" };
	vector<string> marsNum2 = { "tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou" };
	map<string, int> mars2Num;
	map<string, int> mars2Num2;
	for (int i = 0; i < marsNum.size(); i++)
	{
		mars2Num[marsNum[i]] = i;
	}
	for (int i = 0; i < marsNum2.size(); i++)
	{
		mars2Num2[marsNum2[i]] = i+1;
	}
	string str = "";
	string n = "";
	getline(cin, n);
	int sum = 0;
	for (int i = 0; i < n.size(); i++)
	{
		sum = sum * 10 + n[i] - '0';
	}
	for (int k = 0; k < sum; k++)
	{
		getline(cin, str);
		if (isNum(str))
		{
			int num = 0;
			for (int i = 0; i < str.size(); i++)
			{
				num = num * 10 + str[i] - '0';
			}
			string ans = "";
			int  low = num % 13;//计算高位和地位
			int  high = num / 13;
			if (high == 0)
				ans = marsNum[low];
			else if (low == 0)//注意输入为13,26,39整数时,只输出一个marsNum,后面低位的0不输出
				ans = marsNum2[high - 1] ;
			else
				ans = marsNum2[high - 1] + " " + marsNum[low];
			cout << ans << endl;
		}
		else
		{
			int ans = 0;
			if (str.size() == 3)
			{
				if (mars2Num.find(str) != mars2Num.end())
				{
					ans = mars2Num[str];
				}
				else
				{//找不到,是在十位上
					ans = mars2Num2[str]*13;
				}
			}
			else
			{
				string high = str.substr(0, 3);
				string low = str.substr(4);
				ans = mars2Num2[high] * 13 + mars2Num[low];
			}
			cout << ans << endl;
		}
	}
	return 0;
}


### MIPS 架构在 MARS 模拟器中的使用 MARS一个专门用于教育目的的 MIPS 汇编语言模拟器,它为学习和理解 MIPS 架构提供了良好的环境[^1]。MARS 的版本 3.2.1 在教程中被广泛使用,帮助用户探索 MIPS 汇编语言的核心功能及其在 CPU 设计中的应用。 MIPS 架构的一个显著特点是其固定的指令格式,所有指令均采用 32 位长度表示。尽管这种设计可能显得“死板”,并且在存储空间利用上不够高效,但它带来了规律性和简单性,降低了 CPU 设计的复杂度[^2]。因此,MIPS 架构非常适合初学者学习计算机体系结构和汇编语言的基础知识。 在 MARS 模拟器中,用户可以编写、调试和运行 MIPS 汇编代码。以下是 MARS 模拟器的一些关键功能和使用方法: #### 1. 界面布局与工具 MARS 提供了一个直观的图形用户界面(GUI),包括代码编辑器、寄存器视图、数据段视图以及控制台输出窗口。这些工具使得用户能够轻松地观察程序执行过程中的状态变化。 #### 2. 汇编代码的编写与调试 用户可以在 MARS 中编写 MIPS 汇编代码,并通过单步执行、断点设置等功能逐步分析程序行为。例如,以下是一个简单的 MIPS 汇编代码示例,用于计算两个数的和: ```assembly # Example of adding two numbers in MIPS assembly .data num1: .word 5 num2: .word 10 result: .word 0 .text .globl main main: # Load values from memory lw $t0, num1 lw $t1, num2 # Add the values add $t2, $t0, $t1 # Store the result back to memory sw $t2, result # Exit program li $v0, 10 syscall ``` #### 3. 寄存器与内存管理 MARS 允许用户实时查看和修改通用寄存器、特殊寄存器以及内存内容。这对于理解 MIPS 架构中的数据流动和存储机制非常有帮助。 #### 4. 教学优势 由于 MIPS 指令集的规则性和一致性,MARS 模拟器成为学习计算机体系结构的理想工具。它不仅帮助学生掌握汇编语言编程技巧,还让他们深入了解 CPU 的内部工作原理[^2]。 ### 总结 MARS 模拟器为 MIPS 架构的学习提供了强大的支持,其固定指令格式的特性虽然存在一些缺点,但极大地简化了教学和实践过程。通过 MARS,用户可以更深入地理解 MIPS 汇编语言及其在 CPU 设计中的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值