Training3:递归和栈编程训练
来源:互联网 发布:潍坊seo林晟科技 编辑:程序博客网 时间:2024/04/30 05:09
1. 题目: 利用递归方法实现一个函数,该函数能够实现n的阶乘,即 n! = n*(n-1)*…*3*2*1;
#include <stdio.h>int fun(int n){ if(n==1) { return 1; } else { return n*fun(n-1); }}int main(){ int n; int sum=0; printf("请输入一个整数:"); scanf("%d",&n); sum = fun(n); printf("结果为:%d\n",sum); return 0;}
2. 题目:利用字符数组实现一个先入后出的栈结构,并提供栈操作的push和pop的接口
#include <stdio.h>int i=10;int push(int a[],int n){ if(i<0) { printf("栈满!\n"); return -1; } a[--i]=n; return 1;}int pop(int a[]){
if(i<0)
{ printf("栈空!\n"); return -1; } printf("%d\t",a[i++]); return 1}int main(){ int a[10]={0}; int j=0; for(j=0;j<10;j++) { push(a,j); } for(j=0;j<10;j++) { pop(a); } printf("\n"); return 0;}
3. 题目:输入一个表达式字符串,如1+3*4-6,输出这个表达式的值.
提示:需要建立两个栈结构,一个为整形存放操作数,另一个为字符型,存放运算符,运算符的进栈要和在站顶的元素比较优选级如果低于栈顶元素则进行一次运算,要求至少实现正整数的加减乘除四则运算,如100- 5*4 -50/10 =75
程序见简单计算器的那篇文章
4. 题目:利用递归函数调用方式,将所输入的n个字符以相反顺序打印出来
#include <stdio.h>#include <string.h>int fun(char *a,int n){ if(n<0) { printf("\n"); return 1; } else { printf("%c",*(a+n)); fun(a,n-1); } return 1;}int main(){ char a[10]; int n=0; printf("请输入一个字符串:"); scanf("%s",a); n = strlen(a); printf("反向输出:"); fun(a,n); return 0;}
- Training3:递归和栈编程训练
- 递归和栈编程训练
- c语言练习题——递归和栈编程训练
- 递归和栈的编程1
- 递归、尾递归和函数式编程
- 在线编程--用递归函数和栈操作逆序栈
- 面试训练递归扩展
- 算法训练之递归
- 编程训练
- 编程训练
- 编程之美--最大公约数问题--递归和非递归
- 编程思考[1]--递归和迭代再思考
- 编程算法 - 阶乘和Fibonacci数列(递归)
- 计算机科学和编程导论-week3-递归
- Day26-递归和对面对象编程初步
- 栈和递归
- 栈和递归篇
- 队列,栈和递归
- hdu 1015 Safecracker(暴力枚举,注意它要求按字典序最大的,所以开始要排序)
- GDI+ 双缓冲 画出来的透明图片是黑色的
- 带dos调试窗口的win32程序
- 转载:JVM监控命令
- 从零开始学.net多线程系列(三)——同步
- Training3:递归和栈编程训练
- 浏览器在提交form表单时有两种提交方式
- struts2常用标签
- 从零开始学.net多线程系列(一)
- VC数据类型
- 关于 “ 非法的变量名/编号”
- VC++中SetTimer的使用
- terracotta 介绍(来自百度)
- Altium Designer解决failed to add class member及Unknown Pin的问题