将你的代码贴在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