主题:求助一道题,关于栈的
kasue
[专家分:0] 发布于 2006-10-21 19:54:00
设计一个算法,将一个十进制数转换为二进制,八进制,十六进制(中间最好使用switch语句)~[em10]
回复列表 (共10个回复)
沙发
pentiumchen [专家分:70] 发布于 2006-10-21 22:51:00
#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语句,但是应该是对的
板凳
tld5yj [专家分:1310] 发布于 2006-10-24 18:29:00
你还是上我的博客看看吧,我编过这个,只是没有switch语句.tld5yj的博客.
3 楼
duyanqing [专家分:20] 发布于 2006-10-25 10:25:00
十进制数包括正数,负数(小数)
4 楼
lszh [专家分:320] 发布于 2006-10-25 10:31:00
5 楼
polaris606 [专家分:460] 发布于 2006-10-31 22:33:00
这个程序前面有位叫GCC的已经给出,你可以去参考一下,就是简单的栈的应用而已嘛!对应多少进制就mod几就是了。。。。。。
6 楼
polaris606 [专家分:460] 发布于 2006-10-31 22:35:00
至于switch的加入,可以枚举你所选的进制然后进行选择就是了~
7 楼
zjkzxy [专家分:310] 发布于 2006-11-01 19:49:00
#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 楼
xust [专家分:10] 发布于 2007-11-04 23:51:00
用栈写的
我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 楼
bpttc [专家分:8790] 发布于 2007-11-05 18:41:00
如果觉得头疼,说明你现在不适合做这一行
1.不怕困难,认真学好
2.抓紧时间改行,以免浪费青春
10 楼
azhou [专家分:20] 发布于 2007-11-12 16:50:00
对于十进制小数部分,上面的程序都没考虑到
我来回复