输入一个八进制的字符串,将它转换成等价的十进制的字符串,然后用printf的%s格式输出。

例如输入字符串“1732”,则转换为“986”。尽可能简单些,我是初学者,谢谢!

第1个回答  2011-06-01
/*这个够简单不? */
#include<stdio.h>
int main()
{
int n;
char s[100];
while( scanf("%o",&n)!=EOF )
{
sprintf(s,"%d",n);
printf("%s\n",s);
}
return 0;
}
第2个回答  2011-06-01
#include<stdio.h>
int main()
{
int n;
while( scanf("%o",&n)!=EOF )
{
printf("%d\n\n",n);
}
return 0;
}追问

输入1785就会进入死循环,不停地输出15,怎么回事?还有就是while( scanf("%o",&n)!=EOF )这句不在我学的范围之内,我才刚学完指针,请用指针之前的知识编,可以复杂,但算法简单就行。还有就是能不能不用返回值来编?谢谢你帮我,修改好了再加20分,麻烦您了。

追答

首先,我们输入的数字应该是八进制的数字,怎么可能会有"8"出现呢?另外,我帮你不是为了加分的,希望你能够继续学习。其实函数调用、参数传递、返回值等等都是编程里经常出现的,你应该要有克服困难的心态。
#include
#include"windows.h"

int mishu(int j)
{
int result = 1;
for(;j>0;j--)
{
result *= 8;
}
return result;
}

void main()
{
int n = 0;
char s[100];
gets(s);
for(int i=strlen(s)-1,j=0;i>=0;i--,j++){
n += (s[i]-'0')*mishu(j);
}
printf("%d\n",n);
}

首先,我们输入的数字应该是八进制的数字,怎么可能会有"8"出现呢?另外,我帮你不是为了加分的,希望你能够继续学习。其实函数调用、参数传递、返回值等等都是编程里经常出现的,你应该要有克服困难的心态。
#include
#include"windows.h"

int mishu(int j)
{
int result = 1;
for(;j>0;j--)
{
result *= 8;
}
return result;
}

void main()
{
int n = 0;
char s[100];
gets(s);
for(int i=strlen(s)-1,j=0;i>=0;i--,j++){
n += (s[i]-'0')*mishu(j);
}
printf("%d\n",n);
}

本回答被提问者采纳
相似回答