紧急求助,是在是脑子快炸了,进制转换的问题
今天老师要求写一个十进制转其他进制的小程序。就是输入一个十进制数,输出它的2-16进制数。
自己写了半天,二进制就不说了,三进制开始,输出就全是0了,实在不会写了。。。。来找大神求助、、、
在线等!!!!,谢谢大家帮忙!!! 进制转换 二进制 八进制 十六进制 --------------------编程问答-------------------- 记得以前做ACM的时候做过
题目是: 输入基数b(2≤b≤16)和正整数n(十进制),任务:输出n的b进制。
代码给楼主,你自己改下输出就可以了
#include "stdio.h"--------------------编程问答-------------------- 可是我的是java,算法什么的没有变化吧?!
#include "string.h"
int main() {
//freopen("1129.in", "r", stdin);
int b, i=0, j, temp;
char a[17] = "0123456789abcdef";
char sum[100], flag;
long n;
scanf("%d%ld", &b, &n);
if (b<2 || b>16){
printf("Error Input!");
return 0;
}
if(n==0){
sum[0]='0';
i++;
}
while (n != 0){
temp = (n % b);
sum[i++] = a[temp];
n /= b;
}
sum[i] = 0;
for(j=0; j < i/2; j++){
flag = sum[j];
sum[j] = sum[i-j-1];
sum[i-j-1] = flag;
}
puts(sum);
return 0;
}
--------------------编程问答-------------------- 还是不会改成java的程序。。。原谅我的编程水平吧 --------------------编程问答--------------------
import java.util.*;--------------------编程问答-------------------- 做了一个只能转换整数的。
public class Tre {
public static void main(String args[]){
int b = 2;
int i=0;
int j;
int temp;
char a[]= new char[17];
a[17] = ("0123456789abcdef");//这句编译的时候报错
char sum[] = new char[100];
char flag;
Scanner sc=new Scanner(System.in);
int n = sc.nextInt();
if(n==0){
sum[0]='0';
i++;
}
while (n != 0){
temp = (n % b);
sum[i++] =(a[temp]);
n /= b;
}
sum[i] = 0;
for(j=0; j < i/2; j++){
flag = sum[j];
sum[j] = sum[i-j-1];
sum[i-j-1] = flag;
}
System.out.println(sum);
sc.close();
}
}
--------------------编程问答--------------------
package cn.dzr.csdn;
public class jinzhi {
public static void main(String[] args)
{
String str = test(18,16);
System.out.println(str);
}
public static String test(int num,int p)
{
//将10进制的数num转为 p进制
//
//
// 1000/8 = 125 余 0
// 125/8 = 15 余 5
// 15/8 = 1 余 7
// 1/8 = 0 余 1
// 1000 的 10 进制 转 8进制 为 1750
int i;
int j;
StringBuffer sb = new StringBuffer("");
do{
i=num/p;
j = num%p;
if(j<10)
sb.insert(0, j);
if(j==10)
sb.insert(0, 'A');
if(j==11)
sb.insert(0, 'B');
if(j==12)
sb.insert(0, 'C');
if(j==13)
sb.insert(0, 'D');
if(j==14)
sb.insert(0, 'E');
if(j==15)
sb.insert(0, 'F');
num = i;
}while(i!=0);
return sb.toString();
}
}
--------------------编程问答--------------------
public static void main(String[] args) {
int i16 = Integer.parseInt("12", 16);//转为16进制的
int i8 = Integer.parseInt("12", 8);
int i4 = Integer.parseInt("12", 4);
int i2 = Integer.parseInt("12", 2);
}
楼上很易做图 --------------------编程问答--------------------
可是是要转成2-16进制,即2,3,4,5....14,15,16进制 --------------------编程问答-------------------- 除进制数值取余数就是了 --------------------编程问答--------------------
String str = "";
while (num > 0) {
int mod = (num % radix);
if (mod >= 10) {
str = (char) ('A' + (mod - 10)) + str;
} else {
str = mod + str;
}
num /= radix;
}
return str;
只能处理正数,负数需要根据不同长度补符号位 --------------------编程问答-------------------- java.util.Integer
里面有 public static String toString(int i, int radix) {}
直接参考吧 --------------------编程问答-------------------- 楼主是想要自己写算法还是要直接用JDK Integer现成的api Integer.toString(int num,int radix)这就能满足你要自己写算法的话你可以直接参考jdk,Integer.toString(int num,int radix)的源码来写 --------------------编程问答--------------------
public class StringTest {
public static void main(String[] args) {
int a=456;
System.out.println(jingzhi(a,4));
}
public static String jingzhi(int deci,int num){
if(deci/num!=0)
return jingzhi(deci/num,num)+deci%num;
else
return deci%num+"";
}
}
无聊写了2-10进制的 --------------------编程问答--------------------
Integer a = 16;//待转的数
for (int i = 2; i <= 16; i++) {
String s = Integer.toString(a, i);
System.out.println(i+"进制="+s);
}
结果为:
--------------------编程问答--------------------
2进制=10000
3进制=121
4进制=100
5进制=31
6进制=24
7进制=22
8进制=20
9进制=17
10进制=16
11进制=15
12进制=14
13进制=13
14进制=12
15进制=11
16进制=10
楼主,就是这个,万能的。
补充:Java , Java SE