c语言编程题,数制转换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言编程题,数制转换相关的知识,希望对你有一定的参考价值。

【问题描述】
输入一个十进制数,转换成对应的八进制数和十六进制数并输出。
【输入形式】
输入一个十进制数。
【输出形式】
输出对应的八进制数和十六进制数。
【样例输入1】(下划线部分为键盘输入,其余部分为程序输出)
Input a decimal: 31
【样例输出】
The octal is 37
The hexadecimal is 1F
【样例输入2】(下划线部分为键盘输入,其余部分为程序输出)
Input a decimal: 22
【样例输出】
The octal is 26
The hexadecimal is 16
【样例说明】
输入提示符后要加一个空格。例如“Input integers: ”,其中“:”后要加一个且只能一个空格。
输入的数据之间以一个空格相隔。
输出语句的“is”后面加一个且只能加一个空格。
英文字母区分大小写。必须严格按样例输入输出。

#include <stdio.h>
void main(void)

int i;
printf("Input a decimal: ");
scanf("%d",&i);
printf("The octal is %o\n",i);
printf("The hexadecimal is %X\n",i);

使用格式控制符很容易,你想要的是用算法转换?
参考技术A 楼主你有两个实现方式:
1. %X和%o分别输出一个数字的16进制(大写字母)和8进制。
2. 或者:给你一个函数,可以实现一个数字转换为任意进制的字符串(2进制到31进制),i并把结果放到string中。如itoan(value, string, radix)表示把value转换为radix进制。

#define MAXLEN 128
char *itoa(int value, char *string, int radix)

char temp[MAXLEN] = '\0';
int i = 0,j=0,k=0;
while(value >0)

k = value%radix;
temp[i++] = k + (k < 10 ? 0x30 : 55);
value /= radix;

for(;i>0;i--)

string[j++] = temp[i-1];


return string;


至于printf输出和scanf的使用,这个比较简单,楼主还是自己看看书吧,授人以鱼不如授人以渔。
参考技术B http://www.bccn.net/ 编程中国网,看看啦,包你大有收获。

以上是关于c语言编程题,数制转换的主要内容,如果未能解决你的问题,请参考以下文章

编制不同数制间的转换程序...(用c语言编写程序)?

数据结构(C语言) 栈的应用之数制转换

C 语言 数制

请设计一个数制转换的C语言源程序

初学编程,大家帮忙看下这道c语言题怎么做?万分感谢

C语言编程题将十进制M转换成二进制