用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);
=================================================================
哈哈!源码给分吧!源码
编写好c语言源程序后如何进行编译和运行
编写好C语言源程序后,源码需要按照以下步骤进行编译和运行:
1. 保存源代码文件,源码确保文件扩展名为“.c”。源码电脑时钟编码源码
2. 使用C语言编译器将源代码文件编译成目标文件。源码在命令行中输入“gcc 源文件名.c -o 目标文件名”即可进行编译。源码如果编译成功,源码将生成一个目标文件。源码
3. 将目标文件链接成可执行文件。源码在命令行中输入“gcc 目标文件名.o -o 执行文件名”即可进行链接。源码如果链接成功,源码将生成一个可执行文件。源码
4. 运行可执行文件。源码在命令行中输入“./执行文件名”即可运行程序。如果一切正常,掌上刷题程序源码程序将输出预期的结果。
需要注意的是,编译和运行C语言程序需要相应的环境配置,包括C语言编译器和操作系统等。此外,不同的操作系统和编译器可能具有不同的命令行语法和选项,因此需要根据实际情况进行调整。
.c文件是什么文件
.c 文件是C语言源代码文件。
在计算机编程中,每种编程语言通常都有其特定的文件扩展名,用于标识该文件的类型和内容。对于C语言来说,这种扩展名就是“.c”。C语言是一种通用、过程式的计算机编程语言,支持结构化编程、html成绩查询系统源码词汇变量作用域和递归等功能,它的设计提供了低级别的访问权限,可以访问内存、处理指针等,因此非常适合系统级编程,如操作系统或编译器开发。
一个.c文件通常包含了一系列的函数定义、变量声明以及执行语句,这些都是C语言程序的基本组成部分。程序员通过编写这些代码来实现特定的功能或解决特定的问题。例如,一个简单的C程序可能包含一个main函数,该函数在程序运行时执行,并在控制台输出一条消息。这个程序的代码就可以保存在一个.c文件中。
编译.c文件通常需要C语言编译器,分销平台源码英文缩写如GCC或Clang。编译器将源代码(人类可读的代码)转换为机器代码(计算机可以直接执行的代码)。这个过程通常包括预处理、编译、汇编和链接等步骤。最终生成的可执行文件可以在计算机上运行,实现程序员预期的功能。
举个例子,如果你有一个名为“hello.c”的文件,其中包含一个简单的C程序,用于在控制台输出“Hello, World!”的消息,你可以使用C语言编译器编译这个文件,生成一个可执行文件,然后在计算机上运行这个文件,看到“Hello, World!”的输出。
c语言源代码文件格式是微信商城源码java什么?
C语言源文件后缀名是.c,编译生成的文件后缀名是.obj,连接后可执行文件的后缀名是.exe。源文件的后缀仅仅是为了表明该文件中保存的是某种语言的代码(例如.c文件中保存的是C语言代码),这样程序员更加容易区分,编译器也更加容易识别,它并不会导致该文件的内部格式发生改变。
扩展资料
C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试,且c语言的处理和表现能力都非常的强大。
依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建,通过指针类型更可对内存直接寻址以及对硬件进行直接操作,因此既能够用于开发系统程序,也可用于开发应用软件。
C语言是普适性最强的一种计算机程序编辑语言,它不仅可以发挥出高级编程语言的功用,还具有汇编语言的优点。
如何将单片机程序编译为c语言源代码?
1、首先在电脑桌面中,双击“Keil4”图标打开软件。 2、点击上部菜单栏中的“工程”,在下拉菜单中选择“新建工程文件”。 3、把工程文件保存到目标文件夹里去,工程文件命名可以随意写入一些数字。 4、选择单片机类型,根据实际情况进行选择,例如“Atmel”中的“C”。 5、点击“文件”,在“文件”的下拉菜单中选择新建。 6、最后把新建的文件保存到之前的工程组里去,文件命名的时候在后面加上“.c”就可以自动形成c文件。c语言怎么反编译源码?
需要准备的工具:电脑,反编译工具ILSpy。1、首先在百度上搜索下载反编译工具ILSpy,解压后如图,双击.exe文件打开解压工具。
2、选择file选项,点击“打开”。
3、接着选择要反编译的文件,点击“打开”。
4、这是会出现一个对话框,在这个对话框里面就可以看到源码了。
5、如果想把源码保存下来,自己在源码的基础上修改,点击"file"下的“Save code...”,保存即可。
6、如需用vs打开反编译后的源码,只需要打开这个.csproj文件即可。
C语言源代码怎么导入编译器里?
要将C语言源代码导入编译器中,通常有以下几个步骤:1. 编写C语言源代码:使用文本编辑器或集成开发环境(IDE)编写C语言源代码文件,例如hello.c。
2. 打开编译器:选择一种C语言编译器,打开它的界面。常见的C语言编译器包括GCC、Clang、Visual Studio等。
3. 创建项目:在编译器中创建一个新项目或工程,例如选择File -> New Project,然后选择C语言项目类型。
4. 添加源文件:在项目中添加C语言源代码文件,例如点击Add File或者Add Existing Item按钮,然后选择刚才创建的hello.c文件。
5. 进行编译:在编译器中进行编译操作,例如选择Build -> Build Solution。如果代码没有语法错误,则会生成可执行程序,例如hello.exe。
6. 运行程序:在编译器中运行刚刚生成的可执行程序,例如选择Debug -> Start Debugging。如果一切顺利,程序应该会输出"Hello, world!"这样的结果。
需要注意的是,不同的编译器可能有不同的操作方式和具体步骤,但是基本的流程是相似的。此外,编译器也可以通过命令行方式来进行编译和运行,具体方法可以参考相应编译器的文档或帮助信息。
公众号:奇牛编程
2024-12-23 06:34
2024-12-23 05:43
2024-12-23 05:17
2024-12-23 05:07
2024-12-23 04:37