using namespace std; list<char>DecTo2816(double d,unsigned r) { stack<char>intPart; //存储整数部分的转换结果 queue<char>fraPart; //存储小数部分的转换结果 list<char>result; //存储总的转换结果 int intp = (int)d; double frap = d - intp; //intp-整数值,frap-小数值 int res; //表示余数或某数值的整数部分 while (intp) //转换整数部分:将余数转换为字符存入stack<char>intPart { res = intp % r; //取余,若余数<=9则存入对应数字字符,否则存入’A’及以后字母 //……编程任务:完成余下部分 } while (!intPart.empty()) //编程任务(2):将stack<char>intPart数据存入到result { //…… } if (frap == 0)return result; //如果d不包含小数部分则无须继续转换 //以下为转换小数部分,转换结果放入queue<char> fraPart result.push_back('.'); for (int k = 1; k <= 5; k++)//转换结果最多保留到小数点后面5位, { res =(int)( r * frap); //小数部分乘r取整 //……编程任务 } while (!fraPart.empty()) //将小数部分的转换结果存入list<char>result { result.push_back(fraPart.front()); fraPart.pop(); } return result; }
时间: 2024-01-06 15:03:28 浏览: 76
C/C++ MD5算法的实现代码
5星 · 资源好评率100%
这段代码是一个将十进制数转换为二八进制的函数。函数的输入参数包括一个 double 类型的十进制数 d 和一个 unsigned 类型的进制数 r,输出结果为一个存储转换结果的 list<char> 类型的变量 result。函数的实现过程如下:
1. 将整数部分和小数部分分开进行转换,整数部分的转换结果存入 stack<char> 类型的变量 intPart,小数部分的转换结果存入 queue<char> 类型的变量 fraPart。
2. 整数部分的转换采用不断取余法,每次将余数转换为对应的字符存入 intPart 中。
3. 将 intPart 中的数据依次取出存入 result 中。
4. 如果 d 不包含小数部分,则直接返回 result。
5. 小数部分的转换采用乘 r 取整法,每次将整数部分转换为对应的字符存入 fraPart 中。
6. 将 fraPart 中的数据依次取出存入 result 中。
需要注意的是,这段代码中省略了转换整数部分的部分代码和转换小数部分的部分代码,需要补充完整。此外,该函数的转换结果最多保留到小数点后面5位。
阅读全文