求c语言编写四则运算程序

程序ok的加分

一、题目:四则运算

二、目的与要求

1. 目的:

通过编写四则运算程序,培养学生综合利用C语言进行程序设计的能力,熟悉字符串的操作方法,加强函数的运用,提高软件系统分析能力和程序文档建立、归纳总结的能力。

2. 基本要求:

1)要求用C语言编程,在Visual C++环境下调试完成;

2)要求按照程序功能分成几个功能模块来实现,各个功能模块分别使用函数来完成;

3)要求应用本课所讲授的程序设计语言知识来解决问题.

三、设计方法和基本原理

1. 课题功能描述

本程序的功能,就是实现数的加减乘除四则运算,如自动计算3+5*8的结果。

2. 问题详细描述

程序运行时,首先提示用户输入四则运算表达式(表达式中最多有3个运算符,数据范围为1-100的整数);

输入结束后,程序自动进行计算并给出结果。

如:输入13-10+5/8时输出3.625。

3. 问题的解决方案

注意:问题的解决方案有很多,下面给出的仅供同学们参考。

该问题主要注意四则运算的优先级问题:乘除运算比加减运算优先级高,同级运算按从左到右的顺序运算。

本程序应采用模块化设计方法,设计几个功能模块。例如(仅供参考):

l 字符串解析函数(将输入字符串分解成数和运算符)

l 将数据(字符数组中)转换成十进制数(long)

l 判读是否存在高优先级运算符,若存在首先计算其运算结果并保存。

l 同级运算按先后顺序进行。

四、创新要求

实现程序功能后,可进行创新设计:

1) 使用多文件,即主函数和各个函数分别存放在不同的.c文件中,在头文件中进行函数原型声明;

2) 在程序中增加自动出题功能及自动批卷功能

3) 不限定运算符个数

4) 允许括号运算的存在。

#include"stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

char token;/*global token variable*/
/*function prototypes for recursive calls*/
float exp(void);
float term(void);
float factor(void);

void error(void)
{
fprintf(stderr,"Error\n");
exit(1);
}

void match(char expectedToken)
{
if(token==expectedToken)token=getchar();
else error();
}

calculate()
{
float result;
token = getchar();/*load token with first character for lookahead*/
result = exp();
if(token=='\n')/*check for end of line */
printf("Result = %.2f\n",result);
else error();/*extraneous cahrs on line*/
}

main()
{
do
{
calculate();
}while(1);
}

float exp(void)
{
float temp = term();
while((token=='+')||(token=='-'))
switch(token)
{
case '+':
match('+');
temp+=term();
break;
case '-':
match('-');
temp-=term();
break;
}
return temp;
}

float term(void)
{
float temp = factor();
while ((token=='*')||(token=='/'))
switch(token)
{
case '*':
match('*');
temp*=factor();
break;
case '/':
match('/');
temp/=factor();
break;
}
return temp;

}

float factor(void)
{
float temp;
if(token=='('){
match('(');
temp = exp();
match(')');
}
else if(isdigit(token)){
ungetc(token,stdin);
scanf("%f",&temp);
token = getchar();
}
else error();
return temp;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-09
分少
相似回答