C语言编程,输入十进制数输出十六进制和八进制

是新手 要详细过程 帮解释清 在线等 谢~~~

#include <stdio.h>
#define N 8
void tran(int num,int k)
{
int arr[N],i;
for (i=0;i <N;i++)
{
arr[i]=num%k;
num=num/k;
if (num==0)
break;
}
printf("转换为%d进制数为: ",k);
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\n\n");
}
int main()
{
int num,choo;
loop:    printf("请选择功能:0.退出  1.十进制转二进制  2.十进制转八进制  3.十进制转十六进制\n");
scanf("%d",&choo);
switch (choo)
{
case 1:
printf("请输入要转换的十进制数:");
scanf("%d",&num);
tran (num,2);
goto loop;
case 2:
printf("请输入要转换的十进制数:");
scanf("%d",&num);
tran (num,8);
goto loop;
case 3:
printf("请输入要转换的十进制数:");
scanf("%d",&num);
tran (num,16);
goto loop;
case 0:break; 

default :
printf("输入有误!请重新输入!\n");
goto loop;
}
}

拓展资料

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

(参考资料 百度百科 C语言

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2019-11-04

可以通过下面的公式解决

#include<stdio.h>

const int maxn = 128;

const int index8 = 8;

const int index16 =16;

int main()

{int Array8[maxn];

int Array16[maxn];

int n, cot8 = 0;

scanf("%d", &n);

int m = n, cot16 = 0;

while(n) {Array8[cot8++] = n % index8;

n /= index8;}

while(m) {Array16[cot16++] = m % index16;

m /= index16;}

int i;

for(i = cot8 - 1; i >= 0; i--)

printf("%d", Array8[i]);

puts("");

for(i = cot16 - 1; i >= 0; i--)

扩展资料:

十进制转十六进制的具体方法:

对于整数部分,用被除数反复除以16,除第一次外,每次除以16均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。

对于小数部分,采用连续乘以基数16,并依次取出的整数部分,直至结果的小数部分为0为止。故该法称“乘基取整法”。

10进制数转换成十六进制数,这是一个连续除以16的过程:把要转换的数,除以16,得到商和余数,将商继续除以16,直到商为0。最后将所有余数倒序排列,得到数就是转换结果。

参考资料:

本回答被网友采纳
第2个回答  推荐于2017-09-30

可以格式化输出。

#include <stdio.h>

int main()
{
    int n;
    printf("输入一个数:");
    scanf("%d", &n);
    printf("八进制: %o\n", n);
    printf("十六进制: %x\n", n);
    return 0;
}

第3个回答  2009-10-26
#include <stdio.h>
#define N 8
void tran(int num,int k)
{
int arr[N],i;
for (i=0;i <N;i++)
{
arr[i]=num%k;
num=num/k;
if (num==0)
break;
}
printf("转换为%d进制数为: ",k);
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\n\n");
}
int main()
{
int num,choo;
loop: printf("请选择功能:0.退出 1.十进制转二进制 2.十进制转八进制 3.十进制转十六进制\n");
scanf("%d",&choo);
switch (choo)
{
case 1:
printf("请输入要转换的十进制数:");
scanf("%d",&num);
tran (num,2);
goto loop;
case 2:
printf("请输入要转换的十进制数:");
scanf("%d",&num);
tran (num,8);
goto loop;
case 3:
printf("请输入要转换的十进制数:");
scanf("%d",&num);
tran (num,16);
goto loop;
case 0:break;
default :
printf("输入有误!请重新输入!\n");
goto loop;
}
}
第4个回答  推荐于2017-10-04
#include<stdio.h>
main()
{int i,d,m,n;
char s[8];
scanf("%d",&n);
i=0;
do{
m=n/8;
d=n%8;
s[i]='0'+d;
i++;
n=m;
}
while(n!=0);
for(i--;i>=0;i--)
putchar(s[i]);
}
//十进制转八进制 十六进制方法类似

#include<stdio.h>
void main()
{
int a;
scanf("%d",&a);
printf("%o, %x",a,a);
getchar();
getchar();
}

参考资料:

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网