设计题目及要求要求可输入二进制八进制十进制十六进制数.DOC

设计题目及要求要求可输入二进制八进制十进制十六进制数.DOC

设计题目及要求 要求: (1)可输入二进制、八进制、十进制、十六进制数; (2)将已输入的数转换成其余进制的数; (3)具有输入输出界面 设计思想及程序流程框图 设计思想:因为十六进制带有ABCDEF字母输入,所以输入时,采用字符串型接收。根据相应的输入类型(二进制、八进制、十进制及十六进制),将输入的字符串转化为相应十进制数。由于十进制可以直接以八进制,十六进制格式输出,所以,只要写一个从十进制到二进制的转化输出函数,其他数制的转化可以通过先将其转化为十进制数再间接转化实现。 程序流程框图: 开始 开始 输入str[32] , 操作 word Str[32]转化为十 进制sum存放 Str[32]转化为十 进制sum存放 Str[32]转化为十 进制sum存放 Str[32]转化为十 进制sum存放 Word=B Word=D Word=O Word=H Sum转化为二进制字符串bin[32] 输出bin[32] 将sum以十进制格式输出 将sum以八进制格式输出 将sum以十六进制格式输出 结束 输入word Word==’y’? Y N 逻辑功能程序 #include iostream.h #include string.h #include stdio.h void dbin(int sum) //把十进制数转化为二进制数并输出显示! { int i=0; int bin[32]; while(sum!=0) //转化函数! { bin[i]=sum%2; sum=sum/2; i++; } cout 二进制 =; for(int j=i-1;j=0;j--) //显示函数! { coutbin[j]; } coutendl; } int dec(char *str ,int n)//二进制,八进制转化为十进制,并返回对应的十进制数! { int num[32]={0}; int sum=0; int i=0; while(str[i]!=NULL) { num[i]=str[i]-48; i++; } for(int j=0;ji;j++) { sum=sum*n+num[j]; } return sum; } int hex_dec(char *str)//十六进制转化为十进制,并返回对应的十进制数! { int sum=0; int dec[32]; int i=0; while(str[i]!=NULL) { dec[i]=str[i]-48; if(dec[i]9) dec[i]=dec[i]-7; i++; } for(int j=0;ji;j++) { sum=sum*16+dec[j]; } return sum; } void display1() //提示函数! { cout 数制之间的转化!endl; coutB--- 二进制 ; coutO--- 八进制endl; coutD--- 十进制 ; coutH---十六进制endl; } void display3(int sum) //显示函数 { dbin(sum); //显示二进制数 cout 八进制 =octsumendl; //显示八进制数 cout 十进制 =decsumendl; //显示十进制数 cout十六进制 =hexsumendl; //显示十六进制数 } void main() { char c[10]={y}; int t; int sum=0; display1(); while(strcmp(c,y)==0||strcmp(c,Y)==0)//循环语句,若要继续,则输入y或Y! { char string[32]={NULL}; char word[20]; char str[32]={NULL}; int s=0,q=0; cout 请输入要转化数的类型 ! ; cinword; coutendl; while(s==0)//用while语句判断输入的类型是否正确 { if(strcmp(word,B)==0||strcmp(word,b)==0) { t=1; s=1;} else if(strcmp(word,O)==0||st

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档