6进制转化成10进制的c语言程序
%代表0 )代表1 ~代表2 @ 代表3 ?代表4 \ 代表5 $ 代表 -1他们的系统是以6为基础的,每位上的数值达到6就向该位的左边进位,如同随后的例子:
)@%表示1*6^2+3*6+0=36+18+0=54
?$~~ 表示4*6^3+(-1)*6^2+2*6+2=864-36+12+2=842
$~~表示(-1)*6^2+2*6+2=-36+12+2=-22
请帮我画个程序流程图,写下程序。谢谢了!
答案:程序给你,很简单,有注释,流程图实在懒得画了……
#include <iostream>
#include <string>
#include <math.h>using namespace std;
//用于找到符号对应的数字
int ConverFromSymbol(char symbol)
{
//符号表
string symbolList = "$%)~@?\\";
//输入符号对应符号表的下标-1就是对应的数字了。
return symbolList.find_first_of(symbol) - 1;
}int main(int argc, _TCHAR* argv[])
{
string input;
int length = 0;
int output = 0;//输入6进制串
cin >> input;
//获取串长度
length = input.length();
//这里i代表位,从最低位开始,j代表n次方,从0开始。
for(int i = length - 1, j = 0; i >= 0; i--, j++)
{
//输出加等数字*6的n次方
output += ConverFromSymbol(input[i]) * pow(6.0, j);
}//输出
cout << output;
//暂停
system("pause");
return 0;
}
环境是vs
上一个:C语言: 无法实现想要的功能
下一个:C语言结构体、共用体、文件的应用