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

Posted

tags:

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

要求(1)能进行一下四种数制转换 10进制转换为16进制;16进制转换为10进制; 10进制转换为8进制;8进制转换为10进制。 (2)程序界面如下: 进制准换 菜单 1、10进制转换为16进制;2、16进制转换为10进制; 3、10进制转换为8进制;4、8进制转换为10进制 请输入你的选择: 再输入转换数据;

参考技术A #include<stdio.h>
#define
MAXCHAR
101
//最大允许字符串长度
int
char_to_num(char
ch);
//返回字符对应的数字
char
num_to_char(int
num);
//返回数字对应得字符
long
source_to_decimal(char
temp[],int
source);
//返回由原数转换成十进制数
int
decimal_to_object(char
temp[],long
decimal_num,int
object);
//返回转换成目标数制后字符数组的长度
void
output(char
temp[],int
length);
//将字符数组逆序打印
void
main()

int
source;
//存储原数制
int
length;
//存储转换成目标数制后的字符数组长度
int
object;
//存储目标数制
char
temp[MAXCHAR];
//存储待转换的数值和转换后的数值
long
decimal_num;
//存储转换成的十进制数
int
flag
=
1;
//存储是否退出程序的标志
while(flag)
//利用输入的flag值控制循环是否结束

printf("转换前的数是:");
scanf("%s",temp);
printf("转换前的数值是:");
scanf("%d",&source);
printf("转换后的数值是:");
scanf("%d",&object);
printf("转换后的数是:");
decimal_num
=
source_to_decimal(temp,source);
length
=
decimal_to_object(temp,decimal_num,object);
output(temp,length);
printf("继续请输入1,否则输入0:
");
scanf("%d",&flag);


int
char_to_num(char
ch)

if(ch>='0'&&
ch<='9')

//将数字字符转换成数字
return
ch-'0';
else
return
ch-'A'+10;
//将字母字符转换成数字

char
num_to_char(int
num)

if(num>=0
&&
num<=9)
return
(char)(num+'0'-0);
//将0~9之间的数字转换成字符
else
return
(char)(num+'A'-10);
//将大于10的数字转换成字符

long
source_to_decimal(char
temp[],int
source)

long
decimal_num=0;
//存储展开之后的和
int
i;
int
length;
for(i=0;temp[i]!='';i++)
length
=
i;
for(i=0;i<=length-1;i++)

//累加
decimal_num
=
(decimal_num*source)+char_to_num(temp[i]);
return
decimal_num;


int
decimal_to_object(char
temp[],long
decimal_num,int
object)

int
i
=
0;
while(decimal_num)

temp[i]
=
num_to_char(decimal_num%object);

//求出余数并转换成字符
decimal_num
=
decimal_num/object;
//用十进制数除以基数
i++;

temp[i]='';
return
i;

void
output(char
temp[],int
length)

int
i;
for(i=length-1;i>=0;i--)
//
输出temp数组中的值
printf("%c",temp[i]);
printf("
");

如何用C语言编写一个程序,输入10个0-9之间的整数,请统计每个数字出现的个数,并输出?

#include<stdio.h>
int num[10],count[10], i=0,temp;
//判断输入的数字是否是0到9之间的数
int input(int num)
if(num>=0&&num<=9)
return 1;
else
return 0;


//初始化计数的数组
void initCount()
int i = 0;
for(i=0;i<10;i++)
count[i]=0;


//统计每个数字出现的次数
void numCount(int num)
int i;
for(i=0;i<10;i++)
if(i==num)
count[i]++;



//输入数字
void runProm()
initCount();
for(;i<10;)
printf("请输入第%d个数:",(i+1));
scanf("%d",&temp);
if(input(temp)==1)
num[i]=temp;
numCount(num[i]);
i++;
else
printf("你输入的数字不在0到9之间,请重新输入!\n\n");
runProm();



void main()
int i;
runProm();
//输出每个数出现了几次
for(i=0;i<10;i++)
printf("%d出现了%d次!\n",i,count[i]);

参考技术A #include<stdio.h>
#include<string.h>
int main()

int cnt[10]=0,temp,state=1;
printf("enter 10 nums between 0 and 10");
for(int i=0;i<10;i++)

scanf("%d",&temp);
if(temp>=10||temp<0) state=0,break;
cnt[temp]+=1;

if(state)
for(int i=0;i<10;i++)

printf("%d:%3d",i,cnt[i]);

else printf("ERROR");
return 0;

以上是关于请设计一个数制转换的C语言源程序的主要内容,如果未能解决你的问题,请参考以下文章

c语言编程题,数制转换

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

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

计算机系统的数制及转换

汇编语言第一节课:数制转换,真值和补码

java的数制转换(详解,全!)