栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

第四次作业

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第四次作业

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/511864.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号