版权声明:ASorb 2017-2018 个人博客地址:https://www.orbpi.cn/ 本文CSDN地址: https://blog.csdn.net/qq_42304721/article/details/83411151
最近时间有点紧啊,看来博客更新速度又要减慢了。
使用下面代码前,需要引入基本算法。另外数据结构的基本算法已经更新,新增了“队列”的基本算法。
基本算法地址:https://www.orbpi.cn/article/shujujiegoujibensuanfaluru.html
C语言实现数值转换
- 问题描述
将十进制数N和其它d进制数的转换是计算机实现计算的基本问题,其解决方案很多,其中最简单方法基于下列原理:即除d取余法。例如:(1348)10=(2504)8
基本要求:对于键盘输入的任意一个非负的十进制整数,打印输出与其等值的八进制数。 -
代码
/* **实验题二 **数制转换 **ASORB&201810 */ #include"DataH.h" int main(){ SqStack S[3]; SElemType e; int num,n; for (int i = 0; i < 3;i++) InitStack(&S[i]); //初始化栈 printf("输入数值:"); scanf("%d", &n); num = n; while (num){ Push(&S[0], num % 2); num /= 2; } num = n; while (num){ Push(&S[1], num % 8); num /= 8; } num = n; while (num){ Push(&S[2], num % 16); num /= 16; } printf("结果:\n"); printf("0b"); while (!StackEmpty(S[0])){ Pop(&S[0], &e); printf("%d", e); } printf("\n0o"); while (!StackEmpty(S[1])){ Pop(&S[1], &e); printf("%d", e); } printf("\n0x"); while (!StackEmpty(S[2])){ Pop(&S[2], &e); switch (e){ 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", e); } } for (int i = 0; i < 3;i++) DestroyStack(&S[i]); //销毁栈 fflush(stdin); getchar(); //防退 return 0; }
-
效果图
C语言实现回文判断
- 问题描述
试写一个算法,判断依次读入的一个以@为结束符的字母序列,是否为形如‘序列1&序列2’模式的字符序列。其中序列1和序列2 中都不含字符‘&’,且序列2 是序列1的逆序列。例如,‘a+b&b+a’是属该模式的字符序列,而‘1+3&3-1’则不是。 -
代码
/* **实验题二 **回文判断 **ASORB&201810 */ #include"DataH.h" int main(){ SqStack S; SElemType e, e1; int sw = 0; InitStack(&S); //初始化 printf("输入回文序列:"); while ((e = getchar()) != '@'&&e != '\n') { if (e == '&'){ sw = 1; continue; } if (sw == 0) Push(&S, e); else{ if (StackEmpty(S)){ sw = 0; break; } Pop(&S, &e1); if (e != e1) { sw = 0; break; } } } if (sw&&StackEmpty(S)) printf("该字符串是回文序列!\n"); else printf("该字符串不是回文序列!\n"); DestroyStack(&S); //销毁 fflush(stdin); getchar(); return 0; }
-
效果图
C语言实现商品货架管理
- 问题描述
商品货架可以看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期最近。 上货时,需要倒货架,以保证生产日期较近的商品在较下的位置。
基本要求:
针对一种特定商品,实现上述管理过程。
提示:
用栈模拟货架和周转空间。 -
代码
/* **实验题二 **商品货架管理 **ASORB&201810 */ #include"DataH.h" Status PushEnd(SqStack *S, SElemType e){//栈低插入元素 if (StackEmpty(*S)){//栈空时直接入栈 *(S->base) = e; S->top = S->base + 1; } else{//非空,则后移 if (S->top - S->base >= S->stacksize){ //栈满,追加空间 S->base = (SElemType*)realloc(S->base, sizeof(SElemType)*(S->stacksize + STACKINCREMENT)); if (!S->base)exit(OVERFLOW); S->top = S->base + S->stacksize; S->stacksize += STACKINCREMENT; } for (SElemType *p = S->top; p > S->base; p--) *p = *(p - 1); *(S->base) = e; S->top++; } return OK; } void AddSh(SqStack *S){ SElemType e; printf("输入商品编号:"); scanf("%d", &e.id); printf("输入商品名称:"); fflush(stdin); scanf("%s", e.name); PushEnd(S, e); } void ViewSh(SqStack S){ SElemType e; while (!StackEmpty(S)){ Pop(&S, &e); printf("商品编号:%d\t商品名称:%s\n", e.id, e.name); } printf("\n\n\n回车键返回....."); fflush(stdin); getchar(); } int main(){ int sw; SqStack S; InitStack(&S); //初始化 while (1){ printf("当前商品保有量:%d", StackLength(S)); printf("\n\n\n\n\t[1].添加商品\t[2].查看货架\n\t[3].退出"); printf("\n\n\n----------------\n选择:"); scanf("%d", &sw); if (sw == 3)break; else if (sw == 1)AddSh(&S); else if (sw == 2)ViewSh(S); system("cls"); } DestroyStack(&S); //销毁 return 0; }
-
效果图
END
现在感觉一天的时间好短,都不敢睡午觉了。
最后更新时间:2018-10-18 19:22:03
本文仅代表个人观点,转载请注明出处!
文章地址:https://www.orbpi.cn/article/cyuyanshuzhizhuanhuanwentihuiwenpanduanshangpinhuojiaguanli.html