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;
}