东莞理工学院课程设计
东 莞 理 工 学 院
课程设计
课程
题目
程序设计基础
计算器
院系名称
计算机学院
班
级
计算机科学与技术
学生姓名
组
员
指导教师
时
间
- 1 -
东莞理工学院课程设计
1 问题要求及任务描述
1.1 题目要求
完成一个简单的计算器,要求实现最基本的运算操作,当用户输入一个算
式后,计算器显示计算结果,同时屏幕项部显示:continue? 如果用户此时按
Y 键,则继续输入下一个算式,否则,程序终止。
实现要求:
⑴ 由主函数获取用户输入的算式并进行分解,确定操作数和操作符
⑵ 完成基本运算(+-×÷%)函数
⑶ 完成复杂运算(sin,cos,tag)函数
1.2 主要任务
本人主要负责由主函数获取用户输入的算式并进行分解,确定操作数和操作符;
以及整个程序的容错性和兼容性等问题。
2 解决问题的主要思路和方法
2.1 关键问题
在同时输入三角函数与数字是发现不兼容;判断运算式子是否含三角函数;
2.2 拟采用解决问题的方法
在查阅书籍后,才记得输入字符串遇到回车、空格、制表符是才结束。
2.3 主要算法和处理流程图
- 2 -
东莞理工学院课程设计
开始
输入 含三角函数 y/n?
N
Judge1=n?
Y
输入表达式
提示“输入错误
请再次输入”
N
Judge1=y?
Y
输出操作符与操作数
输入表达式
输出操作符与操作数
Y
Continue?
N
结束
3 程序实现
3.1 程序实现时应考虑的问题
- 3 -
东莞理工学院课程设计
此程序较简单,在实现程序是主要防止用户的输入错误,以及程序本身的
格式细节,子函数在传递过程中的问题。
3.2 主要源代码及说明
源代码(加注释)
(自己编写部分,合并的程序在最后,不过没打印出来,只能在 word 看)
#include
#include
/*这是一个用于简单计算的计算器*/
main()
{
char judge1,judge2;
float data1,data2;
char op;
char t[3];
double w;
int b;
do
{
printf("该运算涉及三角函数吗(y/n)?:\n");
/*判断是否包含三角函 数
do
{
y/n*/
scanf(" %c",&judge1);
if(judge1=='n'||judge1=='N')
{
printf("请输入计算表达式:\n");
scanf("%f %c %f",&data1,&op,&data2);
printf("输入数是%f,%f\n 输入符是%c\n",data1,data2,op);
/*确定操作数与操作符*/
}
{
else if(judge1=='y'||judge1=='Y')
/*包含三角函数的部分*/
printf("请输入三角函数(后加空格或回车)和角度:");
scanf("%s%d",t,&b);
printf("输入的三角函数是:%s\n",t);
/*确定操作数与操作符*/
- 4 -
else
{
*/
printf("输入错误,请再次输入\n");
}
}while(judge1!='y'&&judge1!='Y'&&judge1!='n'&&judge1!='N');
/*判断是否输入错误*/
printf("continue(y/n)?\t");
/*判断用户是否想再次运算程序
东莞理工学院课程设计
printf("角度是:%d\n",b);
}
/*当错误时做出的提醒*/
scanf(" %c",&judge2);
printf("\n");
printf("\n");
}while (judge2=='Y'||judge2=='y');
system("pause");
}
4 测试
4.1 测试结果及分析
各种可能情况的详细运行结果
当输入错误字符时:
输入 Y 时:
- 5 -
东莞理工学院课程设计
输入 N 时:
程序的循环:
当在 continue 后任意输入字符时:
- 6 -
东莞理工学院课程设计
当在 输入三角函数表达式 不加空格、回车符或制表符时:
(此时按回车键程序没有响应)
当再次输入数据时:
5 小结
5.1 本问题解决方法及程序实现小结
本程序主要运用了条件语句以及循环语句,这也是题目要求的。在实现程
序时不断调试程序,对程序中存在的各种错误进行改正,同时对函数的各部功
能不足的地方进行改善。
5.2 尚未解决的问题及下一步工作思路
本程序的一大缺点就是不能一步就确定操作数与操作符,需要在程序一开始
- 7 -
东莞理工学院课程设计
判断是否含三角函数;第二当输入(continent?)输入错误时,程序不循环,
而是退出。
打算好好利用寒假的时间提升自己的编程能力,使得自己能独立编出一个逻辑
性强的程序。
例如:[1] 严蔚敏. 数据结构. 清华大学. 2004.11
6 参考文献
这是完整的整个程序 (合并的)不打印
#include
#include
#include
#define i 1e-6
#define e 3.1415926
void xiaoquan(float data1,float data2,char op);
void weijia(double d,char t[]);
/*这是一个用于简单计算的计算器*/
main()
{
char judge1,judge2;
float data1,data2;
char op;
char t[3];
double d,a,b,c;
do
{
do
{
printf("该运算涉及三角函数吗(y/n)?:\n");
scanf(" %c",&judge1);
if(judge1=='n'||judge1=='N')
{
printf("请输入计算表达式:\n");
- 8 -
/*判断是否包含三角函数 y/n*/