8进制转化为10进制编译出现问题,帮忙看看

图片说明

将你的代码贴在codepad.org,把链接贴在这里,才好帮你调试。

#include
#include
#include
void main()
{
int num;
printf("请输入一个8进制数");
scanf("%d",&num);
char buff[999];
int n;
itao(num,buff,8);
n=strlen(buff);
int i,a=1,w=0,x;
for(i=0;i<n;i++)
{ a=a*10;
x=num/a;
num=num-x*a;
for(i=0;i<n;i++)
{x=x*8;

      }
      w=w+x;
      itao(num,buff,8);
      n=strlen(buff);
      a=1;
      }
printf("%d",w);

}

将你的代码贴在codepad.org,把链接贴在这里,才好帮你调试。没明白么?

你贴在这里代码格式是乱的,而且字符还会丢失。
你include了什么都没有了。

直接写一个给你

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int foo(int x, int n)
{
    if (n == 0) return 1;
    int r = 1;
    for (int i = 0; i < n; i++)
    {
        r = r * x;
    }
    return r;
}
void main()
{
    char * num = new char[100];
    printf("请输入一个8进制数\n");
    scanf("%s", num);
    int n = strlen(num);
    int w = 0;
    for (int i = n - 1; i >= 0; i--)
    {
        w += foo(8, (n - i)) * (num[i] - '0');
    }
    printf("%d", w);
}


修正下

 // ConsoleApplication1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int foo(int x, int n)
{
    if (n == 0) return 1;
    int r = 1;
    for (int i = 0; i < n; i++)
    {
        r = r * x;
    }
    return r;
}
void main()
{
    char * num = new char[100];
    printf("请输入一个8进制数\n");
    scanf("%s", num);
    int n = strlen(num);
    int w = 0;
    for (int i = n - 1; i >= 0; i--)
    {
        w += foo(8, (n - i - 1)) * (num[i] - '0');
    }
    printf("%d", w);
}


运行:

请输入一个8进制数
123
83请按任意键继续. . . 

应该是 itoa,integer to ascii的缩写。
你的代码还有别的问题。

你的前几行纯属多余,因为scanf直接就可以输入字符串,没必要输入数字再转换成字符串。
再说了,如果是16进制,36进制怎么办。

用itoa。头文件stdlib.h