字母二十六进制与十进制数之间的转化

来源:互联网 发布:手机拼图软件哪个好 编辑:程序博客网 时间:2024/05/29 10:51

字母表示十进制数:

a 1

b2

aa 27

ab  28

huawei 104680767

输入参数是字符串,字母必须是小写,输入的字母最小是1位,最大是6位,输入十进制数不超过32位整数的最大值,判断字符串的有效性,如果无效,输出“”ERROR”

输出描述:输入是十进制数,输出是对应的字母表示的数;输入是字母,输出是十进制数。

void convert(const char *input, char *output)输入参数是 input,输出参数是output。输出通过输出参数输出。例如;


  1. #include "stdafx.h"  
  2. #include <iostream>  
  3. using  namespace std;  
  4.   
  5. int main(int argc, char *argv[])  
  6. {  
  7.     for (int i = 0; i<argc; i++)  
  8.     {  
  9.         cout << argv[i] << '\t';  
  10.     }  
  11.     return 0;  
  12. }  
#include <iostream>  
#include <string>  
#include <cmath>  
using namespace std;
string s,s1;
int number;
void convert(const char *input, int *output)
{
int len = strlen(input);
int sum = 0;
for (int i = 0; i <len; i++)
{
sum += pow(26, s.size() - i - 1)*int(s[i] - 'a' + 1);


}
///ss = (char)sum;
output = &sum;
cout << *output << endl;   //cout << *output << endl则输出一个数值5


}
int main()
{
cin >> s;
int *put =new int[1000];
convert(s.c_str(), put); 

}

以下是整个程序:

/*while (cin >> s >> number)


{


int sum = 0;


/*for (int i = s.size(); i>0; i--)


{
sum += pow(26, (i - 1))*int(s[s.size() - i] - 'a' + 1);


}
for (int i = 0; i < s.size(); i++)
{
sum += pow(26, s.size() - i - 1)*int(s[i] - 'a' + 1);


}


cout << sum << endl;
//  此处的写法和题目中要求还是不太一样此处Z=0,而题中是z=26
/*string az("zabcdefghijklmnopqrstuvwxy");
string dest;


do
{
dest = az[number % 26] + dest;
number /= 26;
} while (number != 0);
cout << dest << endl;*/
string res;
while (number > 0)
{
int m = number % 26;
if (m == 0) m = 26;
res =(char)(m + 'a'-1) + res;//或者写成res=(char)(m+96)+res;
number = (number - m) / 26;
}
cout << res << endl;*/
system("pause");
return 0;


阅读全文
0 0
原创粉丝点击