题解 | #A + B#

A + B

https://www.nowcoder.com/practice/5fb3548802bb4a13a10c2e53a6fbfdd9

思路:

  1. 读入字符串,分别求出aa和bb两个加数;
  2. 使用一个temp字符串,读取每一个英文单词,在number函数中,将temp转成相应的数字,返回值为该数字
  3. aa求法:在a[i] != '+' 之前的每一个英文单词都依次存入temp,转成数字后,"存入"aa;bb同理。
#include <iostream>
#include <cstring> 
#include <algorithm>
#include <math.h>
#include <string> 
#include <stdlib.h>
using namespace std;
#define N 81
char num[10][6] = {{"zero"},{"one"},{"two"},{"three"},{"four"},{"five"},{"six"},{"seven"},{"eight"},{"nine"}};
int number(char temp[]){
	for(int i = 0; i < 10; i++){
		if (strcmp(temp,num[i])==0) return i;
	}
	return 0;
}
int main(){
	string a;
	while(getline(cin ,a)){
		//cout<< a<<endl;
		int aa= 0, bb = 0;
		int i = 0, j = 0;
		char temp[7],ch = '#';
	  //处理加数aa
		while (a[i] != '+'){
			if (a[i]!=' ')
				temp[j++] = a[i++];
			else 
			{	
				temp[j] = '\0';	//给temp字符串赋字符串结束符 便于匹配number数组
				aa = aa*10+number(temp);	//将temp转成的数字"存入"aa
				memset(temp,'0',7);	//将temp全部置'0',没有这一步也可以,但是第29行的'\0'一定要有(这是第31行)
				j = 0;	//j置0,便于字符存入temp
				i++;
			}
		}
		i+=2;	//跳过 + 和空格
		j = 0;
	  //处理加数bb 方法同处理aa
		while (a[i] != '='){
			if (a[i]!=' ')
				temp[j++] = a[i++];
			else 
			{	
				temp[j] = '\0';
				bb = bb*10+number(temp);
				memset(temp,'0',7);
				j = 0;
				i++;
			}
		}
		if (!(aa== 0 && bb == 0))
			cout <<aa+bb<<endl;
	}
}

全部评论

相关推荐

11-09 11:01
济南大学 Java
Java抽象带篮子:外卖项目真得美化一下,可以看看我的详细的外卖话术帖子
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务