您的位置:首页 > 其它

已知:yi er san si wu liu qi ba jiu 分别对应 123456789,对一段只含 有这几种字符的字符串进行转换,转换成相应的数字

2014-04-12 16:51 417 查看
#include <iostream>
#include <string>
using namespace std;
char* ss[9] = {"yi", "er","san","si", "wu", "liu", "qi", "ba", "jiu"};
int fun(string  str)
{
char *buffer = new char[str.length()];
basic_string<char>::size_type n;
n = str._Copy_s(buffer, str.length(), str.length());
buffer
= '\0';
int i = 0;
int sum = 0;
int d,j;
while (buffer[i] != '\0')
{
if (buffer[i] == 'y' || buffer[i] == 'e' || buffer[i] == 'w' || buffer[i] == 'q' || buffer[i] == 'b')
d = 2;
else if (buffer[i] == 'l' || buffer[i] == 'j')
d = 3;
else if (buffer[i] == 's')
{
if (buffer[i + 1])
d = 3;
else
d = 2;
}
//用 法: int strncmp(char *str1, char *str2, int maxlen)
//说明:此函数功能即比较字符串str1和str2的前maxlen个字符
//如果前maxlen字节完全相等,返回值就 = 0;在前maxlen字节比较过程中
//如果出现str1
与str2
不等,则返回(str1
- str2
)
for (int k = 0; k < 9; k++)
if (strncmp(buffer + i, ss[k], d) == 0)
j = k + 1;
sum = 10 * sum + j;
i = i + d;
}
return sum;
}

测试范例:

yiersanwuqijiuba

1235798

int main()
{
string s;
cin >> s;
int outsum = fun(s);
cout << outsum << endl;
return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐