linux环境下的c程序设计,Linux环境下的C语言程序设计.doc

Linux环境下的C语言程序设计

北京化工大学北方学院

课程设计报告

课程名称 系统软件课程设计

设计题目班级学号姓名指导教师设计时间简要说明设计题目的目的、意义、内容、主要任务等make工程管理器编译。(注意分割文件,可参考第一题的提示。)编写makefile文件。

程序二:

利用命名管道实现两个进程间的通信。

主要任务

分析理解题目的要求;

总结各个程序涉及的相关知识点;

掌握涉及的各种算法;

程序代码的设计与实现。正文(课程设计的主要内容,包括实验与观测方法和结果、仪器设备、计算方法、编程原理、数据处理、设计说明与依据、加工整理和图表、形成的论点和导出的结论等。正文内容必须实事求是、客观真切、准确完备、合乎逻辑、层次分明、语言流畅、结构严谨,符合各学科、专业的有关要求。

函数功能

int level()的功能 :

int level()是#include 中的函数。

它的功能是赋予 +,-,*,/,(,) 给函数,取得一个运算符的优先级,并且在遇到左括号时总是要停止,让它优先级最低。在这个函数中当遇到),\0 ,=时,要把前面的运算完成。当遇到无效的运算符时return -1,返回主函数中运行。

double cal()的动能:

double cal()是#include 中的函数。

它的功能是为+,-,*,/ 赋值,并且赋值a,b;

完成简单的计算

a+b;

a-b; a*b;

a/b;

最后返回到主函数中运行。

int calexp()的功能:

这个函数是主函数调用前定义的函数。

它的功能是计算一个字符串表达式,计算结果存在pval指向的变量中,返回错误位置下标,-1表示没有错误char* exp和double* pval,开始如果exp输入的表达式无效的话,那么就直接返回到主函数中运行,如果有效,继续运行。(其中用到了函数isspace(*p),这个函数是#include 中的函数,作用是跳过空格。) 。if(*p=='\0') return 0;//如果表达式结束意味着没有数if(*p=='(')),则表示遇到左括号入符号栈strtod(p, &q)是#include 中的函数,它的功能是将字符串转化为浮点数,strtod(p, &q)中p是字符串,赋值给d[dtop++],if(p==q

没有取到操作数,不正常calexp,继续运行。

int main()的功能:

这是主函数,完成最后的运行,当函数值无效时输出‘表达式不正确’,当函数值有效时,输出正确的结果。

函数调用关系

这个程序当中主函数只调用了一个函数,就是calexp(char* exp, double* pval),这个函数是定义的,它的作用是将一些可能的无效的赋值阻挡,使得赋值能顺利的返回,再次运行,并且使有效值入栈,确定了括号的优先顺序,并且将有效值赋予主函数当中,使得主函数能正常运行,从而得到最后的结果。

源程序

#include #include #include #include //完成栈中优先级比*p高的运算符的运算#define CALCULATE while(otop>0&&level(o[otop-1])>=level(*p))\d2=d[--dtop],d1=d[--dtop],op=o[--otop],d[dtop++]=cal(d1,op,d2);//取得一个运算符的优先级int level(char op){ if(op=='*'||op=='/') return 3; if(op=='+'||op=='-') return 2; if(op==')'||op=='='||op=='\0') return 1;//遇到它们要把前面的运算完成 if(op=='(') return 0;//运算遇到左括号总是要停止的,让它优先级最低 return -1;//无效的运算符}//做一个简单计算,a、b是操作数,o是运算符double cal(double a, char o, double b){switch(o){ case '+': return a+b;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值