第五周项目4 -数制转换

代码及问题描述
/* 
*烟台大学计控学院 
*作    者:张雯婧
*完成日期:2016年9月25日 
*问题描述【项目 - 数制转换】 把十进制的整数转换为任一进制数输出。请利用栈设计算法,并实现程序。 
提示:要转换为r进制,则原来的数逐次除以基数r(除完之后用商再除),直到商为0,得到的一系列余数的逆序就是转换结果。这里的“逆序”,意味着后产生的余数,会先输出,后进先出,栈的机会来了…… 
*/  
1.sqstack.h的代码
#define MaxSize 100
typedef char ElemType;
typedef stryct
{
	Elemtype data[MaxSize];
	int top;//栈指针
}SqStack;
void InitStack(SqStack *&s);//初始化栈
void DestroyStack(SqStack *&s);  //销毁栈  
bool StackEmptySqStack *s);     //栈是否为空  
int StackLength(SqStack *s);  //返回栈中元素个数——栈长度  
void Push(SqStack *&s,ElemType e); //入栈  
bool Pop(SqStack *&s,ElemType &e); //出栈  
bool GetTop(SqStack *s,ElemType &e); //取栈顶数据元素  
void DispStack(SqStack *s);  //输出栈 
void MultiBaseOutput (int number,int base); 
2.sqstack.cpp的代码
void InitStack(SqStack *&s)//初始化栈
{
	s=(SqStack *)malloc(sizeof (SqStack));
	s->next=NULL;
}
void DestroyStack(SqStack *&s)  //销毁栈  
{
	SqStack *p=s,*q=s->next;
	if(q!=NULL)
	{
	  free(p);
	  p=q;
	  q=p->next;
	}
	free(p);
}
bool StackEmpty(SqStack *s)    //栈是否为空
{
	return (s->next==NULL);
}
int StackLength(SqStack *s) //返回栈中元素个数——栈长度 
{
  SqStack *p=s->next;
  int i;
  if(p!=NULL)
  {
	  i++;
	  p=p->next;
  }
  return(i);
}
void Push(SqStack *&s,ElemType e) //入栈
{
	SqStack *p;
    p=(SqStack *)malloc(sizeof (SqStack));
	p->data=e;
	p->next=s->next;
	s->next=p;
}
bool Pop(SqStack *&s,ElemType &e) //出栈 
{
	SqStack *p;
	if(s->next==NULL)
		return false;
	p=s->next;
	s->next=p->next;
	free(p);
	return true;

}
bool GetTop(SqStack *s,ElemType &e) //取栈顶数据元素 
{
	if(s->next==NULL)
		return false;
	e=s->next->data;
	return true;
}
void DispStack(SqStack *s)  //输出栈 
{
	LiStack *p=s->next;
	if(p!=NULL)
	{
		printf("%c ",p->data);
	p=p->next;
	}
	printf("\n");
} 
void MultiBaseOutput (int number,int base)
{  
    //假设number是非负的十进制整数,输出等值的base进制数  
    int i;  
    SqStack *S;  
	InitStack(S);  
    while(number)//从右向左产生base进制的各位数字,并将其进栈  
    {  
        Push(S,number%base);//将将余数进栈  
        number/=base;    
    }  
    while(!StackEmpty(S))//栈非空时退栈输出  
    {  
        Pop(S,i);  
        printf("%d",i);    
    }    
}  
3.main.cpp的代码
#include"sqstack.h"  
#include<stdio.h>  
int main()  
{  
    MultiBaseOutput(10, 2);  
    return 0;  
}  
运行结果:
知识点总结
要转换为r进制,则原来的数逐次除以基数r(除完之后用商再除),直到商为0,得到的一系列余数的逆序就是转换结果。这里的“逆序”,意味着后产生的余数,会先输出,后进先出是栈的特点。
学习心得:
栈的应用,从算法分析问题,再考虑栈的特点性质。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园的建设目标是通过数据整合、全面共享,实现校园内教学、科研、管理、服务流程的数字化、信息化、智能化和多媒体化,以提高资源利用率和管理效率,确保校园安全。 智慧校园的建设思路包括构建统一支撑平台、建立完善管理体系、大数据辅助决策和建设校园智慧环境。通过云架构的数据中心与智慧的学习、办公环境,实现日常教学活动、资源建设情况、学业水平情况的全面统计和分析,为决策提供辅助。此外,智慧校园还涵盖了多媒体教学、智慧录播、电子图书馆、VR教室等多种教学模式,以及校园网络、智慧班牌、校园广播等教务管理功能,旨在提升教学品质和管理水平。 智慧校园的详细方案设计进一步细化了教学、教务、安防和运维等多个方面的应用。例如,在智慧教学领域,通过多媒体教学、智慧录播、电子图书馆等技术,实现教学资源的共享和教学模式的创新。在智慧教务方面,校园网络、考场监控、智慧班牌等系统为校园管理提供了便捷和高效。智慧安防系统包括视频监控、一键报警、阳光厨房等,确保校园安全。智慧运维则通过综合管理平台、设备管理、能效管理和资产管理,实现校园设施的智能化管理。 智慧校园的优势和价值体现在个性化互动的智慧教学、协同高效的校园管理、无处不在的校园学习、全面感知的校园环境和轻松便捷的校园生活等方面。通过智慧校园的建设,可以促进教育资源的均衡化,提高教育质量和管理效率,同时保障校园安全和提升师生的学习体验。 总之,智慧校园解决方案通过整合现代信息技术,如云计算、大数据、物联网和人工智能,为教育行业带来了革命性的变革。它不仅提高了教育的质量和效率,还为师生创造了一个更加安全、便捷和富有智慧的学习与生活环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值