急:十进制转八进制

pacifique 2006-01-07 12:25:00
用C语言把输入的十进制字符串366转化成八进制字符串输出的程序改怎么写?
请各位大侠指教!
...全文
1578 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
armman 2006-01-08
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
#define Size 20


typedef struct{
int data[Size];
int top;
}SeqStack;


void InitStack(SeqStack *S)
{
S->top=-1;
}


int Empty(SeqStack *S)
{
return S->top==-1;
}


int Full(SeqStack *S)
{
return S->top==Size-1;
}


void Push(SeqStack *S,int x)
{
if(Full(S))
{
printf("The stack is overflow!\n");
exit(2);
}

S->data[++S->top]=x;
}


int Pop(SeqStack *S)
{
if(Empty(S))
{
printf("The stack is underflow!\n");
exit(2);
}
return S->data[S->top--];
}


void Convert(int Number,int Base)
{
int i;
SeqStack S;
InitStack(&S);

while(Number)
{
Push(&S,Number%Base);
Number=Number/Base;
}

while(!Empty(&S))
{
i=Pop(&S);
switch(i)
{
case 10:printf("%c",'a');break;
case 11:printf("%c",'b');break;
case 12:printf("%c",'c');break;
case 13:printf("%c",'d');break;
case 14:printf("%c",'e');break;
case 15:printf("%c",'f');break;
default:printf("%d",i);
}

}
}

void main(void)
{
int num,base;

printf("Enter decimal data :");
scanf("%d",&num);
printf("Input basic data:");
scanf("%d",&base);

printf("The convert result's is:\n");
Convert(num,base);
}

把十进制转化为其他进制(小于十六进制)的的数
wvins 2006-01-08
  • 打赏
  • 举报
回复
楼上的已经说了
sprintf()格式化转储到缓冲区就行了
唐巧 2006-01-08
  • 打赏
  • 举报
回复
晕.初中生又来问作业了.
maxzhk 2006-01-08
  • 打赏
  • 举报
回复
反驳楼上观点:个人认为有更简单有效的解决方法就要去用。虽然我在学校的时候用sprintf()转换十进制到十六进制被老师扔了出来,但偶坚持认为程序员就是懒人,总想要更容易更有效的解决方案

#include "stdio.h"
#include "conio.h"

main()
{ double i;
char *s;

clrscr();

printf("Please input a decimalist number: ");
scanf("%ld", &i);

printf("\nThe dec number is: %ld\n", i);

/*实际的数据进制转换,依靠sprintf()函数*/
sprintf(s, "%o", i);
printf("The hex number is: %s\n\n", s);

printf("Please press any key to exit...");
getch();
}
lwsnake 2006-01-08
  • 打赏
  • 举报
回复
楼主的问题是想问转换方法,而不是用已经有的函数啊,各位大大……
cunsh 2006-01-07
  • 打赏
  • 举报
回复
把字符串366读到int.
再用除8取余数的办法.
或者printf直接把这个整数用8进制输出.
goodluckyxl 2006-01-07
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

void main( void )
{
char* p = "366";
char buffer[20];
int i;
i = atoi(p);
_itoa( i, buffer, 8 );
i = atoi(buffer);
printf( "%d", i );

}
co_diy 2006-01-07
  • 打赏
  • 举报
回复
用ATOI
jixingzhong 2006-01-07
  • 打赏
  • 举报
回复
上面的函数用 atoi 也可以的。
呵呵, 我只是想试试这个函数怎么用的 ....
jixingzhong 2006-01-07
  • 打赏
  • 举报
回复
long strtol(char *str,char **endptr,int base)将字符串str转换成长整型数, 并返回这个数


jixingzhong 2006-01-07
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

void main( void )
{
char* p = "366", result[10];
char **endpoint;
int i, j;

i = strtol(p ,endpoint , 10);

sprintf(result, "%o", i);
printf("%d\n%s",i,result);

getch();

}
jixingzhong 2006-01-07
  • 打赏
  • 举报
回复
用 sprintf !!
xushun_1 2006-01-07
  • 打赏
  • 举报
回复
#include"stdio.h"

main()
{
int i=0,a[10];
long a;
scanf("%ld",&a);
do{
a[i]=a%8;
a/=8;
i++;
}while(a);
for(i--;i>=0;i--)
printf("%d",a[i]);
getch();
}
Rick_ang 2006-01-07
  • 打赏
  • 举报
回复
按照题意把 goodluckyxl(被人遗忘的狗<泡妞不是我强项,但我可以做好>) 的程序做了小小改动,希望不要介意
//用C语言把输入的十进制字符串366转化成八进制字符串输出的程序改怎么写?
#include <stdio.h>
#include <stdlib.h>

int main( void )
{
char* p = "366";
char buffer[20];
int i;
i = atoi(p);
printf("直接输出:%o ",i);
_itoa( i, buffer, 8 );
i = atoi(buffer);
printf("整数:%d, 字符串:%s\n", i ,buffer);
getchar();
return 0;
}
Rick_ang 2006-01-07
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

void main( void )
{
char* p = "366";
int i;
i = atoi(p);
printf( "%d", i );
getchar();

}
--------------------
这个根本没有做8进制转换,就是字符串转int而已
还不如把printf("%d",i);改成printf("%o",i);
terryukai 2006-01-07
  • 打赏
  • 举报
回复
to iwantfat(rock)
我没有明白你写的代码。
能不能加点注释。
iwantfat 2006-01-07
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

void main( void )
{
char* p = "366";
int i;
i = atoi(p);
printf( "%d", i );
getchar();

}
Mr_Yang 2006-01-07
  • 打赏
  • 举报
回复
up

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧