进制转化类题目类型:

代码详解及注释解答: 

//进制转化问题
#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. 在idea中运行GitHub项目

    1.首先在本地建一个文件夹,比如qm 2. 在GitHub中找到你所运行项目的路径 3.在idea中[File]-->[New]--->[Project from Version Cont ...

  2. Scala实践8

    1.1继承类 使用extends关键字,在定义中给出子类需要而超类没有的字段和方法,或者重写超类的方法. class Person { var name = "zhangsan" ...

  3. 用python搭一个超简易的文件服务器

    这个文件服务器纯粹是在学习python cgi编程时,顺便玩玩而已,因为搭文件服务器的话完全可以linux,简单方便,这里就是随便玩玩,功能也就是只能下载文件 1.登录页面,做个简单验证 新建一个ht ...

  4. cogs 2. 旅行计划 dijkstra+打印路径小技巧

    2. 旅行计划 ★★   输入文件:djs.in   输出文件:djs.out   简单对比时间限制:3 s   内存限制:128 MB [题目描述] 过暑假了,阿杜准备出行旅游,他已经查到了某些城市 ...

  5. NameError:name ‘xrange’ is not defined

    原因: 在Python 3中,range()与xrange()合并为range( ). 我的python版本为python3.5. 解决办法: 将xrange( )函数全部换为range( ).

  6. MySQL 行列相互转换

    行列相互转换 /*创建表*/ CREATE TABLE ic ( NAME ), Product ), amount INT ); INSERT INTO ic VALUES (), (), (), ...

  7. java intellij 工具的简单用法

    一.目录结构 1.新建项目(Empty Project) ->  新建module(可以有多个) => 出来src文件夹 -> 在src文件夹中新建package -> 在pa ...

  8. 安装Jupyter Notebook

    1.安装Ipython pip3 install -i https://pypi.douban.com/simple ipython 2.安装jupyter pip3 install -i https ...

  9. 认识一下 RabbitMQ

    分布式系统中,如何在各个应用之间高效的进行通信,是系统设计中的一个关键. 使用 消息代理(message broker) 是一个优雅的解决方案. RabbitMQ 就是一个被广泛应用的消息代理,遵循 ...

  10. XML学习笔记——关于XML解析器

    本篇文章基于W3C而写 在Firefox及其他浏览器中的XML解析器(除IE) var xmlDoc=document.implementation.createDocument("&quo ...