PAT1044_Basic_火星数字(未满分,需改进)

wuchangjian2021-11-04 20:48:43编程学习

 

#include<iostream>
using namespace std;
#include<string>
#include<string.h>
int main() {
	int n = 0;
	cin >> n;
	char s[50];
	int num = 0;
	//char s[][]与string s[]是表示相同
	char str1[13][4] = { "tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou","0" };
	char str2[13][5] = { "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec","tret" };
	int a = 0;
	int flag = 0;
	int k = 0;
	for (int j = 0; j < n; j++) {
		getchar();
		cin.get(s, 50);
		if (s[0] <= 57) {
			//即为地球文
			for (int i = 0; i < strlen(s); i++) {
				//将字符转化成整形
				num = s[i] - '0' + num * 10;
			}
			int m = 1;
			if (num > 13) {
				flag = 1;
				m = 2;
			}
			while (m--) {
				if (flag) {
					a = num / 13;
					for (int i = 1; i < 14; i++) {
						if (a == i) {
							cout << str1[i - 1] << " ";
							flag = 0;
						}
					}
				}
				else {
					a = num % 13;
					for (int i = 1; i < 14; i++) {
						if (a == i) {
							cout << str2[i - 1] << endl;
						}
					}
				}

			}
			num = 0;
		}
		else if (s[0] >= 97) {
			char s1[50];
			char s2[50];
			//进行分段,从空格开始,分成两段
			if (s[3] == ' ') {
				k = 1;
				//将前三项给s1
				for (int i = 0; i < 3; i++) {
					s1[i] = s[i];
				}
				s1[3] = '\0';
				//后三项给s2
				for (int i = 4; i < 8; i++) {
					s2[i - 4] = s[i];
				}
			}
			else {
				strcpy_s(s2, s);
			}
			//开始火星文翻译
			//两个火星文组成数字处理
			if (k) {
				//对第一段数字的处理
				for (int i = 1; i < 14; i++) {
					if (strcmp(s1, str1[i - 1]) == 0) {
						num += i * 13;
					}
				}
				//对第二段文字的处理
				for (int i = 0; i < 14; i++) {
					if (strcmp(s2, str2[i - 1]) == 0) {
						//这个区段有必要加这个为0判断吗?
						if (i == 13) {
							i = 0;
						}
						num += i * 1;
					}
				}
			}
			//一个火星文组成数字处理
			else {
				for (int i = 1; i < 14; i++) {
					if (strcmp(s2, str2[i - 1]) == 0) {
						if (i == 13) {
							i = 0;
						}
						num += i * 1;
					}
					else if (strcmp(s2, str1[i - 1]) == 0) {
						num += i * 13;
					}
				}
			}
			cout << num << endl;
			num = 0;
			k = 0;
		}
	}
}

 

相关文章

LeetCode猜数字大小

题目要求: 猜数字游戏的规则如下: 每轮游戏࿰...

multiscroll.js划分垂直页面滚动插件

multiscroll.js划分垂直页面滚动插件

下载地址 multiscroll.js是一个简单的插件来创建划分多滚动网站两个垂直滚动...

全球停售!强生2023年起停售这款婴儿爽身粉

全球停售!强生2023年起停售这款婴儿爽身粉

2022-08-13 07:37:47 当地时间11日,美国强生公司宣...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。