进制转化类题目类型:

代码详解及注释解答: 

//进制转化问题
#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. 2016女生专场 ABCDEF题解 其他待补...

    GHIJ待补... A.HUD5702:Solving Order Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/3276 ...

  2. Freemarker 的基础使用 (二)

    freemarker 的基础使用二 ftl 文件 <html> <head> <meta http-equiv="Content-Type" cont ...

  3. Netty快速入门(03)Java NIO 介绍-Buffer

    NIO 介绍 NIO,可以说是New IO,也可以说是non-blocking IO,具体怎么解释都可以. NIO 1是在JSR51里面定义的,在JDK1.4中引入,因为BolckingIO不支持高并 ...

  4. echarts更改折线图区域颜色、折线颜色、折点颜色

    series : [ { name:'订单流入总数', type:'line', stack: '总量', areaStyle: { normal: { color: '#8cd5c2' //改变区域 ...

  5. vue状态管理vuex从浅入深详细讲解

    1.vuex简介以及创建一个简单的仓库 vuex是专门为vue框架而设计出的一个公共数据管理框架,任何组件都可以通过状态管理仓库数据沟通,也可以统一从仓库获取数据,在比较大型的应用中,数据交互庞大的情 ...

  6. Android通过子线程更新UI的几种方式

    一般情况下,UI的更新都少不了Handler,首先我们先了解一下Handler机制: Handler消息机制 定义 Message 线程间通信的数据单元,可通过message携带需要的数据创建对象:M ...

  7. DP- 01背包问题

    这个01背包 , 理解了一天才勉强懂点 , 写个博客  (  推荐   http://blog.csdn.net/insistgogo/article/details/8579597) 题目 : 有N ...

  8. 使用 OAS(OpenAPI标准)来描述 Web API

    无论哪种类型的Web API, 都可能需要给其他开发者使用. 所以API的开发者体验是很重要的. API的开发者体验, 简写为 API DX (Developer Experience). 它包含很多 ...

  9. svn和 android adt的 eclipse插件更新地址

    下边这两个插件的更新地址是每次安装android开发环境时都能用到的,为了方便在这里记录一下. android adt: http://dl-ssl.google.com/android/eclips ...

  10. 「 从0到1学习微服务SpringCloud 」06 统一配置中心Spring Cloud Config

    系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...