c语言课程设计报告++计算器的实现(内含完整报告-流程图-截屏-总结等)

合集下载

C语言课程设计报告书____简易计算器[1]

C语言课程设计报告书____简易计算器[1]

C语言课程设计报告书课程名称:C语言课程设计课题名称:简易计算器班级:学号:姓名:指导老师:成绩:2008年6月欢迎老师指导一、课程设计目的1.通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。

特别是作为本科生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材。

通过这次课程设计,进一步巩固所学的语句,如语句嵌套等;加深对循环,分支等结构的运用;最后还可以熟悉四则运算﹑三角函数等经典算法。

2.通过此次课程设计扩展自己的知识面,课本上的东西是远远不够的,可以通过去图书馆查资料,上网找资料等手段学到一些新知识,比如画图函数,颜色填充函数等。

3.通过课程设计,加深对结构化程序设计思想的理解,能进行一个系统功能需求分析,并设计合理的模块化结构。

提高程序开发能力。

二、设计内容我设计的是一款简易计算器,界面清楚,操作方便,它能实现以下功能:1.以界面形式给出计算器功能2.简单的四则混合运算(支持小括号、优先级)3.弦、余弦函数计算4.指数、对数的运算三、总体设计简单计算器由五大模块组成,模块设计如下:图1 模块调用图1.主函数 void main()功能:调用各个主要模块,实现简单计算器的整体功能。

2.主界面函数void JieMian()功能:使用有关图形函数模拟出可视化的计算器外观界面,并提供用户输入窗口。

3.四则混合运算函数void SiZeHunHeYunSuan()功能:实现简单的加减乘除混合运算,并支持优先级和带括号的运算。

4.三角运算函数void SanJiaoYunSuan()功能:实现基本的三角函数运算:sin(x)和cos(x)。

5.指对数函数void ZhiDuiShuYunSuan()功能:实现基本的指数和对数运算。

四、详细设计(一)数据结构设计1.用initgraph函数初始化图形界面,用outtextxy函数在图形模式下显示需输出内容,用setcolor和setbkcolor函数设置边框颜色和填充颜色,用circle 和rectangle函数来画计算器界面的按键,用gotoxy将数字送入显示区。

C课程设计简易计算器实验报告

C课程设计简易计算器实验报告

《程序设计基础》(C++)课程设计报告计算器姓名:班级:学号:指导教师:成绩:完成时间:完成地点:计算器1 基本功能描述计算器包含基本的四则运算、开方、倒数、相反数(正负)等运算。

可对输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算。

同时包含清除功能。

2 设计思路如图1是计算器总流程图,输完第一个操作数后,若点击双目运算符,则把m_edit 传递给op1,并传递给变量calculator相对运算符对应的值,输入的第二个操作数传递给op2,点击等号根据calculator的值进行相应运算并输出结果。

若点击的是单目运算符,则直接对其处理得出结果。

若点击清零,则m_edit等于0。

设计思路流程图如下(见下页)。

图1 计算器设计思路总流程图3 软件设计创建步骤打开Microsoft Visual C++ ,选择新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名Calculator及其所在位置。

将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成。

MFC AppWizard建立基于对话窗口的程序框架。

界面设计1、创建控件在对话框上的合适的位置画出编辑框和下压式按钮。

如图2所示。

图2 绘制编辑框在按钮和编辑框属性对话框中输入控件的ID值和标题属性。

如图3所示。

图3 Push Button属性按照上面的操作过程编辑其他按钮和编辑框等对象的属性。

表1 各对象属性对象ID 标题或说明编辑框IDC_EDIT1 结果显示按钮IDC_BUTTON0 0按钮IDC_BUTTON1 1按钮IDC_BUTTON2 2按钮IDC_BUTTON3 3按钮IDC_BUTTON4 4按钮IDC_BUTTON5 5按钮IDC_BUTTON6 6按钮IDC_BUTTON7 7按钮IDC_BUTTON8 8按钮IDC_BUTTON9 9按钮IDC_ BUTTONneg +/-按钮IDC_ BUTTONpot .按钮IDC_ BUTTONadd +按钮IDC_BUTTONsub -按钮IDC_BUTTONmul *按钮IDC_BUTTONdiv /按钮IDC_BUTTONsqrt sqrt按钮IDC_BUTTONCE CE完成后界面如图4所示。

c课程设计计算器报告

c课程设计计算器报告

c 课程设计计算器报告一、教学目标本课程的教学目标是使学生掌握C语言的基本语法,熟练使用C语言进行程序设计。

具体分为三个部分:1.知识目标:学生需要掌握C语言的基本语法,包括数据类型、运算符、控制结构、函数等。

2.技能目标:学生能够使用C语言编写简单的程序,解决实际问题。

3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力。

二、教学内容教学内容主要包括C语言的基本语法和程序设计的基本方法。

具体安排如下:1.第一章:C语言概述,介绍C语言的历史和发展,理解C语言的特点。

2.第二章:数据类型和运算符,学习C语言的基本数据类型和运算符。

3.第三章:控制结构,学习C语言的条件语句和循环语句。

4.第四章:函数,学习C语言的函数定义和调用。

5.第五章:数组和字符串,学习C语言的数组和字符串操作。

6.第六章:指针,学习C语言的指针概念和应用。

7.第七章:结构体和文件,学习C语言的结构体和文件操作。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法:1.讲授法:讲解C语言的基本语法和概念。

2.案例分析法:通过分析实际案例,让学生理解C语言的应用。

3.实验法:安排实验课程,让学生动手编写C语言程序。

四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C程序设计语言》2.参考书:《C Primer Plus》、《C和指针》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、编程环境五、教学评估本课程的评估方式包括平时表现、作业、考试等。

具体安排如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、小组讨论等。

2.作业:占课程总评的30%,包括课后练习、编程任务等。

3.考试:占课程总评的40%,包括期中考试和期末考试。

评估方式要求客观、公正,能够全面反映学生的学习成果。

我们将根据学生的实际情况,及时给予反馈,帮助学生提高。

六、教学安排本课程的教学进度安排如下:1.每周一次课,每次课2小时。

C语言课程设计报告【简易计算器设计】

C语言课程设计报告【简易计算器设计】
附源程序清单:
1Calc.h(运算函数集头文件)
#include<stdio.h>
#include<string>
#include<string.h>
#define HIGH struct high
#define MAXN 5000
#define MAXSHOW 40
#define key_num 0
}
void initNum(HIGH *numb) //初始化
{
int i;
HIGH tmp;
memset(tmp.num, 0, sizeof(tmp.num));
*numb = tmp;
}
int absCmp(HIGH a, HIGH b) //比较绝对值大小
{
int i;
for(i = MAXN - 1; i > 0; i--)
5对于高精度,采用结构体struct high{int num[MAXN];};的形式,数组的一个元素存一位。个位为num[1],将符号存在num[0]之中。
1对于高精度加法,先判断两个数符号,如果为异号,则进行高精度减法,否则将各位逐个相加,然后逐位进位,返回答案即可。
2对于高精度减法,先判断两个数符号,如果为异号,则进行高精度加法,否则用大数减小数,逐个相减,然后逐位退位,判断符号、返回答案即可。
2输入数字,再输入运算符,输入等于号的结果为“当前输入的数字→运算符→当前输入的数字”。可以调节正负号。
3输入“数字,运算符,数字,运算符...数字,运算符”亦可。
七、心得体会
这次“简单计算器制作”的课程设计不仅让我对C语言的熟悉程度上升到了另一个高度,而且在一定意义上对面向对象设计的理解更加深刻了。是我在编程路途上的一次质的飞跃。而且在处理非常规数据类型的运算的锻炼下,使我对编程语言有了一个新的认识。当看着一个具有图形界面的计算器的模型成品出现在自己面前时,心中有着无限感慨,原来编程也不是非常遥不可及的,原来在编程的趣味性中能让我学到更多有意思的知识。

C语言课程设计--计算器(图形界面)

C语言课程设计--计算器(图形界面)

C语言课程设计--计算器(图形界面)扬州大学C语言课程设计报告题目一个简易计算器的设计与实现班级学号姓名指导教师成绩老师评语:第 2 页共 14 页第 3 页共 14 页一、系统调试…………………………………………8,9,10,11二、课程设计体会总结………………………………8,9,10,111 课程设计目的(1).课程设计是一项综合性实践环节,是对平时实验的一个补充,课程设计内容包括课程的主要理论知识,但由于C语言对初学者较难掌握,因而对一个完整的C语言程序不适合平时实验。

通过课程设计可以达到综合设计C语言程序的目的。

(2)通过本课程设计,可以培养独立思考,综合运用所学有关相应知识的能力,能更好地使用C语言的知识,更好地了解C语言的好处和其可用性!掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级程序设计能力。

为后续各门计算机课程的学习和毕业设计打下坚实基础!(3)通过本程序训练程序设计的基本技能,掌握字符串的表示方法和字符串函数的功能、自学掌握四则运算的算法及WIN-TC的图形操作的基本知识、键盘上特殊键的获取及图形方式下光标的显示。

2 课程设计内容目的:本课程的课程设计要求学生模拟实现一个简单计算器,要求(1)能够实现四则运算,并能支持优先级运算。

(2)三角与反三角运算:如sinx,cosx等。

(3)指数对数运算:如log(x),lnx,e的x次方等。

(4)其他运算:如X!,x 的累加等。

(4)不允许调用库函数,使用自行开发的程序实现常用函数运算。

(5)进一步考虑计算器外观设计,用可视化界面给出计算器外观、功能按键及输入界面。

使用说明:执行加法运算,'—'表示执行减法运算,表示执行乘法运算,'/'表第 4 页共 14 页示除法运算.‘Q’表示退出计算器‘C’表示清零,’=’表示得出结果'^'表示执行x的y次方,'e'表示执行e的x次方操作,'&'表示执行累加操作.,你可以可以用键盘上的上下左右键对光标进行移动,当光标移动到计算器按键上时,按ENTER即可执行该键的操作!最后按“=”则可得出结果。

c语言程序设计课程计算器设计报告

c语言程序设计课程计算器设计报告

课程设计实验报告题目 C/C++语言程序设计所在院系信息学院专业计算机科学与技术班级 12级计科班学生指导教师2014年9月24 日程序设计流程图:源代码:#include <stdio.h>#include<math.h> #include <stdlib.h>void fun1(){printf("\t\t\t*****************************\n");printf("\t\t\t$ 欢迎使用计算器 $\n");printf("\t\t\t$ $\n");printf("\t\t\t$ 1.加法 $\n");printf("\t\t\t$ 2.减法 $\n");printf("\t\t\t$ 3.乘法 $\n");printf("\t\t\t$ 4.除法 $\n");printf("\t\t\t$ 5.乘方 $\n");printf("\t\t\t$ 6.开方 $\n");printf("\t\t\t$ 7.八进制转换 $\n");printf("\t\t\t$ 8.十六进制转换 $\n");printf("\t\t\t$ 9.退出 $\n");printf("\t\t\t$ $\n");printf("\t\t\t*****************************\n");}void fun2(float x,float y,int c){float z;int n,i;switch(c){case 1: z=x+y;printf("结果:%g+%g=%g\n",x,y,z);break; case 2: z=x-y;printf("结果:%g-%g=%g\n",x,y,z);break; case 3: z=x*y;printf("结果:%g*%g=%g\n",x,y,z);break; case 4: if(y==0)printf("错误!");else{z=x/y;printf("结果:%g/%g=%g\n",x,y,z);}break; case 5: n=x;for(i=1;i<y;i++){x=x*n;}printf("结果:%g\n",x);break;default:printf("请重新输入!");}}void fun3(float x,int c){float z;switch(c){case 6:if(x<0)printf("错误!");else{z=sqrt(x);printf("结果:%g\n",z);}break;default:printf("请重新输入!");}}void convert(int m,int c){char s[128];switch(c){case 7:printf("结果:%o\n",m);break;case 8:printf("结果:%x\n",m);break;default:printf("请重新输入!");}}void main(){for(;;){float x,y,z;int c,m;char h;fun1();printf("请选择运算:\n");printf("1\n2\n3\n4\n5\n6\n7\n8\n9\n"); printf("请输入运算方式前面的数字:\n");scanf("%d",&c);if(c==1||c==2||c==3||c==4||c==5){printf("输入两个数:");scanf("%f%f",&x,&y);fun2(x,y,c);}if(c==6){printf("输入一个数:");scanf("%f",&x);if(x<0)printf("错误!");elsefun3(x,c);}if(c==7||c==8){printf("输入一个数:");scanf("%d",&m);convert(m,c);}if(c==9){printf("<<<<<<<<<谢谢使用!>>>>>>>>>\n");} if(c>='a' && c<='z')printf("没有这个选择!\n");if(c>='A' && c<='Z')printf("没有这个选择!\n");}}。

软件基础课程设计报告-C语言(MFC)计算器设计

软件基础课程设计报告-C语言(MFC)计算器设计

软件基础课程设计报告一、需求分析系统目标:设计的计算器至少能够进行简单的四则运算和求倒数求反以及开方运算。

主体功能:程序能实现:加,减,乘,除,开方,倒数等运算功能;还要实现数据的输入,输出,计算,显示及程序退出等功能。

另外还可以实现多种科学计算的功能,如:三角函数的计算,弧度与角度间的转换,对数指数的计算等。

开发环境:操作系统:Windows XP编程环境:Microsoft Visual C++ 6.0二、功能说明(1)包含的功能有:加、减、乘、除运算,开方、求倒数、三角函数、弧度与角度间的转换、对数指数的计算等功能。

(2)计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。

(3)给对话框添加菜单。

(4)计算功能基本上是用系统内部函数。

(5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。

(6)“CE”按钮可以清除所有已输入的数据从头计算,“Back”按钮可以实现退位功能。

(7)能够显示时间、日期。

三、详细设计(2)编辑资源(3)效果图四、程序附录计算器Dlg.cpp :#include "stdafx.h"#include "计算器.h"#include "计算器Dlg.h"#include "math.h"#include"FirstDlg.h"#include <windows.h>#define PI 3.14;#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog{public:CAboutDlg();// Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };//}}AFX_DATAprotected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL// Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)// No message handlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CMyDlg dialogCMyDlg::CMyDlg(CWnd* pParent /*=NULL*/): CDialog(CMyDlg::IDD, pParent){//{{AFX_DATA_INIT(CMyDlg)m_result = 0.0;//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CMyDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CMyDlg)DDX_Control(pDX, IDC_EDIT1, m_EDIT);DDX_Text(pDX, IDC_EDIT1, m_result);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CMyDlg, CDialog)//{{AFX_MSG_MAP(CMyDlg)ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_NUM0, OnNum0)ON_BN_CLICKED(IDC_NUM1, OnNum1)ON_BN_CLICKED(IDC_NUM2, OnNum2)ON_BN_CLICKED(IDC_NUM3, OnNum3)ON_BN_CLICKED(IDC_NUM4, OnNum4)ON_BN_CLICKED(IDC_NUM5, OnNum5)ON_BN_CLICKED(IDC_NUM6, OnNum6)ON_BN_CLICKED(IDC_NUM7, OnNum7)ON_BN_CLICKED(IDC_NUM8, OnNum8)ON_BN_CLICKED(IDC_NUM9, OnNum9)ON_BN_CLICKED(IDC_DOT, OnDot)ON_BN_CLICKED(IDC_CE, OnCe)ON_BN_CLICKED(IDC_jia, Onjia)ON_BN_CLICKED(IDC_jian, Onjian)ON_BN_CLICKED(IDC_cheng, Oncheng)ON_BN_CLICKED(IDC_chu, Onchu)ON_BN_CLICKED(IDC_dengyu, Ondengyu)ON_BN_CLICKED(IDC_daoshu, Ondaoshu)ON_BN_CLICKED(IDC_zhengfu, Onzhengfu)ON_BN_CLICKED(IDC_BACKSPACE, OnBackspace) ON_BN_CLICKED(IDC_Ln, OnLn)ON_BN_CLICKED(IDC_log, Onlog)ON_BN_CLICKED(IDC_RADIO2, OnRadio2)ON_BN_CLICKED(IDC_RADIO1, OnRadio1)ON_BN_CLICKED(IDC_sqrt, Onsqrt)ON_BN_CLICKED(IDC_sin, Onsin)ON_BN_CLICKED(IDC_cos, Oncos)ON_BN_CLICKED(IDC_tan, Ontan)ON_BN_CLICKED(IDC_pingfang, Onpingfang)ON_BN_CLICKED(IDC_lifang, Onlifang)ON_BN_CLICKED(IDC_mi, Onmi)ON_BN_CLICKED(IDC_Exp, OnExp)ON_BN_CLICKED(IDC_10demi, On10demi)ON_BN_CLICKED(IDC_jiecheng, Onjiecheng)ON_COMMAND(ID_TIME, OnTime)ON_COMMAND(ID_DATE, OnDate)ON_COMMAND(ID_EXIT, OnExit)ON_COMMAND(ID_HELP, OnHelp)//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CMyDlg message handlersBOOL CMyDlg::OnInitDialog(){CDialog::OnInitDialog();ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon// TODO: Add extra initialization hereCheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1);UpdateData(FALSE);quan2=1;dotflag=0;numflag=0;return TRUE; // return TRUE unless you set the focus to a control}void CMyDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// If you add a minimize button to your dialog, you will need the code below// to draw the icon. For MFC applications using the document/view model,// this is automatically done for you by the framework.void CMyDlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}}// The system calls this to obtain the cursor to display while the user drags // the minimized window.HCURSOR CMyDlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}void CMyDlg::OnNum0(){UpdateData();if(dotflag){quan2*=10;m_result+=0/(double)quan2;}else{if(numflag){m_result=m_result*10+0;}else m_result=0;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum1(){UpdateData();if(dotflag){quan2*=10;m_result+=1/(double)quan2;}if(numflag){m_result=m_result*10+1;}else m_result=1;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum2(){UpdateData();if(dotflag){quan2*=10;m_result+=2/(double)quan2;}else{if(numflag){m_result=m_result*10+2;}else m_result=2;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum3(){UpdateData();if(dotflag){quan2*=10;m_result+=3/(double)quan2;}else{if(numflag){m_result=m_result*10+3;}else m_result=3;}numflag=1;UpdateData(FALSE);{UpdateData();if(dotflag){quan2*=10;m_result+=4/(double)quan2;}else{if(numflag){m_result=m_result*10+4;}else m_result=4;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum5(){UpdateData();if(dotflag){quan2*=10;m_result+=5/(double)quan2;}else{if(numflag){m_result=m_result*10+5;}else m_result=5;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum6(){UpdateData();if(dotflag){quan2*=10;m_result+=6/(double)quan2;}else{m_result=m_result*10+6;}else m_result=6;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum7(){UpdateData();if(dotflag){quan2*=10;m_result+=7/(double)quan2;}else{if(numflag){m_result=m_result*10+7;}else m_result=7;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum8(){UpdateData();if(dotflag){quan2*=10;m_result+=8/(double)quan2;}else{if(numflag){m_result=m_result*10+8;}else m_result=8;}numflag=1;UpdateData(FALSE);}UpdateData();if(dotflag){quan2*=10;m_result+=9/(double)quan2;}else{if(numflag){m_result=m_result*10+9;}else m_result=9;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnDot(){UpdateData();dotflag=1;m_result+=0.0;UpdateData(FALSE);}void CMyDlg::OnCe(){UpdateData();m_EDIT.SetSel(0,-1);m_EDIT.ReplaceSel("");m_result=0;num1=0;num2=0;numflag=0;dotflag=0;quan2=1;UpdateData(FALSE);}void CMyDlg::Onjia(){UpdateData();num1=m_result;cal='+';numflag=0;dotflag=0;quan2=1;}UpdateData();num1=m_result;cal='-';numflag=0;dotflag=0;quan2=1;}void CMyDlg::Oncheng(){UpdateData();num1=m_result;cal='*';numflag=0;dotflag=0;quan2=1;}void CMyDlg::Onchu(){UpdateData();num1=m_result;cal='/';numflag=0;dotflag=0;quan2=1;}void CMyDlg::Ondengyu(){UpdateData();num2=m_result;switch(cal){case'+':m_result=num1+num2;break; case'-':m_result=num1-num2;break; case'*':m_result=num1*num2;break; case'/':m_result=num1/num2;break;case'x':m_result=pow(num1,num2);break; }numflag=0;dotflag=0;quan2=1;UpdateData(FALSE);}void CMyDlg::Ondaoshu(){UpdateData();m_result=1/m_result;numflag=0;UpdateData(FALSE);}void CMyDlg::Onzhengfu(){UpdateData();m_result=0-m_result;UpdateData(FALSE);}void CMyDlg::OnBackspace(){UpdateData();static int dotquan=quan2;long temp;if(dotflag&&numflag){if(dotquan>=10){temp=(long)(m_result*dotquan);m_result=(double)(temp/10);dotquan/=10;m_result=m_result/dotquan;}}else{//UpdateData();if(numflag&&m_result){m_result=(long)m_result/10;}}UpdateData(FALSE);}void CMyDlg::OnLn(){UpdateData();m_result=log(m_result);numflag=0;dotflag=0;quan2=1;UpdateData(FALSE);}void CMyDlg::Onlog(){UpdateData();m_result=log(m_result)/log(10);quan2=1;UpdateData(FALSE);}void CMyDlg::OnRadio2(){m_IsDegree=1;i=1;UpdateData(TRUE);}void CMyDlg::OnRadio1(){m_IsDegree=0;i=(2*3.1415926)/360;UpdateData(FALSE);}void CMyDlg::Onsqrt(){UpdateData();if(m_result<0){MessageBox("输入无效!");return;}m_result = sqrt(m_result); UpdateData(FALSE);}void CMyDlg::Onsin(){m_result=sin(m_result*i); UpdateData(FALSE);}void CMyDlg::Oncos(){m_result=cos(m_result*i); UpdateData(FALSE);}void CMyDlg::Ontan(){m_result=tan(m_result*i); UpdateData(FALSE);}void CMyDlg::Onpingfang() {UpdateData();m_result=m_result*m_result; UpdateData(FALSE);void CMyDlg::Onlifang(){UpdateData();m_result=m_result*m_result*m_result; UpdateData(FALSE);}void CMyDlg::Onmi(){UpdateData();num1=m_result;cal='x';numflag=0;dotflag=0;quan2=1;}void CMyDlg::OnExp(){m_result=exp(m_result); UpdateData(FALSE);}void CMyDlg::On10demi(){UpdateData();m_result=pow(10,m_result); UpdateData(FALSE);}void CMyDlg::Onjiecheng(){if(m_result<0){MessageBox("输入数据无效!");return;}int q;for(q=(int)m_result-1;q>=1;q--)m_result*=q;UpdateData(FALSE);}void CMyDlg::OnDate(){CFirstDlg dlg;dlg.DoModal();}void CMyDlg::OnTime(){UpdateData();TIME=1;tNow=CTime::GetCurrentTime();if(TIME){m_EDIT.SetSel(0,-1);m_EDIT.ReplaceSel("");CString sNow=tNow.Format("%I:%M:%S");m_EDIT.SetSel(0,-1);m_EDIT.ReplaceSel(sNow);}else{CString sNow=tNow.Format("%I:%M:%S");m_EDIT.SetSel(0,-1);m_EDIT.ReplaceSel(sNow);}}void CMyDlg::OnExit(){OnOK();}void CMyDlg::OnHelp(){MessageBox("班级:09通信一班组员:陈熙竹叶文晖周方"); }。

c简单计算器课程设计报告

c简单计算器课程设计报告

c 简单计算器 课程设计报告一、课程目标知识目标:1. 让学生掌握简单计算器的基本功能,包括加、减、乘、除等四则运算。

2. 使学生理解计算器操作规则,如先算乘除后算加减、括号的作用等。

3. 帮助学生掌握计算器上的其他功能键,如清除、取反、百分比等。

技能目标:1. 培养学生运用计算器进行四则运算的能力,提高计算速度和准确性。

2. 培养学生运用计算器解决实际问题的能力,如购物找零、计算面积等。

3. 培养学生通过观察、思考、提问等方式,发现计算器使用过程中的问题,并尝试解决。

情感态度价值观目标:1. 培养学生对待计算器等电子设备的正确态度,爱护设备,遵守使用规范。

2. 培养学生在合作学习中互相帮助、共同进步的精神,增强团队意识。

3. 通过计算器教学,激发学生对数学学科的兴趣,提高学生的自信心和自主学习能力。

本课程针对年级学生的特点,注重培养学生的学习兴趣和实践能力。

课程性质为实践操作类,强调学生在动手实践中掌握知识。

在教学过程中,教师需关注学生的学习需求,及时调整教学策略,确保学生能够达到课程目标。

课程目标分解为具体学习成果,以便于后续教学设计和评估。

在教学结束后,学生应能独立使用计算器完成四则运算,解决实际问题,并在学习过程中培养良好的情感态度和价值观。

二、教学内容1. 计算器基本结构认知:让学生了解计算器各部分名称及其功能,如数字键、运算符号键、等于键、清除键等。

2. 四则运算操作方法:教学加、减、乘、除四则运算的计算器操作方法,以及运算顺序和括号的使用。

- 加法和减法运算- 乘法和除法运算- 混合运算及括号应用3. 计算器其他功能键使用:介绍取反、百分比、开方等特殊功能键的操作方法。

4. 实践应用:设计实际应用场景,让学生运用计算器解决购物找零、计算面积、计算速度等问题。

- 购物找零问题- 长度、面积、体积计算- 速度、时间、路程计算教学内容参考教材相关章节,结合课程目标进行整合。

教学大纲安排如下:第一课时:计算器基本结构认知、四则运算操作方法(加法和减法运算)第二课时:四则运算操作方法(乘法和除法运算)第三课时:四则运算操作方法(混合运算及括号应用)第四课时:计算器其他功能键使用第五课时:实践应用(购物找零问题)第六课时:实践应用(长度、面积、体积计算)第七课时:实践应用(速度、时间、路程计算)教学内容注重科学性和系统性,确保学生能够循序渐进地掌握计算器的使用方法,并在实际应用中巩固所学知识。

简单计算器C语言课程设计报告书

简单计算器C语言课程设计报告书

C语言课程设计报告书题目:简单计算器院系:班级:1.2.3.4.5.2.1功能概述:该软件为用户提供一个在windows系统上运行的简单计算器,能进行简单的加、减、乘、除四则运算和一些常用特殊运算,包括余弦运算、正弦运算、正切运算、绝对值、平方根运算、以e为底的指数运算、以10为底的对数运算。

2.2【总体设计】2.2.1系统模块机构框图2.2.3系统流程图2.2.42.3实现各2.3.1算类型的数字代码,并进入相应的功能执行程序,显示相应界面。

(2)数学计算模块中,根据用户选择的运算类型和运算符号,自动调用相应的函数,运行相关程序,进行计算,并显示结果。

(3)退出程序模块。

根据用户的需要,选择是否退出程序。

2.3.2系统头文件#include<stdio.h>/*I/Q函数*/#include<math.h>/*数学函数的定义*/#include<conio.h>/*屏幕操作函数*/#include<stdlib.h>/*库函数*/2.3.3函数声明(1)主函数main()处理:{printf("简单计算器\n");printf("******************************\n");printf("请输入要进行的运算\n");printf("------------------------------\n");printf("1四则运算\n");printf("2特殊运算\n");printf("3退出程序\n");h=getche();switch(h)/*判断用户想要进行的操作*/{}(2)自定义函数size()功能:进行简单的加、减、乘、除四则运算输入:用户输入要计算的数字和运算符号(+、-、*、/)处理:根据用户输入的运算符号,跳转到相关运算函数,并调用输出:运算结果和是否需要继续运算(y/n)程序清单(b)intsize()/*定义四则(size)运算函数*/{intn,m;intc;{c=m+n;printf("\n\n\t结果是%d\n",c);printf("\n");break;case'-':/*减法运算*/c=m-n;printf("\n\n\t结果是%d\n",c);printf("\n");break;case'*':/*乘法运算*/l=getche();/*得到输入的值*/printf("\n");if(l=='y')/*如果得到的是y,则重复运算步骤,达到无限运算的作用*/ {printf("\n请输入下一个要计算的数并按Enter结束:");scanf("%d",&n);printf("\n请选择运算符号[\t+\t-\t*\t/\t]:");l=getche();switch(l){printf("\n");break;case'/':/*除法运算*/c=c/n;printf("\n\n\t结果是%d\n",c);printf("\n");break;}}else}}(33输出:运算结果和是否需要继续运算(y/n)程序清单(c)doubleteshu()/*定义(teshu)特殊运算函数*/{doubley;intn,m;charp;printf("---------请选择特殊运算类型---------");printf("1余弦2正弦3正切4绝对值\n");printf("5平方根6以e为底的指数7以10为底的对数\n");docase'2':y=sin(m);/*正弦函数*/printf("\n\n\t结果是:%f\n",y);printf("\n");break;case'3':y=tan(m);/*正切函数*/printf("\n\n\t结果是:%f\n",y);printf("\n");break;printf("\n");break;case'7':y=log10(m);/*底数为10的对数函数*/ printf("\n\n\t结果是:%f\n",y);printf("\n");break;}printf("\n是否继续?y/n");p=getche();}2.4系统主界面其他功能截图等……2.5【设计总结】本报告对简单计算器系统的分析、设计、实现的完整过程进行了介绍。

C语言设计实验--算术计算器的实现

C语言设计实验--算术计算器的实现

C语言课程设计报告题目:算术计算器的实现专业:班级:学号:姓名:指导教师:成绩:设计日期:目录一、选题背景 (1)二、设计思路 (1)三、主要问题解决方法及关键技术 (2)四、程序流程图: (2)五、源程序清单 (3)六、程序运行结果 (5)七、设计总结 (5)八、教师评语: (6)C语言课程设计一、选题背景:随着我们大一的学习生活接近尾声,我们C语言课程的学习已经取得了很大的进步。

为了检验本学期C语言的学习成果,我们进行了C 语言课程设计。

在42个题目中我选择了“算术计算器的实现”。

二、设计思路:由于这是简易的算术计算器,四则运算是分开进行计算的,比较简单,所以我简单的运用选择关系对他们进行编译。

如:printf("* 1.加法*\n");printf("* 2.减法*\n");printf("* 3.乘法*\n");printf("* 4.除法*\n");这样只需在进行运算前输入数字就可以对将要进行的运算进行选择。

同时使用循环语句while(1){ displaymenu();int a=0;scanf("%d",&a);switch(a)这样进行完一次运算后就可以进行循环,循环到运算前的初始状态,可以输入选择数字进行第二次运算。

算术计算器的实现三、主要问题解决方法及关键技术:对于如何将四种运算分开而不混淆,我将他们编译成选择关系,如需要进行加法运算的时候,先输入数字1,再出入Enter进行选择;减法则输入2进行选择,乘法输入3进行选择,除法输入4进行选择。

四、程序流程图:C语言课程设计五、源程序清单:#include<stdio.h>void displaymenu() //这个函数应该放在main函数外面进行定义{ printf("\n\n*****************************\n");printf("* 1.加法*\n");printf("* 2.减法*\n");printf("* 3.乘法*\n");printf("* 4.除法*\n");printf("*****************************\n");printf("选择运算类型<1,2,3,4>?\n");}void main(){ while(1) //实现循环的执行{ displaymenu();int a=0;scanf("%d",&a);switch(a){ case 1:{int i=0,j=0,add=0,sum=0;scanf("%d%d",&i,&j);sum=i+j;printf("add=%d\n",sum);算术计算器的实现};break;case 2:{int i=0,j=0,sub=0;scanf("%d%d",&i,&j);sub=i-j;printf("sub=%d\n",sub);};break;case 3:{int i=0,j=0,multi=0;scanf("%d%d",&i,&j);multi=i*j;printf("multi=%d\n",multi);};break;case 4:{int i=0,j=0;float divide=0;scanf("%d%d",&i,&j);divide=i/j;if(j=0)printf("erro\n");elseprintf("divide=%lf\n",divide);C语言课程设计};break;}}}六、程序运行结果:七、设计总结:算术计算器的实现通过这次C语言课程设计,我不仅会用VC编译简易的算术计算器,还使我对C语言的运行环境和C语言的语法有了更深刻的了解和认识。

c语言简易计算器报告

c语言简易计算器报告

C语言简易计算器报告介绍本文将介绍如何使用C语言编写一个简易的计算器。

计算器可以进行基本的四则运算,包括加法、减法、乘法和除法。

设计思路1.首先,我们需要定义计算器的操作符和操作数。

操作符可以是+, -, *,/,操作数是两个整数或浮点数。

2.接下来,我们需要编写一个函数来接收用户输入的操作符和操作数,并进行相应的计算。

我们可以将这个函数命名为calculate。

3.在calculate函数中,我们根据用户输入的操作符,执行相应的计算操作,并返回计算结果。

如果用户输入的操作符不合法,我们将返回一个错误提示。

4.最后,我们在主函数中调用calculate函数,并显示计算结果。

代码实现下面是实现一个简易计算器的C语言代码:#include <stdio.h>float calculate(char operator, float operand1, float operand2) { float result;switch (operator) {case'+':result = operand1 + operand2;break;case'-':result = operand1 - operand2;break;case'*':result = operand1 * operand2;break;case'/':if (operand2 != 0) {result = operand1 / operand2;}else {printf("错误:除数不能为0\n");return-1; // 返回错误代码}break;default:printf("错误:无效的操作符\n");return-1; // 返回错误代码}return result;}int main() {char operator;float operand1, operand2;float result;printf("请输入操作符和操作数(格式为:操作数1 操作符操作数2):");scanf("%f %c %f", &operand1, &operator, &operand2);result = calculate(operator, operand1, operand2);if (result != -1) {printf("计算结果为:%f\n", result);}return0;}使用说明1.用户需要按照指定格式输入操作数和操作符,例如:2 + 3。

C语言毕业课程设计报告-计算器

C语言毕业课程设计报告-计算器

C语言课程设计报告——计算器题目:设计一个计算器的程序,功能上尽量模仿windows内的计算器目录一、需求分析 (1)二、设计思路 (1)三、详细设计 (2)1、主要函数 (2)2、函数的主要调用关系图 (3)四、调试分析及编程心得体会 (3)五、用户手册 (3)六、测试结果 (3)七、源程序代码 (4)1、 cal.c 主控文件 (4)2、mouse.h 鼠标程序头文件 (5)一、需求分析1、演示程序中,对数据进行四则运算。

2、由于人们长期在window下工作,程序最好要键盘和鼠标都可以用。

界面要适应人们的习惯。

3、程序执行的命令包括:1)、乘法;2)、除法3)、加法4)、减法5)、自然对数6)、结束。

4、测试数据:(以加法为例)(1)、‘0’+‘0’应输出“0”。

(2)、‘80’-‘30’应输出“50.”。

(3)、’2’* ‘35’应输出“0”.(4)、’2’/ ‘1’应输出“2.”.(5)’1’‘exp’;应输出“2.”。

二、设计思路我们首先要考虑的是如何记录用户的输入信号,识别信号,按照信号的处理要求的不同进行不同的操作,因此我们可以考虑用两个字符串不停地来记录数据,但检测到用户按等号的时候,再转换成数字来处理,结合到鼠标的应用,从鼠标左键的输入信号和键盘有着同样的。

再用显示界面函数来显示计算器的外观。

本程序包含两个模块:1)主程序模块:void main() //cal.c{各种宏定义;欢迎界面;图像的初始化;do{接受键盘和鼠标输入的命令;处理命令;}while(“命令”=“结束”)}2)鼠标调用的界面模块//mouse.h各模块之间的调用关系如下:三、详细设计1、主要函数(1)、主控模块main.cvoid initialmouse(void); /*初始化鼠标函数*/double char_to_float(char *p); /*字符转换成浮点数*/void welcome(); /*欢迎界面*/(2)、鼠标头文件mouse.cvoid mouse(); //接受鼠标的按键信息int rmouse(void) //初始化鼠标图像图标,并且返回是否成功的信息showmouse() //利用不断复制和粘贴图像的方法来动态显示鼠标光标hidemouse() //关闭光标getmousecoods() //得到鼠标当前的信息void movemouse(int x,int y); //确定鼠标的位置Area(int x0,int y0,int x1,int y1) //设置鼠标移动的位置范围guangbiao(int x,int y) //画出光标2、函数的主要调用关系图四、调试分析及编程心得体会1、刚开始的时候不习惯于结构话编程,没有严格按单元模块结构编写不善于构建子函数来简化和理清楚编程思路,可读性几乎为零!!2、刚开始时在鼠标功能的区域选择的宏定义中花了较大功夫,程序容错性较差。

C语言课程设计-计算器程序设计报告书

C语言课程设计-计算器程序设计报告书

C语言课程设计-计算器程序设计报告书课程设计说明书题目计算器程序设计起讫日期 2006 年 7月 3日至 2006 年 8月 6日所在院系软件学院专业机械+软件班级 04-2 学生姓名学号指导教师2010年 8 月日摘要当今社会是信息社会,科技经济高速发展的社会~为了更方便人们的工作生活和加速人们处理信息的速度,计算器应运而生。

由于它体积小巧,携带方便,价格便宜,构造简单等诸多的优点成为人们生活中的必备品~随着科技的发展计算器的种类变得更多,功能变得更强大,体积变得更小~电脑的出现改变人们的生活习惯,很多事情都可以电脑来完成~电脑的更大一个优点就是可以通过软件的应用无限的延伸电脑功能的外延~下面我们将用我们学习的c 语言编写一个简易的计算器程序~实现简单的初步的计算功能~本程序的编写基础是Tubro C2.0汉化版,它在tubro c的原有基础上实现了多汉字的支持方便了我们的使用。

生成的程序可移植性强兼容性好稳定~现在只实现了加、减、乘、除、求幂、求模,求平方根,求Sin,求Cos,求Log10,以及一个时钟原代码。

这个系统是基于软件发展的生命周期来研制的,它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。

但是,每次只能运算一个表达式。

不能运算多个表达式。

在程序里面在添加一组选择函数即可。

本论文主要介绍了本课题的开发背景,开发的过程和所要完成的功能。

重点的说明了系统设计思想,设计的步骤、难点技术和解决方案。

关键词:C语言 Tubro c 2.0汉化版计算器时钟目录第一章综述…………………………………………………………………1 (1 课题的现实意义………………………………………………………1 11(2 软件环境........................................................................1 1(3 硬件环境 (1)第二章系统设计流程图……………………………………………………2 2(1 系统流程图……………………………………………………………2 (2 主要功能表……………………………………………………………2 2第三章系统分析和设计……………………………………………………3 (1 图形的绘制和输出……………………………………………………3 33(2 文本的输出显示...............................................................3 3(3 计算函数的调用...............................................................4 3(4 程序的运行和退出 (5)第四章系统测试.....................................................................6 4(1 系统测试........................................................................6 4(2 调试..............................................................................6 4(3 错误原因分析一...............................................................6 4(4 错误原因分析二 (6)第五章用户使用说明书……………………………………………………8 5(1 运行Turbo C程序进入计算器界面…………………………………8 5(2 计算器的使用..................................................................9 5(3 退出程序 (9)第六章工作总结 (10)参考文献………………………………………………………………………11 附录: 源代码第一章综述1.1 课题的现实意义现实学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。

C语言计算器设计实验报告

C语言计算器设计实验报告

C语言计算器设计实验报告班级:11661 姓名:学号:38号一、实验目的:利用C语言编写一个简单的计算器,并能正确运行+,-,*,/四则运算。

二、实验内容:1、编写前分析;(1)、根据实验目的,要求键盘录入表达式,并运行后输出结果;由于键盘录入的表达式含数字和运算符,所以要选择用字符串数据类型输入。

(2)、由于输入的是字符串,而只有数值类型的数据才能参与运算,所以得把字符(串)类型的数据转换为数值类型的数据。

(3)、四则运算时,括号优先级高于乘除,乘除优先级高于加减,程序必须能正确判断其优先级才能得出正确的结果。

(4)、为了保证运行结果的精确度需正确选择所用变量的数据类型。

2、利用所学知识进一步分析以上内容;(1)、利用gets函数输入表达式,例如:gets(calc);(2)、C语言中将字符类型数据转化成数值类型数据方法很多,该程序利用函数库stdlib.h中的atof函数来实现这一目的。

同时注意主函数前加上预处理指令:#include<stdlib.h>。

(3)、为了能正确判断优先级,该程序利用函数间的多层嵌套,循环调用来实现;从优先级最高的括号开始判断,若有括号,再判断括号内部,若无括号判断是否为乘除,最后判断加减;括号内内容法方类似。

具体判断方法在后面将以实例详细介绍。

(4)、为了保证输出数据的精确度,该程序中函数f1()-f4()返回值均用double 类型;用g格式符输出最终结果让输出结果简明而又能保证其精确度。

3、开始编程:首先编写必要的预处理指令,声明必要的函数,定义必要的变量。

#include<stdio.h> (输入,输出函数需要该指令);#include<stdlib.h> (atof函数需要该指令);全局声明:Double f1(); (用于存放最终输出结果);Char calc[n]; (用于存放输入的表达式);Int n; (用于标注clac中的各个元素);编写主函数:int main(void){printf("请输入表达式:\n");gets(calc);(输入表达式)printf("原式=%g\n",f1());(程序将调用f1(),并输出f1()的结果)return(0);}由于四则运算先算出优先级最高的结果,并对同一优先级采用从左到右的顺序计算,所以最终的运算是对表达式进行加减运算。

C语言计算器程序设计报告

C语言计算器程序设计报告

C语言集中上机实验报告一、需求分析(1)制作一个计算器,能够计算四则混合运算以及乘方和开方,并显示出正确的结果。

(2)程序能根据运算符的高低进行运算(开放符号置左置右不影响正常运算)(3)可以输入括号二、设计思路(1)运用栈以及结构体来实现,将数字与运算符分别放在结构体与栈里面,将栈以及结构体里的字符数值一一匹配计算,将得出的结果保存到另一个栈里(zhan3)。

(2)开始,对所输入的字符串进行转化,把运算符存放在zhan2里面,把数值存放到data结构体里面,然后进行运算和操作。

(3)运用循环来实现无限输入,用数组nibo来跟踪整个过程,每次运算后将值置空,若检测到空,计算得出结果,退出输入q。

三、流程图四、主程序段#include<stdio.h>#include<math.h>#include<malloc.h>double jisuan(char a[]){int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0;char nibo[50],zhan2[50];//zhan2存放的是运算符double x,n,l,z=0,zhan3[50];//暂存结果typedef struct{double d1;int d2;}dd;typedef struct{dd data[50];int top;}zhan1;zhan1 *shu;shu=(zhan1 *)malloc(sizeof(zhan1));shu->top=0;while(a[i]!='\0'){if(a[i]>='0'&&a[i]<='9'){z=0;j=i+1;while(a[j]>='0'&&a[j]<='9'){j++;}j--;for(k=i;k<=j;k++){z=z*10+a[k]-'0';}j=j+1;//j跳到数字后一位x=z;if(a[j]=='.')//如果是小数的话就把小数和整数一起加上{l=1;i=j+1;j=i+1;while(a[j]>='0'&&a[j]<='9'){j++;}j--;for(k=i;k<=j;k++){n=pow(0.1,l);l=l+1;x=x+n*(a[k]-'0');}i=j+1;}else i=j;shu->data[++shu->top].d1=x;shu->data[shu->top].d2=++cnt;nibo[++t1]='0'+shu->data[shu->top].d2;nibo[t1+1]='\0';}//如果是数字那么就保存到结构体里的dd数组里的第二个成员里else if(a[i]=='('){zhan2[++t2]=a[i];i++;}else if(a[i]==')'){j=t2;while(zhan2[j]!='('){nibo[++t1]=zhan2[j];nibo[t1+1]='\0';j--;}t2=j-1;i++;}else if(a[i]=='+'){while(t2>0&&zhan2[t2]!='('){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}else if(a[i]=='-'){if(a[i-1]=='$'){a[0]='0';i=0;}else if(a[i-1]=='('){a[i-1]='0';a[i-2]='(';i=i-2;t2--;}else{while(t2>0&&zhan2[t2]!='('){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}}else if(a[i]=='*'||a[i]=='/'){while(zhan2[t2]=='*'||zhan2[t2]=='/'||zhan2[t2]=='^'||zhan2[t2]=='#'){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}else if(a[i]=='^'||a[i]=='#'){while(zhan2[t2]=='^'||zhan2[t2]=='#'){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}}//把输出的多项式中的数字字符先转换成数值型存入结构体里,然后把加减乘除等的字符存入到zhan2里--这是转化过程并存储入站//下面就是开始计算结果相当于出站的过程把dd结构体里的数值取出和zhan2的字符来进行运算,当前结果存储到zhan3里,就用nibo数组来判断是否计算完毕while(t2>0){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}j=1;t3=0;while(j<=t1){if(nibo[j]>='0'&&nibo[j]!='^'&&nibo[j]!='#')//{for(i=1;i<=shu->top;i++){if((int)(nibo[j]-'0')==shu->data[i].d2){m=i;break;}}zhan3[++t3]=shu->data[m].d1;}else if(nibo[j]=='+'){zhan3[t3-1]=zhan3[t3-1]+zhan3[t3];t3--;}else if(nibo[j]=='-'){zhan3[t3-1]=zhan3[t3-1]-zhan3[t3];t3--;}else if(nibo[j]=='*'){zhan3[t3-1]=zhan3[t3-1]*zhan3[t3];t3--;}else if(nibo[j]=='/'){zhan3[t3-1]=zhan3[t3-1]/zhan3[t3];t3--;}else if(nibo[j]=='^'){zhan3[t3-1]=pow(zhan3[t3-1],zhan3[t3]);t3--;}else if(nibo[j]=='#'){zhan3[t3]=sqrt(zhan3[t3]);}j++;}return zhan3[t3];}void main()//{for(;;){char x,a[50];double jieguo;int i=0;a[0]='$';printf("#表示开方,^表示乘方(支持负数)\n");printf("请输入表达式无需输入= 号直接回车可输出答案退出请输入q \n\n");scanf("%c",&x);if(x=='q') break;while(x!='\n'){a[++i]=x;scanf("%c",&x);}a[i+1]='\0';jieguo=jisuan(a);printf("\n");printf("结果为:%lf",jieguo);printf("\n\n\n");printf("退出请输入q 继续请直接输入\n\n"); }}}五、调试分析六、调试说明以及分析:1、当输入为正确的格式时,能算出正确的结果,其中包括:小数、整数以及个位以上的数字,且运算符包括:加、减、乘、除运算,还有就是可以加括号等。

计算机c语言实训报告(精选5篇)

计算机c语言实训报告(精选5篇)

计算机c语言实训报告(精选5篇)计算机c语言实训报告篇1一、课题名称:简单计算器设计一个简单的程序来模拟计算器的功能。

二、设计目的:1、通过理论知识与实际需求相结合,编辑解决一些日常中的实际问题,培养初步的独立分析和设计能力。

2、了解应用程序设计解决实际问题的具体过程和实现方法,掌握应用C语言进行程序设计的基本规范;3、重点掌握C语言的程序编写、函数设计、算法设计和程序调试方法;4、初步掌握系统开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。

三、设计任务:1、通过结构体数组和共用体数组来存放输入的每一数字或运算符号的记录(包括1、2、3等数字,+、--、_、等运算符号),然后将其信息存入文件中。

输入一个算术计算式,就在屏幕上显示结果。

2、输入简单的加减乘除算术计算式,并在屏幕上显示计算结果;四、设计要求:1、用C语言实现程序设计并进行调试;2、画出查询模块的流程图;3、系统的各个功能模块要求用函数的形式实现;4、界面友好(良好的人机互交)。

5、完成设计(A4)。

五、代码设计:#include "stdio.h" main { float x,y;char operator;printf("x,yun suan fu ,y: "); scanf("%f%c%f",&x,&operator,&y); switch(operator){case '+': printf("%.2f+%.2f=%.2f",x,y,x+y); break; case '-':printf("%.2f-%.2f=%.2f",x,y,x-y); break; case '_':printf("%.2f_%.2f=%.2f",x,y,x_y); break; case '/': if(y==0) printf("chushushilingwuyiyi"); elseprintf("%.2f/%.2f=%.2f",x,y,x/y); break;default: printf("yunsunfuwuxiao"); } }?七、设计总结:学习C程序这门课一个学期了,这是我们学的第一门专业课,所以作为我这个计算机系的学生来说当然十分重要,老师在第一节课说过,C语言是计算机的基础,大多数软件都需要用C语言来编写,通过一个学期的学习,使我初步掌握了一些关于这门课的知识这次的课程设计是对我们一个学期来所学的知识的综合考察,里面涉及到了我们大多数所学知识。

简单计算器C语言课程设计报告书

简单计算器C语言课程设计报告书

C 语言课程设计报告
系:
级:
号:
名:
院 班 学 姓
、课程设计目的
、课程设计的基本过程
课程设计的基本过程包括 5 个步骤,即功能需求,总体
设计,详细设计,程序测试,结论。

每个步骤都有其特定的 任务。

2.1 【功能需求】
功能概述:该软件为用户提供一个在 windows 系统上
运 行的简单计算器,能进行简单的加、减、乘、除四则运算和
些常用特殊运算,包括余弦运算、正弦运算、正切运算、 绝对值、平方根运算、以 e 为底的指数运算、以 10 为底的 对数运算。

2.2 【总体设计】
1. 巩固和加深 C 语言课程的基本知识的理解和掌握
2. 掌握 C 语言编程和程序调试的基本技能
3. 利用 C 语言进行基本的软件设计
4. 掌握书写程序设计说明文档的能力
5. 提高运用 C 语言解决实际问题的能力。

简单计算器C语言课程设计报告书

简单计算器C语言课程设计报告书

C语言课程设计报告书题目:简单计算器院系:班级:1.2.3.4.5.2.1功能概述:该软件为用户提供一个在windows系统上运行的简单计算器,能进行简单的加、减、乘、除四则运算和一些常用特殊运算,包括余弦运算、正弦运算、正切运算、绝对值、平方根运算、以e为底的指数运算、以10为底的对数运算。

2.2【总体设计】2.2.1系统模块机构框图2.2.3系统流程图2.2.42.3实现各2.3.1算类型的数字代码,并进入相应的功能执行程序,显示相应界面。

(2)数学计算模块中,根据用户选择的运算类型和运算符号,自动调用相应的函数,运行相关程序,进行计算,并显示结果。

(3)退出程序模块。

根据用户的需要,选择是否退出程序。

2.3.2系统头文件#include<stdio.h>/*I/Q函数*/#include<math.h>/*数学函数的定义*/#include<conio.h>/*屏幕操作函数*/#include<stdlib.h>/*库函数*/2.3.3函数声明(1)主函数main()处理:{printf("简单计算器\n");printf("******************************\n");printf("请输入要进行的运算\n");printf("------------------------------\n");printf("1四则运算\n");printf("2特殊运算\n");printf("3退出程序\n");h=getche();switch(h)/*判断用户想要进行的操作*/{}(2)自定义函数size()功能:进行简单的加、减、乘、除四则运算输入:用户输入要计算的数字和运算符号(+、-、*、/)处理:根据用户输入的运算符号,跳转到相关运算函数,并调用输出:运算结果和是否需要继续运算(y/n)程序清单(b)intsize()/*定义四则(size)运算函数*/{intn,m;intc;{c=m+n;printf("\n\n\t结果是%d\n",c);printf("\n");break;case'-':/*减法运算*/c=m-n;printf("\n\n\t结果是%d\n",c);printf("\n");break;case'*':/*乘法运算*/l=getche();/*得到输入的值*/printf("\n");if(l=='y')/*如果得到的是y,则重复运算步骤,达到无限运算的作用*/ {printf("\n请输入下一个要计算的数并按Enter结束:");scanf("%d",&n);printf("\n请选择运算符号[\t+\t-\t*\t/\t]:");l=getche();switch(l){printf("\n");break;case'/':/*除法运算*/c=c/n;printf("\n\n\t结果是%d\n",c);printf("\n");break;}}else}}(33输出:运算结果和是否需要继续运算(y/n)程序清单(c)doubleteshu()/*定义(teshu)特殊运算函数*/{doubley;intn,m;charp;printf("---------请选择特殊运算类型---------");printf("1余弦2正弦3正切4绝对值\n");printf("5平方根6以e为底的指数7以10为底的对数\n");docase'2':y=sin(m);/*正弦函数*/printf("\n\n\t结果是:%f\n",y);printf("\n");break;case'3':y=tan(m);/*正切函数*/printf("\n\n\t结果是:%f\n",y);printf("\n");break;printf("\n");break;case'7':y=log10(m);/*底数为10的对数函数*/ printf("\n\n\t结果是:%f\n",y);printf("\n");break;}printf("\n是否继续?y/n");p=getche();}2.4系统主界面其他功能截图等……2.5【设计总结】本报告对简单计算器系统的分析、设计、实现的完整过程进行了介绍。

c语言课程设计报告++计算器的实现(内含完整报告-流程图-截屏-总结等)

c语言课程设计报告++计算器的实现(内含完整报告-流程图-截屏-总结等)

目录1 前言 (2)2 需求分析 (2)2.1要求 (2)2.2任务 (2)2.3运行环境 (2)2.4开发工具 (2)3 概要设计 (2)3.1系统流程图 (3)3.2查询函数流程图 (4)4 详细设计 (6)4.1分析和设计 (6)4.2具体代码实现 (6)4.3程序运行结果 (14)5 课程设计总结 (14)参考文献 (15)致谢 (15)1 前言编写一个程序来实现算术计算器。

通过结构体数组和共用体数组来存放输入的每一数字或运算符号的记录(包括1、2、3等数字,+、--、*、等运算符号),然后将其信息存入文件中。

输入一个算术计算式,就在屏幕上显示结果。

2 需求分析2.1要求(1)用C语言实现程序设计;(2)利用结构体、共用体进行相关信息处理;(3)画出查询模块的流程图;(4)系统的各个功能模块要求用函数的形式实现;(5)界面友好(良好的人机互交),程序要有注释。

2.2任务(1)定义一个结构体类型数组,输入0~9及+、--、*等符号的信息,将其信息存入文件中;(2)输入简单的加减乘除算术计算式,并在屏幕上显示计算结果;(3)画出部分模块的流程图;(4)编写代码;(5)程序分析与调试。

2.3运行环境(1)WINDOWS2000/XP系统(2)TurboC2.0编译环境2.4开发工具C语言3 概要设计3.1系统流程图如图3.1所示。

w图3.1 系统流程图3.2查询函数流程图(1)边界画线函数流程图(2)图标按钮设置函数流程图4 详细设计4.1分析和设计(1)在程序的开头部分定义了结构体类型,用来存放按钮信息,使数据能够从键盘上输入。

用输入函数input()来输入按键放在button[]数组中。

再定义结构体栈:struct_stack() 用于数据的输入和存放。

(2)进而定义了表格窗口函数,窗口画线函数draw_win() 和边界线函数draw_border(),定义out_text_win()输出文本窗口,定义window_xy(32,3); 计算结果窗口。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

c语言课程设计报告++计算器的实现(内含完整报告-流程图
-截屏-总结等)
目录
1 前言 (2)
2 需求分析 (2)
2.1要求 (2)
2.2任务 (2)
2.3运行环境 (2)
2.4开发工具 (2)
3 概要设计 (2)
3.1系统流程图 (3)
3.2查询函数流程图 (4)
4 详细设计 (6)
4.1分析和设计 (7)
4.2具体代码实现 (6)
4.3程序运行结果 (14)
5 课程设计总结 (14)
参考文献 (15)
致谢 (15)
1 前言
编写一个程序来实现算术计算器。

通过结构体数组和共用体数组来存放输入的每一数字或运算符号的记录(包括1、2、3等数字,+、--、*、等运算符号),然后将其信息存入文件中。

输入一个算术计算式,就在屏幕上显示结果。

2 需求分析
2.1要求
(1)用C语言实现程序设计;
(2)利用结构体、共用体进行相关信息处理;
(3)画出查询模块的流程图;
(4)系统的各个功能模块要求用函数的形式实现;
(5)界面友好(良好的人机互交),程序要有注释。

2.2任务
(1)定义一个结构体类型数组,输入0~9及+、--、*等符号的信息,将其信息存入文件中;
(2)输入简单的加减乘除算术计算式,并在屏幕上显示计算结果;
(3)画出部分模块的流程图;
(4)编写代码;
(5)程序分析与调试。

2.3运行环境
(1)WINDOWS2000/XP系统
(2)TurboC2.0编译环境
2.4开发工具
C语言
3 概要设计
2。

相关文档
最新文档