对于输入的任意一个非负十进制整数,打印输出与其等值的十六进制数

【问题描述】对于输入的任意一个非负十进制整数,打印输出与其等值的十六进制数
【输入形式】非负十进制整数
【输出形式】输出相应十进制整数转换后的十六进制数,若输入不符合要求,提示错误,重新输入
【样例输入】31
【样例输出】1F
【样例说明】先判断输入是否符合非负正整数要求,若输入不符合要求,提示:"输入错误,请重新输入:".
【评分标准】

主函数

#include"_STACK_H_.h"


int main(void)
{
	int a;
	int b;
	int c;
	Stack_Order stack;
	while (true)
	{	
		int input=scanf("%d", &a);
		if (a < 0)
		{
			printf("输入错误,请重新输入:\n");
		}
		else
		{
			if (a==0)
			{
				printf("%d", a);
			}
			else
			{
				Order_Creat_Stack(&stack);
				while (a >= 1)
				{
					b = a % 16;
					Order_Stack_Push(&stack, &b);
					a = (a - b) / 16;
				}
				while (Order_Stack_Judgment(&stack) == false)
				{
					Order_Stack_Pop(&stack, &c);
					if (c == 10)
					{
						printf("A");
					}
					else if (c == 11)
					{
						printf("B");
					}
					else if (c == 12)
					{
						printf("C");
					}
					else if (c == 13)
					{
						printf("D");
					}
					else if (c == 14)
					{
						printf("E");
					}
					else if (c == 15)
					{
						printf("F");
					}
					else
					{
						printf("%d", c);
					}
				}
			}
			break;
		}
	}
}

头文件

#ifndef _STACK_H_
#define _STACK_H_

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#include<string.h>

/*特殊量定义区*/

//栈的数据类型
#define Data_Type int

//顺序栈的大小
#define Data_Size 10

/*结构体定义区*/

//数据域结构体
typedef struct Data
{
	Data_Type data[Data_Size];
	int stack_top;
}Stack_Order;

typedef Stack_Order* PStack;
/*函数声明区*/

//操作:	创建一个空栈
//前置条件:传入一个栈的指针
//后置条件:如果创建成功返回true,否则返回false
bool Order_Creat_Stack(PStack pstack);

//操作:	把一个栈置为空栈
//前置条件:传入一个栈的指针
//后置条件:如果创建成功返回true,否则返回false
bool Order_Stack_Empty(PStack pstack);

//操作:	判断栈是否为空栈
//前置条件:输入一个栈的地址
//后置条件:如果栈为空返回true,否则返回false
bool Order_Stack_Judgment(PStack pstack);

//操作:	返回栈的长度 
//前置条件:输入一个栈的地址
//后置条件:返回栈的长度
int Order_Stack_Long(PStack pstack);

//操作:	插入一个元素data为栈顶元素
//前置条件:输入一个栈的地址,和插入元素的地址
//后置条件:插入成功返回ture,否则返回false
bool Order_Stack_Push(PStack pstack,Data_Type* data);

//操作:	弹出栈顶元素
//前置条件:输入一个栈的地址,一个栈数据类型data的地址
//后置条件:将栈顶数据交给data,删除栈顶元素,成功返回true,否则返回false
bool Order_Stack_Pop(PStack pstack,Data_Type* data);

//操作:	输出栈顶元素
//前置条件:输入一个栈的地址,一个栈数据类型data的地址
//后置条件:成功返回true,否则返回false
bool Order_Stack_GetTop(PStack pstack, Data_Type* data);

//操作:	从栈底到栈顶依次对栈中每个元素显示 
//前置条件:输入栈的地址
void Order_Stack_Print(Stack_Order stack);

//操作:	打印当前数据
//前置条件:输入当前数据
void Order_Stack_visit(Data_Type data);


#endif // !_STACK_H_

引用函数

#include"_STACK_H_.h"

bool Order_Creat_Stack(PStack pstack)
{
	pstack->stack_top = -1;
	return true;
}

bool Order_Stack_Empty(PStack pstack)
{
		pstack->stack_top = -1;
		return true;
}

bool Order_Stack_Judgment(PStack pstack)
{
	if (pstack->stack_top == -1)
	{
		return true;
	}
	else
	{
		return false;
	}
}

int Order_Stack_Long(PStack pstack)
{
	return pstack->stack_top + 1;
}

bool Order_Stack_Push(PStack pstack,Data_Type* data)
{
	if (pstack->stack_top == Data_Size - 1) 
	{
		return false;
	}
	else
	{
		pstack->stack_top++;
		pstack->data[pstack->stack_top]=*data;  
		return true;
	}
}

bool Order_Stack_Pop(PStack pstack, Data_Type* data)
{
	if (pstack->stack_top==-1)
	{
		return false;
	}
	else
	{
		*data = pstack->data[pstack->stack_top];
		pstack->stack_top--;
		return true;
	}
}

void Order_Stack_Print(Stack_Order stack)
{
	int i;
	i = 0;
	while (i <=stack.stack_top)
	{
		Order_Stack_visit(stack.data[i++]);
	}
	printf("\n");
}

void Order_Stack_visit(Data_Type data)
{
	printf("%d ",data);
}

bool Order_Stack_GetTop(PStack pstack, Data_Type* data)
{
	if (pstack->stack_top == -1)
	{
		return false;
	}
	else
	{
		*data = pstack->data[pstack->stack_top];
		return true;
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值