#include <stdio.h>
#include <string.h>
char chNumber[10][10] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
int fnStrToNum(char chNum[])
{
int i = 0;
for (i=0; i<10; i++)
{
if (0 == strcmp(chNum, chNumber[i]))
{
return i;
}
}
return 0;
}
int fnStrToInt(char chNum[][10], int n)
{
int i = 0;
int c = 0;
while (n--)
{
c *= 10;
c += fnStrToNum(chNum[i++]);
}
return c;
}
int fnIntToStr(char chNum[][10], int nNum)
{
int r = 0;
char chT[10];
if (nNum<10)
{
strcpy(chNum[0], chNumber[nNum]);
}
else
{
r = fnIntToStr(&chT, nNum/10);
strcpy(chNum[r], chT);
}
return r+1;
}
int main()
{
int i = 0;
int j = 0;
int k = 0;
char chA[2][10] = {0}, chB[2][10] = {0};
int iCount = 0;
int iOut[1000];
while (1)
{
scanf("%s%s", chA[0], chA[1]);
if (chA[1][0] == '+')
{
scanf("%s%s", chB[0], chB[1]);
if (chB[1][0] == '=')
{
iOut[iCount] = fnStrToNum(chA[0]) + fnStrToNum(chB[0]);
}
else
{
iOut[iCount] = fnStrToNum(chA[0]) + fnStrToInt(chB, 2);
}
}
else
{
scanf("%s%s", chB[0], chB[1]);
if (chB[1][0] == '=')
{
iOut[iCount] = fnStrToInt(chA, 2) + fnStrToNum(chB[0]);
}
else
{
iOut[iCount] = fnStrToInt(chA, 2) + fnStrToInt(chB, 2);
}
}
if (!iOut[iCount])
{
break;
}
iCount++;
}
char chC[3][10];
for (i=0; i<iCount; i++)
{
k = fnIntToStr(chC, iOut[i]);
for (j=0; j<k; j++)
{
printf("%s ", chC[j]);
}
printf("\n");
}
return 0;
}
经过测试,感谢采纳!