【mud游戏源码下载】【包站平台源码】【公式源码怎么写】stdlib库源码_stl源码stack

2024-11-25 02:02:50 来源:jdk源码怎么分析 分类:焦点

1.c语言源程序结构化程序由哪几个组成
2.用C语言写的库源计算器源代码

stdlib库源码_stl源码stack

c语言源程序结构化程序由哪几个组成

       结构化程序的C语言源代码主要由五大元素构成,分别是源码头文件、全局变量、库源函数声明、源码函数定义以及主函数。库源头文件承载了程序中所需库函数的源码mud游戏源码下载声明,如stdio.h、库源stdlib.h等。源码全局变量,库源在程序外部声明,源码允许在整个程序范围内被访问使用。库源函数声明提供函数的源码简要描述,包括名称、库源包站平台源码参数类型和返回类型。源码函数定义则详细阐述了函数的库源实现,包括名称、参数类型、返回类型以及函数主体。主函数作为程序的公式源码怎么写起点,承载了执行逻辑与调用其他函数的语句。这五大元素合理结合,构建出清晰、易于理解与维护的程序。

       头文件的引入为程序提供了库函数的声明,确保了程序所需功能的大联盟德州源码实现。全局变量的使用,赋予了数据全局可访问性,促进了程序的高效协作。函数声明则为函数提供了简单的界面描述,方便了函数的引用与调用。函数定义深入阐述了函数的金牌打赏源码具体实现,包括算法与逻辑,是程序功能的核心体现。主函数作为程序的启动点,集成了程序的执行流程与控制,是程序运行的起点。

       这五大组成部分的合理搭配,为C语言源程序构建了一套结构清晰、易于理解与维护的体系。头文件、全局变量、函数声明、函数定义与主函数的协同工作,不仅保障了程序功能的实现,也大大提高了程序的可读性和可维护性。通过这五大元素的巧妙运用,C语言开发者能够构建出高效、稳定且易于维护的程序。

用C语言写的计算器源代码

       #include<stdio.h>

       #include<iostream.h>

       #include<stdlib.h>

       #include<string.h>

       #include<ctype.h>

       typedef float DataType;

       typedef struct

       {

        DataType *data;

        int max;

        int top;

       }Stack;

       void SetStack(Stack *S,int n)

       {

        S->data=(DataType*)malloc(n*sizeof(DataType));

        if(S->data==NULL)

        {

        printf("overflow");

        exit(1);

        }

        S->max=n;

        S->top=-1;

       }

       void FreeStack(Stack *S)

       {

        free(S->data);

       }

       int StackEmpty(Stack *S)

       {

        if(S->top==-1)

        return(1);

        return(0);

       }

       DataType Peek(Stack *S)

       {

        if(S->top==S->max-1)

        {

        printf("Stack is empty!\n");

        exit(1);

        }

        return(S->data[S->top]);

       }

       void Push(Stack *S,DataType item)

       {

        if(S->top==S->max-1)

        {

        printf("Stack is full!\n");

        exit(1);

        }

        S->top++;

        S->data[S->top]=item;

       }

       DataType Pop(Stack *S)

       {

        if(S->top==-1)

        {

        printf("Pop an empty stack!\n");

        exit(1);

        }

        S->top--;

        return(S->data[S->top+1]);

       }

       typedef struct

       {

        char op;

        int inputprecedence;

        int stackprecedence;

       }DataType1;

       typedef struct

       {

        DataType1 *data;

        int max;

        int top;

       }Stack1;

       void SetStack1(Stack1 *S,int n)

       {

        S->data=(DataType1*)malloc(n*sizeof(DataType1));

        if(S->data==NULL)

        {

        printf("overflow");

        exit(1);

        }

        S->max=n;

        S->top=-1;

       }

       void FreeStack1(Stack1 *S)

       {

        free(S->data);

       }

       int StackEmpty1(Stack1 *S)

       {

        if(S->top==-1)

        return(1);

        return(0);

       }

       DataType1 Peek1(Stack1 *S)

       {

        if(S->top==S->max-1)

        {

        printf("Stack1 is empty!\n");

        exit(1);

        }

        return(S->data[S->top]);

       }

       void Push1(Stack1 *S,DataType1 item)

       {

        if(S->top==S->max-1)

        {

        printf("Stack is full!\n");

        exit(1);

        }

        S->top++;

        S->data[S->top]=item;

       }

       DataType1 Pop1(Stack1 *S)

       {

        if(S->top==-1)

        {

        printf("Pop an empty stack!\n");

        exit(1);

        }

        S->top--;

        return(S->data[S->top+1]);

       }

       DataType1 MathOptr(char ch)

       {

        DataType1 optr;

        optr.op=ch;

        switch(optr.op)

        {

        case'+':

        case'-':

        optr.inputprecedence=1;

        optr.stackprecedence=1;

        break;

        case'*':

        case'/':

        optr.inputprecedence=2;

        optr.stackprecedence=2;

        break;

        case'(':

        optr.inputprecedence=3;

        optr.stackprecedence=-1;

        break;

        case')':

        optr.inputprecedence=0;

        optr.stackprecedence=0;

        break;

        }

        return(optr);

       }

       void Evaluate(Stack *OpndStack,DataType1 optr)

       {

        DataType opnd1,opnd2;

        opnd1=Pop(OpndStack);

        opnd2=Pop(OpndStack);

        switch(optr.op)

        {

        case'+':

        Push(OpndStack,opnd2+opnd1);

        break;

        case'-':

        Push(OpndStack,opnd2-opnd1);

        break;

        case'*':

        Push(OpndStack,opnd2*opnd1);

        break;

        case'/':

        Push(OpndStack,opnd2/opnd1);

        break;

        }

       }

       int isoptr(char ch)

       {

        if(ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch=='(')

        return(1);

        return(0);

       }

       void Infix(char *str)

       {

        int i,k,n=strlen(str);

        char ch,numstr[];

        DataType opnd;

        DataType1 optr;

        Stack OpndStack;

        Stack1 OptrStack;

        SetStack(&OpndStack,n);

        SetStack1(&OptrStack,n);

        k=0;

        ch=str[k];

        while(ch!='=')

        if(isdigit(ch)||ch=='.')

        {

        for(i=0;isdigit(ch)||ch=='.';i++)

        {

        numstr[i]=ch;

        k++;

        ch=str[k];

        }

        numstr[i]='\0';

        opnd= atof(numstr);

        Push(&OpndStack,opnd);

        }

        else

        if(isoptr(ch))

        {

        optr=MathOptr(ch);

        while(Peek1(&OptrStack).stackprecedence>=optr.inputprecedence)

        Evaluate(&OpndStack,Pop1(&OptrStack));

        Push1(&OptrStack,optr);

        k++;

        ch=str[k];

        }

        else if(ch==')')

        {

        optr=MathOptr(ch);

        while(Peek1(&OptrStack).stackprecedence>=optr.inputprecedence)

        Evaluate(&OpndStack,Pop1(&OptrStack));

        Pop1(&OptrStack);

        k++;

        ch=str[k];

        }

        while(!StackEmpty1(&OptrStack))

        Evaluate(&OpndStack,Pop1(&OptrStack));

        opnd=Pop(&OpndStack);

        cout<<"你输入表达式的计算结果为"<<endl;

        printf("%-6.2f\n",opnd);

        FreeStack(&OpndStack);

        FreeStack1(&OptrStack);

       }

       void main()

       {

        cout<<"请输入你要计算的表达式,并以“=”号结束。"<<endl;

        char str[];

        gets(str);

        Infix(str);

       =================================================================

       哈哈!给分吧!

更多资讯请点击:焦点

热门资讯

head源码分析

2024-11-25 01:281858人浏览

baocms 完整源码_源码包下载

2024-11-25 01:231360人浏览

源码时代公司

2024-11-24 23:50668人浏览

趋势惯性源码_趋势的惯性

2024-11-24 23:462984人浏览

仿9158 源码_仿m1907解析源码

2024-11-24 23:24549人浏览

推荐资讯

dubbo手写源码_手写dubbo框架

1.dubbo??дԴ??2.Java软件工程师主要学习哪些课程?dubbo??дԴ?? 通过几行代码理解Dubbo通信模式 本文由小傅哥撰写,旨在通过实践演示,让你轻松掌握Dubbo的使用、

jetty源码下载

1.Java学习资源2.四种方法实现http服务3.美团动态线程池思路框架DynamicTp)之动态调整Tomcat、Jetty、Undertow线程池参数篇4.dubbo十层架构?5.docker

ios swift 源码

1.swift代码什么意思2.swift code是什么意思3.swiftcode是什么意思4.swift代码是什么意思?5.swift代码是什么?6.swift代码是什么?在哪里可以查?swift代