2190 - 十进制转换为八进制

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 64 MB

输入1个十进制整数, 输出相应的八进制数. 如输入:2013, 输出:3735.

题目输入

有多行数据,每一行数据N的数值范围在[0, 231 - 1].

(用for 或while循环实现,不用API提供的直接转换方法)

题目输出

每一行输出N所对应的八进制。

输入/输出样例

输入格式

2012
2013

输出格式

3734
3735

C语言解答

#include<stdio.h>
 int main(){
    int num;
    while(scanf("%d",&num)!=EOF){
        int i;
        int b[50];
        for(i=0;i>=0;i++) {
        b[i]=num%8;
        if(num/8==0) break;
        num=num/8;
    }
    for(i=i;i>=0;i--)
    {
        printf("%d",b[i]);
    }
        printf("\n");
    }
 }

C++解答

#include<iostream>
using namespace std;

void change(int m){
	int i,k=0,a[30];
	if(m==0){
		a[k++]=0;
		
	}
	else{
		while(m!=0){
			a[k++]=m%8;
			m=m/8;
		}
	}
	for(i=k-1;i>=0;i--)
		cout<<a[i];
	cout<<endl;
}

int main(){
	int m;
	while(cin>>m){
		change(m);
	}
	return 0;
}

Java解答

public class Main 
    {
            public static void main(String[] args)
            { 
              java.util.Scanner input = new java.util.Scanner(System.in);
              do {
                int number1 = input.nextInt();
                String number2 ="";
                int number3 = number1;
                if(number3==0)
                  System.out.println(0);
                while(number1!=0) {
                  int yushu = number1 % 8;
                 
                  number2=CHAR(yushu) + number2;
                  number1 = number1/8;
                }
                if (number3!=0)
                System.out.println(number2);
              }while(input.hasNextInt());
                          }
  public static char CHAR(int n) {
    if(n>=0&&n<=9){
      char m = (char)(n+'0');
      return m;
    }
    else {
      char m = (char)('A'+(n-10));
    return m;
    }
  }
 

}