首页 > 试题广场 >

八进制

[编程题]八进制
  • 热度指数:31055 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
输入一个整数,将其转换成八进制数输出。

输入描述:
输入包括一个整数N(0<=N<=100000)。


输出描述:
可能有多组测试数据,对于每组数据,
输出N的八进制表示数。
示例1

输入

7
8
9

输出

7
10
11

python3 solution,only one line

note: use oct() function, and you should cut the "0o" in the begin position using replace() function.

while True:
    try:
        print(oct(int(input())).replace("0o",""))

    except:
        break
编辑于 2018-04-18 08:02:47 回复(3)
#include<stdio.h>
int main()
{
    int n,a[1000],i;
    while(scanf("%d",&n)!=EOF)
    {
        i=0;
        while(n/8!=0)
        {
            a[i]=n%8;
            n/=8;
            i++;
        }
        printf("%d",n);
        i--;
        for(;i>=0;i--)
            printf("%d",a[i]);
        printf("\n");
    }
    return 0;
}
发表于 2018-01-11 16:17:49 回复(0)
#include <stdio.h>
int main(void){
    int data;
    while(scanf("%d",&data)!=EOF){
        printf("%o\n",data);
    }
    return 0;
}

发表于 2017-06-21 22:54:58 回复(0)
#include<bits/stdc++.h>
int main(){
    int n;
    while(scanf("%d",&n)!=EOF)
        printf("%o\n",n);
}
发表于 2019-03-09 16:22:36 回复(0)
//十进制转八进制
#include<stdio.h>
int main()
{
    int n,a[1000],i,num=0;
    scanf("%d",&n);
    while(n)//别忘了此时是倒序的a[0]的值是最末尾的值
    {
        a[num]=n%8; n/=8;
        num++;//即是八进制个数又是数组a[]的下标0--num-1
    }
    for(i=num-1;i>=0;i--)
        printf("%d",a[i]);
}

发表于 2020-03-30 20:53:12 回复(0)
Java 解法
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) System.out.println(Integer.toOctalString(scanner.nextInt()));
    }
}


发表于 2020-03-17 15:38:56 回复(0)
#include <iostream>
#include <stack>
using namespace std;
int main(){
    int n;
    while(cin>>n){
        stack<int> s;
        while(n>0){
            s.push(n%8);
            n/=8;
        }
        while(!s.empty()){
            cout<<s.top();
            s.pop();
        }
        cout<<endl;
    }
    return 0;
}

编辑于 2020-03-12 16:22:20 回复(0)
//那个oct的也真的是很6了
#include<iostream>
using namespace std;
int main(){
    int n;
    while(cin>>n){
        int a[100]={0},count=0;
        while(n>0){
            a[count++]=n%8;
            n/=8;
        }
        for(int i=count-1;i>=0;i--)
            cout<<a[i];
        cout<<endl;
    }
}

发表于 2020-01-16 19:29:29 回复(0)
#include<stdio.h>
#include<stdlib.h>
int main(){
    int num10,num8=0;
    int i=1;
    while(scanf("%d",&num10)!=EOF){
        i=1;
        num8=0;
        while(num10!=0){
            num8=num8+(num10%8)*i;
            num10=num10/8;
            i=i*10;
        }
        printf("%d",num8);
        printf("\n");
    }
}
发表于 2020-01-08 17:16:54 回复(0)
#include <iostream>
#include <string>
using namespace std;
int main()
{
    int n;
    string s;
    char c;
    while(cin>>n)
    {
        s="";
        while(n)
        {
            c=n%8+48;
            s=c+s;
            n/=8;
        }
        cout<<s<<endl;
    }
}
发表于 2019-05-10 14:55:06 回复(0)
#include <iostream>
using namespace std;
int main(){
    int N;
    while(cin >> N)
        cout << oct << N << endl;
    return 0;
}
发表于 2019-04-07 13:56:47 回复(0)
#include<stdio.h>
#include<string.h>

int main(){
    int n;
    int a[6];
    int i,j=0;
    while(scanf("%d",&n)!=EOF){
        while(j<6){             a[j]=0;             j++;         }
        i=5;
        while(n!=0){
            a[i]=n%8;
            n=n/8;
            i--;
        }
        i=0;
        while(a[i]==0)
            i++;
        for(j=i;j<6;j++)
            printf("%d",a[j]);
        printf("\n");
    }
    return 0;
}

编辑于 2018-06-03 19:38:33 回复(0)
#include<stdio.h>
#include<stdlib.h>
void fact(int b);
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        fact(n);
    }
    return 0;
}
void fact(int b)
{
    int i,j,k=0,a[20000];
    if(b==0)
        printf("0\n");
    else
    {
        while(b!=0)
        {
            a[k]=b%8;
            b=(b-a[k])/8;
            k++;
        }
        for(i=k-1; i>=0; i--)
            printf("%d",a[i]);
        printf("\n");
    }
}
 
发表于 2018-04-25 20:56:18 回复(0)
//用do while 处理0;
#include<stdio.h>
int main() {
    int n;
    while (scanf("%d", &n)!=EOF) {
        int A[20], p=0;
        do {
            A[p++] = n % 8;
            n /= 8;
        } while (n);
        for (p--; p >= 0; p--) printf("%d", A[p]);
        printf("\n");
    }
    return 0;
}

发表于 2018-03-04 23:05:21 回复(0)

不仅仅是8进制,但要注意不能处理大数,大数另说

package com.speical.first;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 八进制
 * 
 * 其实此模板适合整数类型范围内所有的进制问题
 * 思路就是:
 * 不断对原数取进制的余数,然后除以进制缩小数
 * 直到原数为0
 * 然后最后得到的余数作为高位,之前得到的余数为低位组成我们所要转换后的数
 * @author Special
 * @time 2018/02/11 22:20:23
 */
public class Pro227 {
    static final int SIZE = 8;

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);
        while(input.hasNext()) {
            int num = input.nextInt();
            List<Integer> octal = new ArrayList<>();
            do {
                octal.add(num % SIZE);
                num /= SIZE;
            }while(num != 0);
            for(int i = octal.size() - 1; i >= 0; i--) {
                System.out.print(octal.get(i));
            }
            System.out.println();
        }
    }

}
发表于 2018-02-11 22:31:07 回复(0)
#include <iostream>
using namespace std;
int main(){
    int n;
    while(cin>>n){
        int i=0,j,a[1000];
        if(n<8) cout<<n<<endl;
        else{
            while(n/8!=0){
                a[i]=n%8;
                i++;
                n/=8;
            }        
            cout<<n;
            for(j=i-1;j>=0;j--){
                cout<<a[j];
            }
            cout<<endl;
        }        
    }        
    return 0;
}


发表于 2017-11-29 19:46:37 回复(0)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main{
    public static void main(String[] args) {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        String str;
        try {
            while ((str = bufferedReader.readLine())!= null){
                System.out.println(Integer.toOctalString(Integer.parseInt(str)));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

发表于 2017-11-16 10:39:28 回复(0)
#include<stdio.h>
#define N 1000
int main()
{ 
	int a[N],b[N];int i;
	for(i=0;i<N;i++)
		scanf("%d",&a[i]);
	
	for(i=0;i<N;i++)
	{int s=0;int t=1;  
    while(a[i]/8)
        {    s=(a[i]%8)*t+s;  
             t*=10;
             a[i]/=8;      }
	s+=a[i]*t;
     b[i]=s;
	}
	for(i=0;i<N;i++)
		printf("%d\n",b[i]);
}

发表于 2017-05-14 15:22:12 回复(4)
#include <iostream>
#include <math.h>
using namespace std;
int main()
   {
      int n;
      while(cin>>n)
         { 
            int k,ss=0,result=0;    //注意初始化要在每次输入数字n之后,不然会累加
            while(n)                //假设输入为23
             {
               k=n%8;               //第一次:k=7  第二次:k=2
               result+=pow(10,ss)*k;//  第一次:result=7  第二次:result=7+20=27 ss++;                //ss=1  
               n=n/8;               //n=2  
             }
          cout<<result<<endl;
         }
   }

发表于 2017-05-04 21:02:41 回复(2)
#include<iostream>
#include<string>
using namespace std;

int main() {
	int n,m,r;
	char tmp;
	string res;
	while (cin >> n) {
		res = "";
		while (n) {
			m = n % 8;
			r = n / 8;
			n = r;
			tmp = m + '0';
			res = tmp + res;
		}
		cout << res << endl;
	}
	
	return 0;
}

发表于 2017-04-27 09:45:04 回复(0)