当前位置:编程学习 > C/C++ >>

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语言结构体、共用体、文件的应用

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,