| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 983 人关注过本帖, 1 人收藏
标题:关于用 C 程序设计进位制数换算
取消只看楼主 加入收藏
e1350511553
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-12-8
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:1 
关于用 C 程序设计进位制数换算
最近在做进位制数换算
 功能要求:
(1)编写选择式菜单程序,实现从十进制数到二进制、八进制、十六进制数的转换。
(2)二进制到十进制数、八进制、十六进制数的转换。
(3)八进制到十进制数、二进制、十六进制数的转换。
(4)十六进制数到十进制数、二进制、八进制数的转换。

但是我只会很零散的做各个部分。所以,可有人会这个程序?帮我设计一份完整的参考。不胜感激!
以下是我的编程
#include<iostream.h>
 #include<malloc.h>
 #define MaxSize 16
 typedef int ElemType;
 typedef struct
 {
     ElemType data[MaxSize];
     int top;
 }SqStack;
 //初始化栈
void InitStack(SqStack *&s)
 {
     s=(SqStack *)malloc(sizeof(SqStack));
     s->top=-1;
 }
 //销毁栈
void ClearStack(SqStack *&s)
 {
     free(s);
 }
 //进栈
int Push(SqStack *&s,ElemType e)
 {
     if(s->top==MaxSize-1)
         return 0;
     s->top++;
     s->data[s->top]=e;
     return 1;
 }
 //出栈
int Pop(SqStack *&s,ElemType &e)
 {
     if(s->top==-1)
         return 0;
     e=s->data[s->top];
     s->top--;
     return 1;
 }
 //取栈顶元素
int GetTop(SqStack *s,ElemType &e)
 {
     if(s->top==-1)
         return 0;
     e=s->data[s->top];
     return 1;
 }
 //显示栈中元素
void DispStack(SqStack *s)
 {
     int i;
     for(i=s->top;i>=0;i--)
         cout<<s->data[i];
 }
 //十六进制判断
void Judge(SqStack *s)
 {
     int i;
     for(i=s->top;i>=0;i--)
     {
         if(s->data[i]==10)   cout<<"A";
             else if(s->data[i]==11)   cout<<"B";
             else if(s->data[i]==12)   cout<<"C";
             else if(s->data[i]==13)   cout<<"D";
             else if(s->data[i]==14)   cout<<"E";
             else if(s->data[i]==15)   cout<<"F";
         else cout<<s->data[i];
     }
 }
 void main()
 {
     SqStack *s;
     InitStack(s);
     int i,t,j,m;//要转换的进制,j要被转换的数
    cout<<"请输入要转换的数(注意:j的范围):";
     cin>>j;
     cout<<"请输入要转换成的进制(二进制,八进制,十六进制):";
     cin>>i;
     if(i==2||i==8)
     {
         if(j<0)
         {   m=-j;
             while(m!=0)
             {
                 t=m%i;
                 Push(s,t);
                 m=m/i;
             }
             Push(s,1);
         }
         else if(j>0)
         {   
             while(j!=0)
             {
                 t=j%i;
                 Push(s,t);
                 j=j/i;
             }
             Push(s,0);
         }
     cout<<"转换成"<<i<<"进制后的代码(首位为符号位):";
     DispStack(s);
     ClearStack(s);
     }
     if(i==16)
     {
         if(j<0)
         {   m=-j;
             while(m!=0)
             {
                 t=m%i;
                 Push(s,t);
                 m=m/i;
             }
             Push(s,1);
         }
         else if(j>0)
         {   
             while(j!=0)
             {
                 t=j%i;
                 Push(s,t);
                 j=j/i;
             }
             Push(s,0);
         }
     cout<<"转换成"<<i<<"进制后的代码(首位为符号位):";
     Judge(s);
     ClearStack(s);
     }
     cout<<endl;
 }

#include "stdio.h"
 #include "math.h"
 void main(){
 int q,m,k,p,s[50];
 double n;
 m=0;
 printf("\n 请输入八进制数n:");
scanf("%lf",&n);
 printf("\n 请输入转换进制数p(2-16):");
scanf("%d",&p);
 printf(" (%f)10=(",n);
 while(n!=0){
 q=fmod(n,p);
 n=floor(n/p);
 m++;
 s[m]=q;
 }
 for(k=m;k>=1;k--){
 if(s[k]>9){
 printf("%c",s[k]+55);
 }
 else{
 printf("%d",s[k]);
 }


 }
 printf(")%d\n",p);
}

#include<iostream.h>
 #include<malloc.h>
 #define MaxSize 16
 typedef int ElemType;
 typedef struct
 {
     ElemType data[MaxSize];
     int top;
 }SqStack;
 //初始化栈
void InitStack(SqStack *&s)
 {
     s=(SqStack *)malloc(sizeof(SqStack));
     s->top=-1;
 }
 //销毁栈
void ClearStack(SqStack *&s)
 {
     free(s);
 }
 //进栈
int Push(SqStack *&s,ElemType e)
 {
     if(s->top==MaxSize-1)
         return 0;
     s->top++;
     s->data[s->top]=e;
     return 1;
 }
 //出栈
int Pop(SqStack *&s,ElemType &e)
 {
     if(s->top==-1)
         return 0;
     e=s->data[s->top];
     s->top--;
     return 1;
 }
 //取栈顶元素
int GetTop(SqStack *s,ElemType &e)
 {
     if(s->top==-1)
         return 0;
     e=s->data[s->top];
     return 1;
 }
 //显示栈中元素
void DispStack(SqStack *s)
 {
     int i;
     for(i=s->top;i>=0;i--)
         cout<<s->data[i];
 }
 //十六进制判断
void Judge(SqStack *s)
 {
     int i;
     for(i=s->top;i>=0;i--)
     {
         if(s->data[i]==10)   cout<<"A";
             else if(s->data[i]==11)   cout<<"B";
             else if(s->data[i]==12)   cout<<"C";
             else if(s->data[i]==13)   cout<<"D";
             else if(s->data[i]==14)   cout<<"E";
             else if(s->data[i]==15)   cout<<"F";
         else cout<<s->data[i];
     }
 }
 void main()
 {
     SqStack *s;
     InitStack(s);
     int i,t,j,m;//要转换的进制,j要被转换的数
    cout<<"请输入要转换的数(注意:j的范围):";
     cin>>j;
     cout<<"请输入要转换成的进制(二进制,八进制,十六进制):";
     cin>>i;
     if(i==2||i==8)
     {
         if(j<0)
         {   m=-j;
             while(m!=0)
             {
                 t=m%i;
                 Push(s,t);
                 m=m/i;
             }
             Push(s,1);
         }
         else if(j>0)
         {   
             while(j!=0)
             {
                 t=j%i;
                 Push(s,t);
                 j=j/i;
             }
             Push(s,0);
         }
     cout<<"转换成"<<i<<"进制后的代码(首位为符号位):";
     DispStack(s);
     ClearStack(s);
     }
     if(i==16)
     {
         if(j<0)
         {   m=-j;
             while(m!=0)
             {
                 t=m%i;
                 Push(s,t);
                 m=m/i;
             }
             Push(s,1);
         }
         else if(j>0)
         {   
             while(j!=0)
             {
                 t=j%i;
                 Push(s,t);
                 j=j/i;
             }
             Push(s,0);
         }
     cout<<"转换成"<<i<<"进制后的代码(首位为符号位):";
     Judge(s);
     ClearStack(s);
     }
     cout<<endl;
 }
搜索更多相关主题的帖子: 不胜感激 十六进制 程序设计 include 二进制 
2014-12-08 17:14
e1350511553
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-12-8
收藏
得分:0 
回复 2楼 doudou74321
少了个八进制哦。能否添加?
2014-12-08 19:32
快速回复:关于用 C 程序设计进位制数换算
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024643 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved