进制的转换课程设计
Ⅰ c语言课程设计二八十六进制转十进制
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<stdio.h>
void hex(long int x)
{
int a[8],i=7;
while(x!=0)
{
[i]=x%16;x/=16;i--;
}
printf("转换为十六进制:");
while(++i<8)
{
switch(a[i])
{
case 10:printf("A");break;
case 11:printf("B");break;
case 12:printf("C");break;
case 13:printf("D");break;
case 14:printf("E");break;
case 15:printf("F");break;
default:printf("%d",a[i]);break;
}
}
printf("\n\n");}
void octal(int x)
{
int a[16]={0},i=15;
while(x!=0)
{
a[i]=x%8;x/=8;i--;
}
printf("转换为八进制:");
while(++i<16)
{
printf("%d",a[i]);
}
printf("\n\n");
}
void binary(int x)
{
char a[50];
int i=0,j;
while(x!=0)
{
a[i]=x%2;x=x/2;i++;
}
printf("shu ru er jin ");
for(j=i-1;j>=0;j--)
{
printf("%d",a[j]);
}
}
int f1(char a[])
{
int n,j,i,sum=0,t=0,p=1,c;
n=strlen(a);
for(i=n-1;i>=0;i--)
{
p=1;
t=(a[i]-48);
if(i==n-1)
p=1;
else
for(j=0;j<n-i-1;j++)
{
p=p*2;
sum+=t*p;
}
}
c=sum;
printf("对应的10进制数:%d\n",c);
return c;
}
int f2(char b[])
{
int i,j,sum=0,c;
for(i=strlen(b)-1,j=0;i>=0;i--,j++)
{
sum=sum+(int)(b[i]-'0')*(int)pow(8,j);
}
c=sum;
printf("对应的10进制数:%d\n",c);
return c;
}
int main()
{
int c=0,R,r,d;
char a[50],b[16];
printf("请输入将被转换的数的进制:");
scanf("%d",&R);
if(R==2)
{
printf("输入一个2进制数:");
scanf("%s",a);
c=f1(a);
}
if(R==8)
{
printf("输入一个8进制数:b[16]");
scanf("%s",b);
c=f2(b);
}
if(R==10)
{
printf("输入十进制数:d");
scanf("%d",&d);c=d;
}
printf("请输入要转换的进制型:");
scanf("%d",&r);
switch(r)
{
case 2:binary(c);break;
case 8:octal(c);break;
case 10:printf("%d",c);break;
case 16:hex(c);break;
default: printf("%d",c);break;
}
return 0;
}
Ⅱ c语言课程设计,十六进制转十进制
你的16进制输入的时候有点问题,获得16进制数十%x,不是%d,获得后直接输出就可以了
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<stdio.h>
intf1(chara[])
{
intn,j,i,sum=0,t=0,p=1,c;
n=strlen(a);
for(i=n-1;i>=0;i--)
{
p=1;
t=(a[i]-48);
if(i==n-1)
p=1;
else
for(j=0;j<n-i-1;j++)
{
p=p*2;
sum+=t*p;
}
}
c=sum;
printf("对应的10进制数:%d ",c);
returnc;
}
intf2(charb[])
{
inti,j,sum=0,c;
for(i=strlen(b)-1,j=0;i>=0;i--,j++)
{
sum=sum+(int)(b[i]-'0')*(int)pow(8,j);
}
c=sum;
printf("对应的10进制数:%d ",c);
returnc;
}
intmain()
{
intc=0,R,d;
chara[50],b[16];
printf("请输入将被转换的数的进制:");
scanf("%d",&R);
if(R==2)
{
printf("输入一个2进制数:");
scanf("%s",a);
c=f1(a);
}
if(R==8)
{
printf("输入一个8进制数:");
scanf("%s",b);
c=f2(b);
}
if(R==10)
{
printf("输入十进制数:");
scanf("%d",&d);printf("对应的10进制数:%d ",d);
}
if(R==16)
{
printf("输入十六进制数:");
scanf("%x",&d);printf("对应的10进制数:%d ",d);
}
return0;
}
Ⅲ C++课程设计 进制转换翻转游戏
同学你是哪班的,我和你的题一样,要不咱们一起讨论讨论
Ⅳ 课程设计:数制转换(C语言)
#include <stdio.h>
#include <stdlib.h>
//输入十进制数和转化的进制数M
void trans(int n,int m)
{
if(n)
{
trans(n/m,m);
if(n%m<10) printf("%c",n%m+'0');
else printf("%c",n%m-10+'A');
}
}
void main()
{
int m,n,x;
char ch;
printf("给定进制数M:");
scanf("%d",&m);
loop:
printf("给定一个%d进制的数X:",m);
fflush(stdin);
//一个M进制的数X转10进制
for(x=0;;)
{
ch=getchar();
if(ch>='0' && ch<='9')
{
n=ch-'0';
}
else if(ch>='a' && ch<='z')
{
n=ch-'a'+10;
}
else if(ch>='A' && ch<='Z')
{
n=ch-'A'+10;
}
else
{
break;
}
if(n>=m)
{
goto loop;
}
x=x*m+n;
}
printf("转化成十进制数为:%d\n",x);
printf("给定要转化进制数M:");
scanf("%d",&m);
printf("转化成%d进制后的结果为:",m);
trans(x,m);
printf("\n");
}
其他的方法:
trans函数也可以这样写:
void trans(int n,int m)
{
char str[100];
int i;
for(i=0;n>0;i++)
{
if(n%m<10)
{
str[i]=n%m+'0';
}
else
{
str[i]=n%m-10+'A';
}
n=n/m;
}
for(n=i;n>0;n--)
{
printf("%c",str[n-1]);
}
}
Ⅳ 课程设计:编程实现自然数的十进制、二进制、八进制、十六进制转换
我给你解决,呵呵,见下(已经调试成功):
#include<iostream.h>
#include<stdlib.h>
#define STACK_INIT_SIZE 100;
#define STACKINCREMENT 10;
typedef struct
{
int *base;
int *top;
int stacksize;
}SqStack;
SqStack S;
void InitStack(SqStack &S1)
{
S1.base=(int *)malloc(100*sizeof(int));
S1.top=S1.base;
S1.stacksize=STACK_INIT_SIZE;
}
void Push(SqStack &S2,int e)
{
*S2.top++=e;
}
void Pop(SqStack &S3,int &e)
{
e=* --S3.top;
}
void tentotwo(int n)
{
while(n)
{
Push(S,n%2);
n=n/2;
}
cout<<"转成的二进制数是:"<<endl;
while(S.top!=S.base)
{
int e;
Pop(S,e);
cout<<e;
}
cout<<endl;
}
void tentoeight(int n)
{
while(n)
{
Push(S,n%8);
n=n/8;
}
cout<<"转成的八进制数是:"<<endl;
while(S.top!=S.base)
{
int e;
Pop(S,e);
cout<<e;
}
cout<<endl;
}
void tentosixteen(int n)
{
while(n)
{
Push(S,n%16);
n=n/16;
}
cout<<"转成的十六进制数是:"<<endl;
while(S.top!=S.base)
{
int e;
Pop(S,e);
switch(e)
{
case 10: cout<<'A';
break;
case 11: cout<<'B';
break;
case 12: cout<<'C';
break;
case 13: cout<<'D';
break;
case 14: cout<<'E';
break;
case 15: cout<<'F';
break;
}
cout<<e;
}
cout<<endl;
}
void main()
{
InitStack(S);
f:
cout<<"请选择您想进行的操作:1.十进制转换成二进制 2.十进制转换成八进制 3.十进制转换成十六进制"<<endl;
int a,m;
cin>>a;
switch (a)
{
case 1:
{
cout<<"请输入一个十进制数"<<endl;
cin>>m;
tentotwo(m);
break;
}
case 2:
{
cout<<"请输入一个十进制数"<<endl;
cin>>m;
tentoeight(m);
break;
}
case 3:
{
cout<<"请输入一个十进制数"<<endl;
cin>>m;
tentosixteen(m);
break;
}
}
goto f;
}
Ⅵ 急!急!急!!课程设计进制转换,各位大哥帮帮忙吧!!
你是he工大的吧?
#include <iostream.h>
#include <math.h>
int tenToSix(int ten) {
int six = 0;
int count = 0;
while(ten != 0) {
int tmp = ten % 6;
six += (int)tmp * pow((double)10, (double)count++);
ten = ten / 6;
}
return six;
}
int sixToTen(int six) {
int ten = 0;
int count = 0;
while(six != 0) {
int tmp = six % 10;
ten += (int)tmp * pow((double)6, (double)count++);
six = six / 10;
}
return ten;
}
void main(){
int M = 0;
int data = 0;
cout<<"input M and data'\n";
cin>>M>>data;
if(M == 10) {
cout<<"6M is : "<<tenToSix(5863)<<"\n";
cout<<"10M is : "<<data<<"\n";
} else if(M == 6) {
cout<<"6M is : "<<data<<"\n";
cout<<"10M is : "<<sixToTen(data)<<"\n";
}
}
Ⅶ 把十进制数N转换成任意进制数d 下面程序的详细解析 数据结构课程设计要用
给你写注释了,看能否看得懂
#define MAXSIZE 100
#include<stdlib.h>
#include<stdio.h>
struct stack //一个栈的结构
{
int data[MAXSIZE]; //数据部分
int top; //栈顶位置
};
void init(struct stack *s) //初始化一个空栈
{
s->top=-1; //将栈顶位置设为-1,表示栈为空
}
int empty(struct stack *s) //判断栈是否为空
{
if(s->top==-1) //如果栈顶位置 top 为-1,则为空,返回1
return 1;
else //否则不是空栈,返回0
return 0;
}
void push(struct stack *s,int i) //压栈函数
{
if(s->top==MAXSIZE-1) //如果超出MAXSIZE-1,则栈满,数据部分不能再大
{
printf("Stack is full\n");
return;
}
s->top++; //否则栈顶位置向后移一位
s->data[s->top]=i; //将元素 i 保存到数据部分
}
int pop(struct stack *s) //出栈
{
if(empty(s)) //如果栈为空,则返回错误
{
printf("stack is empty");
return -1;
}
return (s->data[s->top--]); //返回栈顶元素
}
void trans(int num,int jz) //将 num 按 jz 进制转换
{
struct stack s;
int k;
init(&s); //初始化空栈
while(num)
{
k=num%jz; //将 num 除以 jz 的余数保存到k
push(&s,k); //将 k 压进栈 s
num=num/jz; //num 除以 jz
}
while(!empty(&s)) //然后将栈 s 里面的元素一个个出栈,并打印出来
{
k=pop(&s);
if(k<10) //如果 k 小于 10 就打印数字
printf("%d",k);
else //如果 k 大于 10 就打印字母,例如,10表示为A
printf("%c",k+55);
}
printf("\n");
}
int main()
{
int num,jz;
// clrscr();
printf("此程序的功能是将十进制数X转化为Y进制输出.\n");
printf("请输入X和Y的值:(-1结束操作)");
scanf("%d%d",&num,&jz);
while(num!=-1)
{
trans(num,jz);
printf("请输入X和Y的值:");
scanf("%d",&num);
if(num==-1)
return(0);
scanf("%d",&jz);
}
return 0; //最好加个return 0;
}
Ⅷ 数据结构课程设计 关于数制转换问题
给你一个十进制转换为八进制的,其他类似的改一下就是了
#include"stdio.h"
#include"malloc.h"
#include"util.h"
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OVERFLOW -2
#define OK 1
#define TRUE 1
#define FALSE 0
#define ERROR 0
typedef int SElemType;
typedef int Status;
typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
Status InitStack(SqStack & S)//栈的初始化
{
S.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));
if(!S.base)
exit(OVERFLOW);
S.top = S.base;
S.stacksize = 100;
return OK;
}
/*Status GetTop(SqStack S,SElemType &e)
{
if(S.top==S.base)
return ERROR;
e = *(S.top-1);
printf("获得栈顶元素:");
printf("%3d\n",e);
return OK;
}*/
Status Push(SqStack &S,SElemType e)
{
if(S.top-S.base>=S.stacksize)
{
S.base = (SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!S.base)
exit(OVERFLOW);
S.top = S.base + S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
}
Status Pop(SqStack &S,SElemType &e)
{
//若栈不为空,则删除s的栈顶元素,用e返回其值
if(S.top==S.base)
return ERROR;
--S.top;
e = *S.top;
return OK;
}
bool StackEmpty(SqStack &S)
{
if(S.top=S.base)
return TRUE;
else
return FALSE;
}
void main()
{
SqStack S;
int N,t;
printf("请输入要转换的十进制数:");
scanf("%d",&N);
InitStack(S);
while(N)
{
Push(S,N%8);
N=N/8;
}
printf("转换后的八进制数:");
while(!StackEmpty(S))
{
Pop(S,t);
printf("%2d",t);
}
printf("\n");
}
百年天地回元气 一统山河际太平 国泰民安
Ⅸ 数据结构进制转换用C或者C++怎么写啊,我们课设 求大神
/**********************声明部分**********************/
#include<stdio.h>
#include<stdlib.h>
#defineSTACK_INIT_SIZE10//定义最初申请的内存的大小
#defineSTACK_INCREMENT2//每一次申请内存不足的时候扩展的大小
#defineOVERFLOW0
#defineFALSE0
#defineTRUE1
#defineERROR0
#defineINFEASIBLE0
#defineOK1
typedefintSElemType;
typedefintStatus;
intLength;
/**********************结构类型部分**********************/
typedefstructSqStack
{
SElemType*base;//栈底指针
SElemType*top;//栈顶指针
intstacksize;
}SqStack;//顺序栈
/**********************基本操作函数部分**********************//**********************构造一个空栈S**********************/
StatusInitStack(SqStack&S)
{//构造一个空栈S
if(!(S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType))))
exit(OVERFLOW);//存储分配失败
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;//初始栈容量
returnOK;
}/**********************输入栈元素**********************/
StatusPush(SqStack&S,SElemTypee)
{
if(S.top-S.base>=S.stacksize)//栈满,追加存储空间
{
//可能会改变栈底地址,新栈底指针S.base
S.base=(SElemType*)realloc(S.base,//原栈底指针
(S.stacksize+STACK_INCREMENT)*sizeof(SElemType));//新大小
if(!S.base)
exit(OVERFLOW);//存储分配失败
//给SqStack结构对象S的3个成员赋值
S.top=S.base+S.stacksize;
S.stacksize+=STACK_INCREMENT;
}
*S.top++=e;//先把e压入栈顶,S.top再增1指向栈顶元素e的下一个位置
returnOK;
}/**********************输出栈元素**********************/
voidOutList(SqStackS)
{
S.top=S.base;//从栈底开始输出
for(inti=0;i<Length;i++)//用长度控制输出的个数
{
printf("%d ",*(S.top)++);
}
printf(" ");//输出后换行
}
/**********************判断栈是否是空的**********************/
StatusStackEmpty(SqStackS)
{//若栈S为空栈,则返回TRUE,否则返回FALSE
//栈顶指针S.top是否等于栈底指针S.base是判断栈是否为空的条件
if(S.top==S.base)
returnTRUE;
else
returnFALSE;
}/**********************删除栈顶元素**********************/
StatusPop(SqStack&S,SElemType&e)
{//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR
if(S.top==S.base)//如果空栈,报错
returnERROR; e=*--S.top;//S.top先减1指向栈顶元素,再取值,交给e带回
returnOK;
}/**********************算法主程序**********************/
voidconversion()//算法3.1
{//对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数
SqStacks;//顺序栈s
unsignedn,m;//非负整数
SElemTypee;//栈元素e
InitStack(s);//构造空栈s
printf("请输入十进制数n(>=0)=");
scanf("%u",&n);//输入非负十进制整数n
printf(" 请输入需要转换到的进制:");
scanf("%u",&m);//输入非负十进制整数n
printf("十进制数%u的%d进制数是",n,m);
while(n)//只要n不等于0就循环
//从n为用户输入的十进制数开始,一直到n等于0为止
{
Push(s,n%m);//n除以8的余数(8进制的低位)入栈
//把n除以8的余数压入栈s
//先压入的余数是八进制的低位,后压入的余数是八进制的高位
n=n/m;//令n等于n整除以8的商,进入下轮循环
}
//循环结束时,n等于0
while(!StackEmpty(s))//只要栈s没弹空就不断循环,
//直到弹出栈底元素栈s为空为止
{
Pop(s,e);//弹出栈顶元素且赋值给e
//依次弹出栈s的栈顶元素交给e带回
//先弹出的是八进制的高位,后弹出的是八进制的低位
printf("%d",e);//依次输出e
}
//循环结束时,栈s为空
printf(" ");
}/**********************主函数部分**********************/
intmain()
{
/**********************函数声明区**********************/
StatusInitStack(SqStack&S);
StatusPush(SqStack&S,SElemTypee);
voidOutList(SqStackS);
/**********************函数执行区**********************/
conversion(); return0;
}
Ⅹ 怎么利用Matlab进行十进制数与二进制十六进制数之间的转换 课程设计
如bin2dec(‘10101 ’)为二进制转换为十进制。dec2hex(10)为十进制转换为十六进制。二进制与十六进制间无直接的转换。