n的阶乘(递归)
#include#include int fun(int n){ int t; if(n==1||n==0){ t=1; } else{ t=fun(n-1)*n; } return t; } int main() { int m,n; scanf("%d",&n); if(n<0){ printf("´íÎó"); } else{ m=fun(n); printf("%d",m); } system("pause"); return 0; }
n的阶乘(非递归)
#include#include #include int ace(int n) { int i,t=1; for(i=1;i 斐波那契数列(递归)
#include#include #include int fun(int n){ if(n<0){ printf("错误"); } if(n==0){ return 0; } if(n==1){ return 1; } return fun(n-1)+fun(n-2); } int main(int argc,char **argv) { clock_t start_time,end_time; start_time=clock(); int n,i; printf("要输出斐波那契数列的位数:"); scanf("%d",&n); for(i=0;i 斐波那契数列(非递归)
#include#include #include int fun(int n){ int i,j=1,k=1,temp=0; if(n<0){ printf("错误"); } if(n==0){ return 0; } if(n<=2&&n>0){ return 1; } if(n>2){ for(i=0;i<=n-3;i++){ temp=j+k; j=k; k=temp; } return temp; } } int main(int argc,char **argv) { clock_t start_time,end_time; start_time=clock(); int n,i; printf("要输出斐波那契数列的位数:"); scanf("%d",&n); for(i=0;i 回文判断
#include#include typedef struct Stack { int top; char str[100]; }STACK; int main() { int len,i,mid,next; char str[100]; STACK s; s.top=0; gets(str); len=strlen(str); mid=len/2; for(i=0;i 任意进制转换
#include#include #include int ChangeTen(int n, char str[]); void ChangeX(int n, int x); int main() { char str[100]; //由于待转换数的进制未知,可能存在字母表达,所以用字符串储存 int n, x, s; printf("输入待转换数及其进制:n"); scanf("%s %d", str, &n); s = ChangeTen(n, str); printf("输入待转换进制:n"); scanf("%d", &x); printf("转换后为:n"); ChangeX(s, x); return 0; } int ChangeTen(int n, char str[]) //将n进制数转换成10进制数 { int len = strlen(str), i, sum = 0, t = 1; for (i = len - 1; i >= 0; i--) { if (str[i] > 'A') //当高于10进制时,会用‘A’及其后表达 { sum += (str[i] - 55)*t; } else { sum += (str[i] - 48)*t; } t *= n; } return sum; } void ChangeX(int n, int x) //利用递归思想把10进制数转换为x进制 { int a; if(n) { ChangeX(n/x, x); a = n%x; if (a < 10) { printf("%d", a); } else { printf("%c", a+55); } } } 栈的基本操作
#include "stdio.h" #include "stdlib.h" int Max_SIZE=100; typedef struct linkStackNode { int data; linkStackNode *next; }linkStackNode; typedef struct linkStack { linkStackNode *top; int length; }linkStack; linkStack *initialize_stack()//链栈的初始化 { linkStack *p = (linkStack *) malloc(sizeof(linkStack)); p->length = 0; p->top = NULL; return p; } int Isempty(linkStack *p)//判断栈是否为空 { if(p->length==0) { printf("栈为空n"); return 1; } else { printf("栈不为空n"); return 0; } } int Isenough(linkStack *p)//判断栈满 { if(p->length==Max_SIZE) { printf("栈满n"); return 1; } else { printf("栈不为满n"); return 0; } } linkStack* Clear_Stack(linkStack *p)//栈的清空 { linkStackNode *temp; while(p->top) { temp=p->top; p->top=p->top->next; p->length--; free(temp); } return p; } void Destory_stack(linkStack *p)//栈的销毁 { linkStack *ptr; ptr=Clear_Stack(p); free(ptr); } linkStack *Push_linkstackNode(linkStack *p,int data)//入栈 每次返回栈的头部 { if(!p) exit(0); linkStackNode *temp=(linkStackNode *) malloc(sizeof(linkStackNode)); temp->data=data; temp->next=p->top; p->top=temp; p->length++; } void pop_linkStack(linkStack *p)//出栈 每次从头部出栈 返回出栈完后的头 { if(!p) exit(1); int data; linkStackNode *temp=p->top; data=temp->data; printf("%dn",data); p->top=temp->next; p->length--; free(temp); } void GEt_Top_stack(linkStack *p)//得到栈顶元素 { if(!p) exit(0); int data; linkStackNode *temp=p->top; data=temp->data; printf("栈顶元素=%dn",data); } void Traverse_Stack(linkStack *p)//栈的遍历 { linkStackNode *temp; while(p->top) { temp=p->top; int data=temp->data; p->top=p->top->next; printf("%d",data); } printf("n"); } void menu(linkStack *p) { int choice; while(1) { printf("请输入你想要选择的功能:n"); printf("1.入栈n"); printf("2.出栈n"); printf("3.栈空判断n"); printf("4.栈满判断n"); printf("5.获取栈顶元素n"); printf("6.栈的遍历n"); printf("7.退出程序n"); printf("请输入你的选择:"); scanf("%d",&choice); switch (choice) { case 1: int data; setbuf(stdin,NULL); printf("输入你想要录入的数据n"); scanf("%d",&data); Push_linkstackNode(p,data); break; case 2: pop_linkStack(p); break; case 3: Isempty(p); break; case 4: Isenough(p); break; case 5: GEt_Top_stack(p); break; case 6: Traverse_Stack(p); break; case 7: exit(0); default: break; } } } int main() { linkStack *Stack=initialize_stack(); menu(Stack); return 0; }



