用c语言的函数调用如何将一个十进制数转换为八进制数?

如题所述

    10进制转换8进制输出,使用printf函数的格式输出%o即可。如果需要得到转换后的字符串,使用sprintf函数即可。

    例程:

    #include <stdio.h>
    int main (){
      int x;
      char s[100];
      printf("输入要转换的十进制数:\n");
      scanf("%d",&x);
      sprintf(s,"%o",x); //十进制转换为八进制,并保存到s字符串当中
      printf("使用sprintf函数转换的八进制数是:%s\n",s)
      printf("使用printf函数转换的八进制数是:%o\n",x); //十进制转换为八进制,并直接输出到屏幕
      return 0;
    }

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2019-08-11
**
程序功能:求二进制,十进制,八进制
创建人:蒲宇林
创建日期:2007年8月13日
**/
#include <stdio.h>
void two();
void eight();
void sixteen();

/**主函数**/
void main()
{
int select;
do
{
printf("0 - 退出,1 - 十进制转二进制,2 - 十进制转八进制,3 - 十进制转十六进制");
scanf("%d",&select);
switch(select)
{
case 1 : two(); break; //十进制转二进制
case 2 : eight(); break; //十进制转八进制
case 3 : sixteen(); break; //十进制转十六进制
default : printf("您的输入有误,请重新输入!"); break;
}
if(select == 0)
{
break;
}
}while(1);
}
void two()
{
int num, i;
int arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",&num);
for( i = 0 ; 1 ; i++) //转换为二进制并存入数组
{
arr[i] = num % 2;
num = num / 2;
if(num == 0)
{
break;
}
}

printf("转换为二进制:"); //打印
for(; i >= 0 ; i-- )
{
printf("%d",arr[i]);
}
printf("\n");
}
void eight()
{

int num, i;
int arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",&num);
for( i = 0 ; 1 ; i++) //转换为八进制并存入数组
{
arr[i] = num % 8;
num = num / 8;
if(num == 0)
{
break;
}
}

printf("转换为八进制:"); //打印
for(; i >= 0 ; i-- )
{
printf("%d",arr[i]);
}
printf("\n");
}
void sixteen()
{

int num, i;
int arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",&num);
for( i = 0 ; 1 ; i++) //转换为二进制并存入数组
{
arr[i] = num % 16;
num = num / 16;
if(num == 0)
{
break;
}
}

printf("转换为十六进制:"); //打印
for(; i >= 0 ; i-- )
{
switch(arr[i])
{
case 10 :
printf("A");
break;
case 11 :
printf("B");
break;
case 12 :
printf("C");
break;
case 13 :
printf("D");
break;
case 14 :
printf("E");
break;
case 15 :
printf("F");
break;
default :
printf("%d",arr[i]);
}
}
printf("\n");
}本回答被网友采纳
第2个回答  2013-07-22
只要输出的时候让VC输出八进制数%o就好了

#include<stdio.h>
void main()
{
int num;
while(scanf("%d",&num)!=EOF)
{
printf("%o\n",num);
}
}
相似回答