进制转化类题目类型:

代码详解及注释解答: 

//进制转化问题
#include <bits/stdc++.h>
using namespace std; int main(){
// 1.反序数 123->321
// int n;
// int sn = 0;//存取反序数
// scanf("%d", &n);
// while( n!=0 ){
// sn = sn * 10;
// sn += (n%10);//求出最后一位,即123的3
// n = n/10;//去除最后一位123/10=12
// }
// cout << sn << endl; // 2.10进制转x进制代码(x小于10的情况)
// int n,x;//10进制数和转换进制x
// scanf("%d %d", &n, &x);
// int result[105];//存储结果
// int count = 0;//result数组下标
// while( n!=0 ){
// int w = n%x;
// result[count++] = w;
// n = n/x;
// }
// //打印结果,倒序
// for(int i=count-1; i>=0; i--){
// cout << result[i] << " ";
// } // 3.10进制转x进制代码(通用版本)
// int n,x;//10进制数和转换进制x
// scanf("%d %d", &n, &x);
// char result[105];//存储结果(有字符用char型)
// int count = 0;//result数组下标
// while( n!=0 ){
// int w = n%x;
// if( w<10 ){//小于10,例如:数字6-->'6'
// result[count++] = w+'0';
// }else{//大于10,转化成为大写字母
// result[count++] = (w-10)+'A';
// }
// n = n/x;
// }
// //打印结果,倒序
// for(int i=count-1; i>=0; i--){
// cout << result[i] << " ";
// } // 4.2进制转10进制
// char s[105];
// scanf("%s", &s);
// int sum = 0;
// for(int i=0; i<strlen(s); i++){
// if( s[i]=='0' ){
// sum *= 2;
// }else{
// sum = sum*2+1;
// }
// }
// cout << sum << endl; // 5.x进制转10进制(通用)
// char s[105];//存储要转换的字符串
// int x;//进制x
// scanf("%s %d", &s, &x);
// int sum = 0;
// for(int i=0; i<strlen(s); i++){
// sum = sum * x;
// //如果在0-10之内,直接加上该字符转化成的数字
// if( (s[i]-'0')>=0 && (s[i]-'0')<=9 ){
// sum += s[i]-'0';
// }else{//否则就是A,B,C...这样的,要转化一下
// sum += (s[i]-'A') + 10;
// }
// }
// cout << sum << endl; // 6.x进制转化y进制
// x进制-->10进制-->y进制
// char s[105];//存储要转换的字符串
// char result[105];
// int count = 0;//result数组下标
// int x, y;
// scanf("%s %d %d", &s, &x, &y);
// int sum = 0;
// //输入的x进制数转化为10进制数
// for(int i=0; i<strlen(s); i++){
// sum = sum * x;
// int temp = s[i]-'0';
// if( temp>=0 && temp<=9 ){
// sum += temp;
// }else{
// sum += (s[i]-'A')+10;
// }
// }
// //10进制数转化为y进制,存到result数组
// while( sum!=0 ){
// int k = sum%y;
// if( k<10 ){
// result[count++] = k+'0';
// }else{
// result[count++] = (k-10)+'A';
// }
// sum = sum/y;
// }
// //倒着打印
// for(int i=count-1; i>=0; i--){
// cout << result[i] << " ";
// } // 7.字符串浮点数转浮点数
// char s[105];//存字符串浮点数
// int pointIndex = 0;//找到小数点'.'在s中的下标
// double sum = 0;//存结果
// scanf("%s", &s);
// int len = strlen(s);
// //1.找小数点位置
// for(int i=0; i<len; i++){
// if( s[i]=='.' ){
// break;
// }
// pointIndex++;
// }
// //2.计算整数部分
// for(int i=0; i<pointIndex; i++){
// sum = sum*10 + (s[i]-'0');
// }
// //3.计算小数部分
// int j = 0;
// for(int i=pointIndex+1; i<len; i++){
// j--;
// //pow(x, y)=x的y次方
// double temp = pow(10, j);
// sum += (s[i]-'0')*temp;
// }
// cout << sum << endl; // 8.浮点数转字符串
double n;//浮点数
char result[105];//存储结果字符串
int count = 0;
scanf("%lf", &n);
//1.先存整数
int x = (int)n;
while( x>0 ){
result[count++] = x%10 + '0';
x /= 10;
}
//改变存储的整数部分的顺序
for(int i=0; i<count; i++){
result[count-i-1] = result[i];
}
//2.存小数点
result[count++] = '.';
//3.存小数部分
double y = n - int(n);//取出小数部分
for(int i=0; i<10; i++){//后面的超过10位的小数约等于0,不考虑
y = y*10;//例如0.46-->4.6,取出4
result[count++] = int(y) + '0';//取出4存进去
y = y - int(y) + 1e-11;//4.6-->0.6
//在这里+ 1e-11为了防止精度丢失问题:66.66-->结果:66.659999999
}
//去掉后面的0
while(result[--count] == '0');
result[++count] = '\0';
//打印
printf("%s", result); return 0;
}

第八个 浮点数66.66 转 字符串浮点数“66.66” 这里:需要注意一下

习题推荐:

《N诺机试指南》(五)进制转化的更多相关文章

  1. 《N诺机试指南》(一)数组妙用

    题目A: 大家思路有可能是这样: 将输入数据全部存储到一个数组里,然后可以冒泡排序一波,从小到大排序 那么怎么找到重复次数呢:我是这样想的,新定义数组b,原数组a,首先b[0] = a[0],定义指针 ...

  2. 《N诺机试指南》(二)C++自带实用函数

    1.排序sort函数: 2.查找:  实例:  3. 队列:

  3. 《N诺机试指南》(三)STL使用

    1.vector 2.queue 3.stack 4.map 5.set 6.多组输入输出问题 详解见代码以及注释: //学习STL的使用 #include <bits/stdc++.h> ...

  4. 《N诺机试指南》(七)排版类问题

    1.菱形问题: 解析: 主要通过打印空格和星形来打印整个图形,将整体分为=上三角形+下三角形 首先观察上三角形可以发现:第一行2个空格1个星.第二行1个空格3个星.第三行0个空格5个星     空格数 ...

  5. 《N诺机试指南》(八)日期、字符串、排序问题

    1.日期问题: 输入: 例题: 代码: #include <stdio.h> #include <bits/stdc++.h> struct node{ int year, m ...

  6. 【风马一族_C】进制转化

    #include "stdio.h" #include "Math.h" #define number 50 //设置数组的长度 int num10; //十进 ...

  7. c语言进制转化

    #include <stdio.h> // 进制转化 int main(void) { ; ; int i3 = 0x32C; printf( printf( printf("十 ...

  8. 编码/解码和进制转化工具hURL

    编码/解码和进制转化工具hURL   在安全应用中,各种编码方式被广泛应用,如URL编码.HTML编码.BASE64等.而在数据分析时候,各种进制的转化也尤为频繁.为了方便解决这类问题,Kali Li ...

  9. HDU5050:Divided Land(大数的进制转化与GCD)

    题意:给定大数A和B,求gcd.所有数字都是二进制. 思路:先输入字符串,再转化为大数,然后用大数的gcd函数,最后转化为字符串输出. 利用字符串和大数转化的时候可以声明进制,就很舒服的完成了进制转化 ...

随机推荐

  1. Netty快速入门(10)Reactor与Netty

    Reactor模式 Reactor是1995年由道格拉斯提出的一种高性能网络编程模式.由于好多年了,当时的一些概念与现在略有不同,reactor模式在网络编程中是非常重要的,可以说是NIO框架的典型模 ...

  2. Java BIO NIO 与 AIO

    回顾 上一章我们介绍了操作系统层面的 IO 模型. 阻塞 IO 模型. 非阻塞 IO 模型. IO 复用模型. 信号驱动 IO 模型(用的不多,知道个概念就行). 异步 IO 模型. 并且介绍了 IO ...

  3. js对象转换为json格式时,js对象属性中有值为null和undefined注意事项

    当属性值为null时: 当属性值为undefined时: 只有当属性值为未定义时, js对象转换成json格式时会忽略该属性.

  4. 倍增笔记ST表

    https://noip-1253948194.cos.ap-beijing.myqcloud.com/%E5%80%8D%E5%A2%9E-ST%E7%AE%97%E6%B3%95.mp4 1123 ...

  5. dubbo配置文件解读(2)

    <dubbo:service/> <dubbo:reference/> <dubbo:protocol/> <dubbo:registry/> < ...

  6. 前端笔记6-js2

    1.break 和continue用法 break结束本次循环,如果想结束外层循环,可以通过这个label来指定要结束的循环. continue可以用来跳过当次循环,如果想跳过外次循环,也可以通过这个 ...

  7. 150行代码打造.net core生产力工具,你值得拥有

    你是否在初学 .net core时,被依赖注入所折磨? 你是否在开发过程中,为了注入依赖而不停的在Startup中增加注入代码,而感到麻烦? 你是否考虑过或寻找过能轻松实现自动注入的组件? 如果有,那 ...

  8. 关于neo4j初入门(3)

    这一章主要是函数的部分 UPPER 它需要一个字符串作为输入并转换为大写字母. UPPER (<input-string>)<input-string>可以是来自Neo4J数据 ...

  9. 为什么 K8s 在阿里能成功?| 问底中国 IT 技术演进

    作者: 曾凡松 阿里云云原生应用平台高级技术专家 张振 阿里云云原生应用平台高级技术专家 导读:本文描述了阿里巴巴在容器管理领域的技术演进历程,解读了为什么 K8s 最终能够大获成功的原因,以及到今年 ...

  10. 【模板】2-SAT问题

    问题简述 有 \(n\) 个变量,每个变量可赋为 \(1\) 或 \(0\) 必须满足一些限制条件,如" \(a\) 为1 或 \(b\) 为0 " " \(a\) 为0 ...