#include "stdio.h"
#include<iostream>
void bishow(int m);
void main()
{
char x,w;
char c[10];
int i=0,err=0,quitflag=0;
int num=0;
do{
system("cls");
printf(" --------------------------------------- \n");
printf(" 欢迎数制转换系统 \n");
printf(" --------------------------------------- \n");
printf(" \n");
printf(" --------------------------------------- \n");
printf(" | 1 二进制 |\n");
printf(" | 2 八进制 |\n");
printf(" | 3 十进制 |\n");
printf(" | 4 十六进制 |\n");
printf(" | 0 退出 |\n");
printf(" --------------------------------------- \n");
printf(" 请选择: \n");
do{
err=0;
scanf("%c",&x);//输入选项
getchar();
if(x>'4'||x<'0')//若输入非法,则重新输入
{
err=1;
printf("输入错误,请重新输入");
}
}while(err);
switch(x)
{
case '1':
do{
err=0;i=0;num=0;
printf("请输入二进制数:\n");
scanf("%s",c);
getchar();
while(c[i]!='\0')
{
if(c[i]!='1' && c[i]!='0') err=1;//若输入数字不为1或0则输入错误
i++;
}
if(err) printf("输入数值错误,不是二进制数!\n");
} while(err);
i=0;
while(c[i]!='\0')//二进制转换为十进制
{
num=num*2;
if(c[i]=='1') num=num+1;
i++;
}
printf("\t二进制数 %s 转换为其他进制:\n",c);
printf("--------------------------------------------\n");
printf("\t八进制: %o\n",num);//输出八进制
printf("\t十进制: %d\n",num);//输出十进制
printf("\t十六进制: %x\n",num);//输出十六进制
printf("--------------------------------------------\n");
printf("是否继续?(任意键继续/0退出)");
scanf("%c",&w);
getchar();
if(w=='0') quitflag=1;
break;
case '2':
do{
err=0;i=0;num=0;
printf("请输入八进制数:\n");
scanf("%s",c);
getchar();
while(c[i]!='\0')
{
if(c[i]>'7' || c[i]<'0') err=1;//若输入数据不在0~7间则输入错误
i++;
}
if(err) printf("输入数值错误,不是八进制数!\n");
} while(err);
i=0;
while(c[i]!='\0')
{
num=num*8;
num=num+c[i]-48;
i++;
}
printf("\t二进制数 %s 转换为其他进制:\n",c);
printf("--------------------------------------------\n");
bishow(num);
printf("\t十进制: %d\n",num);
printf("\t十六进制: %x\n",num);
printf("--------------------------------------------\n");
printf("是否继续?(任意键继续/0退出)");
scanf("%c",&w);
getchar();
if(w=='0') quitflag=1;
break;
case '3':
do{
err=0;i=0;num=0;
printf("请输入十进制数:\n");
scanf("%s",c);
getchar();
while(c[i]!='\0')
{
if(c[i]>'9' || c[i]<'0') err=1;//若输入数据为非数字符号,则错误
i++;
}
if(err) printf("输入数值错误,不是十进制数!\n");
} while(err);
i=0;
while(c[i]!='\0')
{
num=num*10;
num=num+c[i]-48;
i++;
}
printf("\t二进制数 %s 转换为其他进制:\n",c);
printf("--------------------------------------------\n");
bishow(num);
printf("\t八进制: %o\n",num);
printf("\t十六进制: %x\n",num);
printf("--------------------------------------------\n");
printf("是否继续?(任意键继续/0退出)");
scanf("%c",&w);
getchar();
if(w=='0') quitflag=1;
break;
case '4':
do{
err=0;i=0;num=0;
printf("请输入十六进制数:\n");
scanf("%s",c);
getchar();
while(c[i]!='\0')
{
if(c[i]<='9' && c[i]>='0') err=0;//若输入数据为非数字符号,则错误
else if(c[i]>='a'&&c[i]<='f') err=0;
else if(c[i]>='A'&&c[i]<='F') err=0;
else err=1;
i++;
}
if(err) printf("输入数值错误,不是十进制数!\n");
} while(err);
i=0;
while(c[i]!='\0')
{
num=num*16;
if('0'<=c[i]&&c[i]<='9') num=num+c[i]-48;
if('a'<=c[i]&&c[i]<='f') num=num+c[i]-97+10;
if('A'<=c[i]&&c[i]<='F') num=num+c[i]-65+10;
i++;
}
printf("\t二进制数 %s 转换为其他进制:\n",c);
printf("--------------------------------------------\n");
bishow(num);
printf("\t八进制: %o\n",num);
printf("\t十进制: %d\n",num);
printf("--------------------------------------------\n");
printf("是否继续?(任意键继续/0退出)");
scanf("%c",&w);
getchar();
if(w=='0') quitflag=1;
break;
case '0':
quitflag=1;
break;
}
}while(!quitflag);
}
void bishow(int m)//转换成二进制数
{
int b[20];
int i=0;
while(m)
{
b[i]=m%2;
m=m/2;
i++;
}
i--;
printf("\t二进制: ");
if(m==0) printf("%d",0);
while(i>=0)
{
printf("%d",b[i--]);//输出二进制数
}
printf("\n");
}
C语言 软件设计 分数统计 打字程序 文本编辑器 加密 进制转换器
5星 · 超过95%的资源 需积分: 10 2 浏览量
2010-06-09
16:09:25
上传
评论 8
收藏 5KB RAR 举报
jinling843643364
- 粉丝: 30
- 资源: 61
- 1
- 2
前往页