用C语言编写程序,输入任意一个十进制的三位数,将它分别转化为五进制、八进制和十五进制?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言编写程序,输入任意一个十进制的三位数,将它分别转化为五进制、八进制和十五进制?相关的知识,希望对你有一定的参考价值。

输入任意一个十进制三位数,请你把它转换为五进制(0—4)、八进制(0—7)和十五进制(0—9,A-E).设计一个友好界面,方便操作:要求界面中输入1转换为五进制,输入2转换为八进制,输入3转换为十五进制,输入0为退出
(用c医院程序编写,最好是用Dev-c++!!非常感谢

#include<stdio.h>
#include<string.h>
static char *QUINARY = "01234";
static char *OCTONARY = "01234567";
static char *FIFTNARY = "0123456789ABCDE";
static char buff[10];
char *toQuinary(int num);
char *toOctonary(int num);
char *toFifnary(int num);
char *reverse(char *str);
int main(void)

int flag = 1;
int num = 0;
int choice = 0;
while(flag)

printf("请输入一个三位数:");
scanf("%d",&num);
printf("转换为几进制? 1--五进制 2--八进制 3--十五进制 0--退出\t");
scanf("%d",&choice);
char *result = "";
switch(choice)

case 1:
result = toQuinary(num);
printf("%s\n",result);
break;
case 2:
result = toOctonary(num);
printf("%s\n",result);
break;
case 3:
result = toFifnary(num);
printf("%s\n",result);
break;
default:
flag = 0;
break;


return 0;

char *toQuinary(int num)

if(num <= 0) return "0";
int i = 0;
while(num > 0)

int ret = num % 5;
buff[i] = QUINARY[ret];
num /= 5;
i++;

buff[i]='\0';
return reverse(buff);

char *toOctonary(int num)

if(num <= 0) return "0";
int i = 0;
while(num > 0)

int ret = num % 8;
buff[i] = OCTONARY[ret];
num /= 8;
i++;

buff[i]='\0';
return reverse(buff);

char *toFifnary(int num)

if(num <= 0) return "0";
int i = 0;
while(num > 0)

int ret = num % 15;
buff[i] = FIFTNARY[ret];
num /= 15;
i++;

buff[i]='\0';
return reverse(buff);

char *reverse(char *str)

int length = strlen(str);
char copy[length+1];
int i = 0;
for(i=0; i<length;i++)

copy[i] = str[length-i-1];

copy[i] = '\0';
strcpy(str,copy);
return str;
参考技术A void fun1(int n, int d) // n:待转换的数,d:进制

char buf[10];
int count = 0;
while (n)

buf[count++] = n % d;
n /= d;

while (count)

unsigned char ch = buf[--count];
ch < 10 ? ch += '0' : ch += 'A' - 10;
printf("%c", ch);


进制转换部分供参考,友好界面算了吧

c语言 输入任意三位数 分离个十百位

输入不为三位数,则输出“提示不为三位数”
这里有个疑问,如果输入1,输出的是提示不为三位数
但是输入001,要输出0 0 1,
一般的判断if(x>99&&x<1000),不能区分1和001
这个要怎么区分?

很 简单 等我 马上好
-----------------------以下是运行结果及源程序--------------------------------------
001
百位:0,十位:0,个位:1。
Press any key to continue
#include <stdio.h>
#include <string.h>
main()

int i,nLen;
char num[10]="\0";
scanf("%s",&num);
nLen = strlen(num);
if (nLen!=3)
printf("不是三位数!\n");
else
printf("百位:%c,十位:%c,个位:%c。\n",num[0],num[1],num[2]);


有问题请追问 满意记得采纳哦
参考技术A #include "stdio.h"
main()

int num,a,b,c;
printf("请输入一个数字:");
scanf("%d",&num);
if((num/100<=0)||(num/100>=10))
printf(输入的不是三位数);
else

a=num/100;
b=(num/10)%10;
c=num%10;
printf("输入数字的个位是:%d\n输入数字的十位是:%d\n输入数字的百位是:%d\n",c,b,a);

getch();
参考技术B string a=输入的三位数;
if(a是个数字)

if(a.Length!=3)

提示不是三位数;

else

string x=a.SubString(0,1); string y=a.SubString(1,1); string z=a.SubString(2,1);

参考技术C if(0<x10)

printf("0,0",x);

if(9<x<100)

printf("0",x/10,x%10);

if(99<x<1000)

printf(x/100,(x%10)/10,x%10);

以上是关于用C语言编写程序,输入任意一个十进制的三位数,将它分别转化为五进制、八进制和十五进制?的主要内容,如果未能解决你的问题,请参考以下文章

编写一个程序:输入一个任意四位数,把这个数值分解为单个数字,打印出每个数字

编程c语言程序,输入一个五位数,判断是不是为对称说,如:12321,20202都是对称数

ZZNUOJ_用C语言编写程序实现1151:组合三位数之二(附完整源码)

用C语言如何编写"键盘输入一个多位数,然后倒序输出"

用C语言编写程序。输入一个自然数N,输出N的位数。

用C#语言编写以下代码5. 输入一个整数,判定它为几位数。例如,99是2位数,-100是3位数