回 帖 发 新 帖 刷新版面

主题:求助一道题,关于栈的

设计一个算法,将一个十进制数转换为二进制,八进制,十六进制(中间最好使用switch语句)~[em10]

回复列表 (共10个回复)

沙发

#include<stdio.h>
#define MaxSize 100
void f1(int n)
{
    int a[MaxSize],i=0;
    int j;
    while(n!=0)
    {
        a[i++]=n%2;
        n=n/2;
    }
    for(j=i-1;j>=0;j--)
        printf("%d",a[j]);
    printf("\n");
}
void f2(int n)
{
    int a[MaxSize],i=0;
    int j;
    while(n!=0)
    {
        a[i++]=n%8;
        n=n/8;
    }
    for(j=i-1;j>=0;j--)
        printf("%d",a[j]);
    printf("\n");    
}
void f3(int n)
{
    char a[MaxSize];
    int j,i=0;
    while(n!=0)
    {
        if(n%16>=10)
           a[i++]=n%16-10+'A';
        else a[i++]=n%16+48;
        n=n/16;    
    }
    for(j=i-1;j>=0;j--)
       printf("%c",a[j]);
    printf("\n");    
}
int main()
{
    int n;
    scanf("%d",&n);
    f1(n);
    f2(n);
    f3(n);
    return 0;
}
没用switch语句,但是应该是对的

板凳

你还是上我的博客看看吧,我编过这个,只是没有switch语句.tld5yj的博客.

3 楼


十进制数包括正数,负数(小数)

4 楼


5 楼


  这个程序前面有位叫GCC的已经给出,你可以去参考一下,就是简单的栈的应用而已嘛!对应多少进制就mod几就是了。。。。。。

6 楼

至于switch的加入,可以枚举你所选的进制然后进行选择就是了~

7 楼

#include <stdio.h>
int n;
void f1()
{//十->二
int a[10],i=0,j;
printf("请输入任意一个十进制数:");
scanf("%d",&n);
 while(n)
 {a[i++]=n%2;
  n=n/2;
 } printf("十--->二是:");
 for(j=i-1;j>=0;j--)
     printf("%d",a[j]);
 }
void f2()
{//十->八
printf("请输入任意一个十进制数:");
scanf("%d",&n);
int a[10],i=0,j;
 while(n)
 {a[i++]=n%8;
  n=n/2;
 }
 printf("十--->八是:");
 for(j=i-1;j>=0;j--)
     printf("%d",a[j]);
 }
void f3()
{//十->十六
printf("请输入任意一个十进制数:");
scanf("%d",&n);
int a[10],i=0,j;
 while(n)
 {a[i++]=n%16;
  n=n/2;
 } printf("十--->十六是:");
 for(j=i-1;j>=0;j--)
     printf("%d",a[j]);
 }
main()
{int choice,f=1;
while(f)
{printf("1------- 十--->二\n");
printf("2------- 十--->八\n");
printf("3------- 十--->十六\n");
printf("4------- 退出\n");
printf("请输入你的选择:");
scanf("%d",&choice);
switch(choice)
{case 1:f1( );printf("\n");break;
 case 2:f2( );printf("\n");break;
 case 3: f3( );printf("\n");break;
 case 4: f=0;
}
}
 }

8 楼

用栈写的 
我QQ 271150521 有意向的加我哦 大家共同进步啊
#include<iostream.h>
#define MAXSIZE 100
typedef struct
{
    int data[MAXSIZE];
    int top;
}SeqStack;
SeqStack *Init_SeqStack()
{
    SeqStack *s;
    s=new(SeqStack);
    s->top=-1;
    return s;
}
int Empty_SeqStack(SeqStack *s)
{
    if(s->top==-1)return 1;
    else return 0;
}
int Push_SeqStack(SeqStack *s,int x)
{
    if(s->top==MAXSIZE-1)return 0;
    else
    {
        s->data[++s->top]=x;
        return 1;
    }    
    
}
int Pop_SeqStack(SeqStack *s,int *x)
{
    if(Empty_SeqStack(s))return 0;
    else
    {
        *x=s->data[s->top--];
        return 1;
    }
}
int Top_SeqStack(SeqStack *s)
{
    if(Empty_SeqStack(s))return 0;
    else return(s->data[s->top]);
}
void main()
{
    SeqStack *S;
    int x,N,r;
    S=Init_SeqStack();
    cout<<"input:";
    cin>>N;
    cout<<endl;
    cout<<"几进制:";
    cin>>r;
    cout<<endl;
    while(N)
    {
        Push_SeqStack(S,N%r);
        N=N/r;
    }
    while(!Empty_SeqStack(S))
    {
        Pop_SeqStack(S,&x);
        cout<<x;
    }    
}

9 楼

如果觉得头疼,说明你现在不适合做这一行

1.不怕困难,认真学好
2.抓紧时间改行,以免浪费青春

10 楼

对于十进制小数部分,上面的程序都没考虑到

我来回复

您尚未登录,请登录后再回复。点此登录或注册