码迷,mamicode.com
首页 > 其他好文 > 详细

nyoj 594 还是A+B 【字符串】

时间:2015-08-30 13:02:03      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:

还是A+B

时间限制:1000 ms  |  内存限制:65535 KB
难度:1
描述
输入两个小于100的正整数A和B,输出A+B;
A,B均为每位数字对应的英文字母,结果为十进制数。
输入
A,B。
输出
A+B;
样例输入
one + two =
one + two zero =
样例输出
3
21
上传者
TC_常红立

思路:

        首先因为不知道总共有多少个字符串,所以我们不能用scanf(“%s”,&a)来输入,而我们应该用gets(a)来进行输入,然后我们可以通过空格来将他们再次分割开,并且在整个过程中,我们要判断是加法运算还是减法运算,然后分过之后,我们通过一个字符串数组将分割开的字符串转化成数字存到a2数组里面,然后再用循环将需要运算的两个数计算出来就OK了!

代码:

#include <stdio.h>
#include <string.h>
char str[10][10]={"zero","one","two","three","four","five","six","seven","eight","nine"};
int main()
{
	int a,b;
	char c[50],a1[10][20],d;
	int a2[10];
	int u1,u2;
	while(gets(c))//因为字符串的个数没有雨确定,所以先用一个大一点的字符串将所有的字符串都保留下来 
	{
		memset(a2,0,sizeof(a2));//记住清零 
		int len=strlen(c);
		int t=0;//t用来保存每个字符串中字符的下标 
		int e=0;//e用来保存字符串的个数 (从0开始,也就是每个字符串的下标) 
		int flag=0;//flag用来保存是加法运算还是减法运算还是还没有出现运算符号的 
		int k=0;//k用来保存加号或减号的前一个字符串的下标! 
		for(int i=0;i<len;i++)//遍历所有的字符 
		{
			if(c[i]!=' '&&c[i]!='='&&c[i]!='+'&&c[i]!='-')//将每个字符串通过空格分开 
			{
				a1[e][t++]=c[i];
			}
			else if(c[i]==' ')//如果是空格说明这个字符串已经结束 
			{
				a1[e][t]='\0';
				if(c[i-1]>='a'&&c[i-1]<='z')//如果空格前面是字母说明,要将下一个字符串的下标计算出来 
				{
					e++;
					t=0;//并将字符串的首字母位置变成0; 
				}
			}
			if((c[i]=='+'||c[i]=='-')&&flag==0)//判断第一个数字是否结束 
			{
				k=e-1;//保存第一个数字的描述包含几个字符串(从0开始数) 
				if(c[i]=='+')//加号用1表示 
				    flag=1;
				else//减号用2表示 
					flag=2;
			}
		}//以上循环是将各个字符串通过空格分开的过程 
		for(int i=0;i<e;i++)//这个循环是将字符串转化为数字的过程 
		{
			for(int j=0;j<10;j++)//每次都与这10个字符串进行比较,得出对应的数字 
			{
				if(strcmp(a1[i],str[j])==0)
				{
					a2[i]=j;
				}
			}
		}
		u1=u2=0;
		int i;
		for(i=0;i<=k;i++)//计算第一个数字 
		{
			u1=u1*10+a2[i];
		}
		for(;i<e;i++)//计算第二个数字 
		{
			u2=u2*10+a2[i];
		}
		if(flag==1)//加法 
		{
			printf("%d\n",u1+u2);
		}
		else//减法 
		{
			printf("%d\n",u1-u2);
		}
	}
	return 0;
} 



 

版权声明:本文为博主原创文章,未经博主允许不得转载。

nyoj 594 还是A+B 【字符串】

标签:

原文地址:http://blog.csdn.net/dxx_111/article/details/48103097

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!