《N诺机试指南》(五)进制转化
进制转化类题目类型:

代码详解及注释解答:
//进制转化问题
#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诺机试指南》(五)进制转化的更多相关文章
- 《N诺机试指南》(一)数组妙用
题目A: 大家思路有可能是这样: 将输入数据全部存储到一个数组里,然后可以冒泡排序一波,从小到大排序 那么怎么找到重复次数呢:我是这样想的,新定义数组b,原数组a,首先b[0] = a[0],定义指针 ...
- 《N诺机试指南》(二)C++自带实用函数
1.排序sort函数: 2.查找: 实例: 3. 队列:
- 《N诺机试指南》(三)STL使用
1.vector 2.queue 3.stack 4.map 5.set 6.多组输入输出问题 详解见代码以及注释: //学习STL的使用 #include <bits/stdc++.h> ...
- 《N诺机试指南》(七)排版类问题
1.菱形问题: 解析: 主要通过打印空格和星形来打印整个图形,将整体分为=上三角形+下三角形 首先观察上三角形可以发现:第一行2个空格1个星.第二行1个空格3个星.第三行0个空格5个星 空格数 ...
- 《N诺机试指南》(八)日期、字符串、排序问题
1.日期问题: 输入: 例题: 代码: #include <stdio.h> #include <bits/stdc++.h> struct node{ int year, m ...
- 【风马一族_C】进制转化
#include "stdio.h" #include "Math.h" #define number 50 //设置数组的长度 int num10; //十进 ...
- c语言进制转化
#include <stdio.h> // 进制转化 int main(void) { ; ; int i3 = 0x32C; printf( printf( printf("十 ...
- 编码/解码和进制转化工具hURL
编码/解码和进制转化工具hURL 在安全应用中,各种编码方式被广泛应用,如URL编码.HTML编码.BASE64等.而在数据分析时候,各种进制的转化也尤为频繁.为了方便解决这类问题,Kali Li ...
- HDU5050:Divided Land(大数的进制转化与GCD)
题意:给定大数A和B,求gcd.所有数字都是二进制. 思路:先输入字符串,再转化为大数,然后用大数的gcd函数,最后转化为字符串输出. 利用字符串和大数转化的时候可以声明进制,就很舒服的完成了进制转化 ...
随机推荐
- Centos7 编译安装PHP7
Centos7 编译安装PHP7 编译安装的方式可以让组件等设置更加合理,但需要你对PHP的代码及各种配置非常的熟悉,以下为大致的安装流程,大家可以参考 1.下载编译工具 yum groupinsta ...
- SQL server 基本语句
--查询数据库是否存在 if exists ( select * from sysdatabases where [name]='TestDB') print 'Yes, the DB exists' ...
- A*寻路算法的个人理解
A*寻路算法是一个求两点之间的最短路径的方法 算法详情如下: 准备工作: 两个容器: open容器和close容器 价值估算公式: F = G + H G:从起点移动到指定方格的移动代价: ...
- 0x80070035找不到网络路径
如果这个报错发生:自己的网络正常,其他人可以正常访问服务器,而自己无法访问服务器.原因就是TCP/IP NetBIOS Helper服务被停止. 打开services.msc,启动此服务即可. 该服务 ...
- dp - 递推
C. Multiplicity time limit per test 3 seconds memory limit per test 256 megabytes input standard inp ...
- FreeRTOS低功耗模式
在系统或电源复位以后,微控制器处于运行状态.当CPU不需继续运行时,可以利用多种低功耗模式来节省功耗,例如等待某个外部事件时,用户需要根据最低电源消耗,最快速启动时间和可用的唤醒源等条件,选定一个最佳 ...
- Gitlab的介绍
什么是GitLab ?◆GitLab是一个开源分布式版本控制系统◆开发语言: Ruby◆功能:管理项目源代码.版本控制.代码复用与查找GitLab与GitHub的不同 ◆ Github分布式在线代码托 ...
- IDEA新建maven项目没有webapp目录解决方法
转载地址:https://www.cnblogs.com/oldzhang1222/p/10429827.html 先创建的页面修改路径 修改路径如下 添加并完善路径\src\main\webapp ...
- isinstance 和type
推荐使用 isinstance 判断对象类型. isinstance 的用法: 语法: isinstance(object, classinfo) 其中,object 是变量,classinfo 是类 ...
- Excel.Application class
https://docs.microsoft.com/en-us/javascript/api/excel/excel.application?view=office-js Represents th ...