进制转化类题目类型:

代码详解及注释解答: 

//进制转化问题
#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. 讲真,这两个IDE插件,可以让你写出质量杠杠的代码

    昨晚躺在床上看<拯救大兵瑞恩>的时候,不由得感叹道:"斯皮尔伯格的电影质量真高,片头真实地还原了二战的残酷性."看完后,我的精神异常的亢奋,就想写篇文章来帮助大家提高一 ...

  2. 搞定SpringBoot多数据源(1):多套源策略

    目录 1. 引言 2. 运行环境 3. 多套数据源 3.1 搭建 Spring Boot 工程 3.1.1 初始化 Spring Boot 工程 3.1.2 添加 MyBatis Plus 依赖 3. ...

  3. 原生javascript实现二级延时菜单

    一.实现原理: 使用定时器和排他思想完成 二.代码: <!DOCTYPE html> <html> <head> <title></title&g ...

  4. ILSpy反编译工具之C#反汇编

    1.下载ILspy工具 https://github.com/icsharpcode/ILSpy#ilspy------- 注意: ILspy需要在电脑上安装.NET Framework 4.0.   ...

  5. dp-划分数 (递推)

    问题描述 : 有 n 个无区别的物品 , 将他们分成 不超过 m 堆, 问有多少种分法 ? 例如 : n = 4 , m = 3 , 则总共有的分法是 1 + 2 +1 , 0 + 1 + 3 , 0 ...

  6. SBT与Play配置文件

    1. 配置文件类JSON格式,符合SCALA语法规范2. :=是最常用的方法,其作用就是将key设置成expression的值,相同的key如果被多次赋值,则后面的值会覆盖掉前面的值.适用于简单类型的 ...

  7. 2、Automapper安装及配置

    一. 安装 我们安装是在 vs 中使用Nuget的方式进行安装 不过安装时需注意一件事情就是,版本问题,我示例使用的是.net framework 4.5.2,所以我安装AutoMapper的版本是7 ...

  8. Prop验证、inheritAttrs、$attrs的用法和坑

    Prop Prop验证 Vue.component('my-component', { props: { // 基础的类型检查 (`null` 和 `undefined` 会通过任何类型验证) pro ...

  9. 百度DMA+小度App的蓝牙语音解决方案案例展示

    前记   跟着百度也有一段时间了,经过一年多的努力,我们也做出了一些产品.下面就给大家秀一下我们做的产品.有类似需求的朋友可以多多交流. 智能语音耳机   这个是就是可以通过按键来调用小度app的运动 ...

  10. SqlServer分页存储过程(多表查询,多条件排序),Repeater控件呈现数据以及分页

        存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出 ...