进制转换
来源:互联网 发布:解决json包含html标签 编辑:程序博客网 时间:2024/06/06 02:47
进制转换
- 题目来源:
9度 1118
代码
#include <stdio.h>#include <stdlib.h>#include <string.h> //注意:string要加上.husing namespace std;int main() { int a,b; char n[101]; while (scanf("%d%s%d", &a, n, &b)!=EOF) { long sum = 0; int c = 1; //注意权值的使用 int len = strlen(n); for (int i=len-1; i>=0; i--) { //注意用法 int temp = 0; if (n[i]>='0'&&n[i]<='9') { temp = n[i]-'0'; } if (n[i]>='a'&&n[i]<='f') { temp = n[i]-'a'+10; } if (n[i]>='A'&&n[i]<='F') { temp = n[i]-'A'+10; } sum = sum+temp*c; c = c*a; //权值会随着指针变化 } char ans[101]=""; //注意:不能用char ans[101];因为在循环过程中,当上一次的ans的长度大于本次时,那么多出的部分将依然保留 int i=0; do{ int t = sum%b; if (t>=0&&t<=9) { ans[i++] = t+'0'; } if (t>=10&&t<=15) { ans[i++] = t-10+'A'; } sum /= b; }while (sum!=0); int ans_len = strlen(ans); for (int j=ans_len-1; j>=0; j--) { printf("%c", ans[j]); } printf("\n"); } return 0;}
注意点:
- 使用strlen时,要包含头文件< string.h>而不是< string>
- char ans[101]=”“;而不使用char ans[101];见下;
- 当循环使用第二次的输入(15 Aab3 15)计算时,int ans_len = strlen(ans);计算的值还是上一次(15 Aab3 2)时的长度,所以会把上一次的如图所示的红线中的数字在下一次显示出来。
- 另外:strlen最好不要在for(int i=strlen(str)-1;i>=0;i–)中使用,最好放到for语句的外面;在9度中,放在for语句括号内,会编译错误。
- 可以利用字符串表示不同进制的整数。
0 0
- 进制转换,类型转换
- 进制转换(进制转换)
- 进制转换-----十进制转换成二进制
- 进制的转换,八进制转换十六进制
- 进制转换,运算符,类型转换,
- 十进制转换2-9进制转换
- 进制转换
- 无限进制转换
- 进制转换
- 进制转换
- 进制转换
- 【整理】进制转换
- 进制转换
- 七、进制转换
- 进制转换
- 进制转换
- 进制转换
- NotesScript 进制转换
- 可以ping通,但是ssh无法连接linux(主机连接虚拟机里面的linux)
- jQuery禁止|禁用|屏蔽鼠标右键
- C++对象内存布局-单一继承
- Kafka跨集群同步工具——MirrorMaker
- Java SE 基础知识
- 进制转换
- 【项目管理】如何定义开放性问题和如何在项目中跟踪开放性问题
- JavaEE项目如何引入jar
- 专利文档一般有哪些内容
- SpringMVC深度探险(四) —— SpringMVC核心配置文件详解
- MFCC语音识别特征
- 【Unity】通过实时记录模拟时间倒退效果回放
- JDBC连接数据库步骤
- 简单的angular实例