第一篇:c语言简单计算器
C语言小程序之简单计算器实现简单四则运算
/*
时间:2013年7月7日
功能:实现简单计算器四则运算功能 */
# include
//# include
int main(void)
{
float a,b,result;
char sym;
int i;
A: scanf(“%f%c%f”, &a, &sym, &b);//输入算式
switch(sym)//判断符号并运算
{
case '+' : result = a + b;break;
case '-' : result = a-b;break;
case '*' : result = a * b;break;
case '/' : result = a / b;break;
default : printf(“输入有误!”);break;}
printf(“%f%c%f=%fn”, a, sym, b, result);goto A;//循环继续
return 0;
}
/*
运行结果:
*/
第二篇:c语言简单的计算器源代码
1.简单的计算器 #include
void main()
{
float calculator(float a,float b,char c);float a,b,d;char c;
printf(“请输入加数和运算符号n”);scanf(“%f,%f,%c”,&a,&b,&c);d=calculator(a,b,c);
printf(“%f”,d);
}
float calculator(float a,float b,char c){
float d;
switch(c)
{
case '+':d=a+b;return(d);break;case '-':d=a-b;return(d);break;case '*':d=a*b;return(d);break;case '/':d=a/b;return(d);break;default:printf(“errorn”);
}
}
第三篇:设计一个简单计算器的C语言课程设计报告
东华理工大学
C语言课程设计报告
题目:设计一个简单计算器 姓名:地瓜叶
学号:?????
指导老师:吴志强老师
东华理工大学
目 录
1.设计目的 2.内容
3.总体设计(有流程图)
4.源程序编写(附上了运行图)
5.执行结果
6.心得体会
东华理工大学
东华理工大学
一、设计目的
设计一个简单计算器,在功能上功能尽量模拟windows操作系统中的计算器,系统界面不做强制要求。
全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数、指针和文件的操作,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,规范编程思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。
二、内容
1、程序设计的一般步骤
a、确定数据结构 b、确定算法 c、编程 d、调试 e、总结资料
东华理工大学
东华理工大学
2、基本要求
a.设计正确,方案合理,能实现相应功能。b.界面友好,使用方便。c.程序精炼,结构清晰。
d.设计报告含程序设计说明,用户使用说明,源程序清单及程序框图。e.上机演示。
三、总体设计(程序设计组成框图、流程图)
四、源程序编写
东华理工大学
东华理工大学
#include
double jisuan(char a[]){ int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0;
char nibo[50],zhan2[50];double x,n,l,z=0,zhan3[20];typedef struct {
double d1;
int d2;}dd;typedef struct {
dd data[50];
int top;
}zhan1;zhan1 shu;
shu.top=0;
while(a[i]!=' '){
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;
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]=' ';
}
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]=' ';
j--;
}
t2=j-1;
i++;
}
else if(a[i]=='+')
{
while(t2>0&&zhan2[t2]!='(')
{
nibo[++t1]=zhan2[t2];
nibo[t1+1]=' ';
东华理工大学
东华理工大学
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;
}
else
{
while(t2>0&&zhan2[t2]!='(')
{
nibo[++t1]=zhan2[t2];
nibo[t1+1]=' ';
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]=' ';
t2--;
}
zhan2[++t2]=a[i];
i++;
}
else if(a[i]=='^'||a[i]=='@')
东华理工大学
东华理工大学
{
while(zhan2[t2]=='^'||zhan2[t2]=='@')
{
nibo[++t1]=zhan2[t2];
nibo[t1+1]=' ';
t2--;
}
zhan2[++t2]=a[i];
i++;
} } while(t2>0){
nibo[++t1]=zhan2[t2];
nibo[t1+1]=' ';
t2--;} t1=1;while(nibo[t1]!=' '){
if(nibo[t1]>='0'&&nibo[t1]<='9')
{
for(i=0;i<=shu.top;i++)
{
if(nibo[t1]-'0'==shu.data[i].d2)
{
m=i;
break;
}
}
zhan3[++t3]=shu.data[m].d1;
}
else if(nibo[t1]=='+')
{
zhan3[t3-1]=zhan3[t3-1]+zhan3[t3];
t3--;
}
else if(nibo[t1]=='-')
{
zhan3[t3-1]=zhan3[t3-1]-zhan3[t3];
t3--;
东华理工大学
东华理工大学
}
else if(nibo[t1]=='*')
{
zhan3[t3-1]=zhan3[t3-1]*zhan3[t3];
t3--;
}
else if(nibo[t1]=='/')
{
zhan3[t3-1]=zhan3[t3-1]/zhan3[t3];
t3--;
}
else if(nibo[t1]=='^')
{
zhan3[t3-1]=pow(zhan3[t3-1],zhan3[t3]);
t3--;
}
else if(nibo[t1]=='@')
{
zhan3[t3]=sqrt(zhan3[t3]);
}
t1++;} return zhan3[1];} void main(){ for(;;){ char x,a[50];double jieguo;int i=0;a[0]='$';printf(“@表示开方,^表示乘方n”);
printf(“请输入表达式,退出请输入q:nn”);
scanf(“%c”,&x);if(x=='q')break;while(x!='n'){
a[++i]=x;
scanf(“%c”,&x);} a[i+1]=' ';
东华理工大学
东华理工大学
jieguo=jisuan(a);
printf(“n”);
printf(“结果为:%lf”,jieguo);printf(“nn”);} }
五、执行结果
1、输入 5 4 结果
2、输入 5 4
结果
3、输入 5 4 结果
4、输入 5 4 结果图例:
东华理工大学 10
东华理工大学
注:分别输入5、4,分别进行加减乘除。结果运行成功。此图为证明此程序运行0 error,没错误。
六、心得体会
计算机知识博大精深,很奥妙,学过c语言之后我知道我们平时用的那些应用程序都是用各种计算机语言编写的。这次通过老师布置的课程设计,我学会了更多的计算机知识,觉得编程是一件很费脑细胞同时很有意思的一件事。
我在编写这次简单计算器的程序过程中遇到很多困难,犯了很多错,(例如:执行结果部分没有运算符),这也让我意识到编写c语言是需要耐心、细心和热心去做的一件事情!最关键的是,这个程序是我们经过一个暑假后的过程来编写的,我发现很多知识都忘了,所以最关键的是我觉得编程就该持之以恒!
这次的报告前前后后改了很多遍,我觉得无论是做程序还是报告都应该按照要求的格式来,严谨规范的要求自己才能事半功倍!
东华理工大学 11
第四篇:Matlab课程设计报告(简单计算器)
1、设计目的
运用MATLAB实现MATLAB的GUI程序设计。
2、题目分析
2.1课程设计的基本要求:
A.熟悉和掌握MATLAB 程序设计方法。B.掌握MATLAB GUI程序设计。2.2课程设计的内容
要求利用MATLAB GUI设计实现一个图形用户界面的计算器程序,要求实现: A.具有友好的用户图形界面。实现十进制数的加、减、乘、除、乘方、取模等简单计算。
B.科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行。
C.能够保存上次历史计算的答案,显示答案存储器中的内容。D.有清除键,能清除操作。
E.独立存储器功能,使之可以直接输入存储器,可与存储器中的数值相加减。能够清除独立存储器中的内容。2.3题目分析
本题目通过MATLAB的GUI程序设计较为简单,在GUI设计中主要用到三种控件,显示框用到文本编辑框(edit text),说明框用到静态文本框(Static text),数字以及运算等按钮用到命令按钮(push button)。然后再通过各个按钮的回调函数,实现简单的计算功能。
3、总体设计
首先用MATLAB GUI功能,在绘制一个静态文本框和一个文本编辑框,以及32个命令按钮,调整好各控件大小、颜色,整体布局如图所示:
然后通过双击个按钮来改写其属性,在m文件中编写其回调函数,最后在运行调试。
4、具体设计 4.1 各功能界面设计 GUI设计界面:
4.2 各功能模块实现 算法设计:
A.数字键设计:0—9以及小数点函数都一样,只是参数不同: global jj textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','1');else
textString =strcat(textString,'1');set(handles.text1,'String',textString)end jj=0;B.四则运算函数:
textString = get(handles.text1,'String');textString =strcat(textString,'+');set(handles.text1,'String',textString)C.科学计算函数:
textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)set(handles.text1,'String','0.');else
a = strread(textString, '%f');a=sin(a);set(handles.text1,'String',a)end 或
textString=handles.text1;textString=sin(str2num(get(handles.text1,'String'))*pi/180);set(handles.text1,'String',num2str(textString))D.退格键:通过取屏幕值,计算出其字符长度,然后取其前N-1项的值来实现退格: global jj textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','0.');else
ss=char(textString);l=length(textString);textString=ss(1:l-1);set(handles.text1,'String',textString)end jj=0;E.清屏键函数:
set(handles.text1,'String','0.');F.右键函数:
gtext('大家好;我是智能机器人-my name is seven');close(gcf);4.3 各模块实现结果 A.数字键:
B.四则运算函数:
C.科学计算函数: Sin45的计算结果=
经过计算,这些结果均与实际结果相吻合,计算器的功能实现的较为完好。5.2问题和解决方法:
a.小数点可以连续输入。解决方法是:用strfind函数查看文本框里有几个小数点,如果已经有一个了,再按小数点就保持不变。b.按过运算符号后一个数不等于一个数,比如:输入1,按等号,会出来一个3,经过长时间分析得知,这是由于在按运算符号时,系统记录了文本框里的数但没有清空,才会出现这种问题。解决方法是再申请一个不同于加减乘除的另一个符号,并将按过运算符后记录的数值置0。
c.按对数函数键时,负数也能运算,通过加入if判断语句来判断输入的值是否为负,若为负则输出error.6、心得体会
通过本次的MATLAB课程设计,让我对MATLAB尤其是其GUI设计的功能有了进一步的了解,认识到了它功能的强大。在MATLAB简单计算器的设计中,了解了关于MATLAB图形用户界面的部分控件的使用方法;利用MATLAB的GUI提供的很多实用的控件,方便用于设计属于自己的图形界面。
7、附录(源代码)
function varargout = jisuanqi(varargin)% JISUANQI M-file for jisuanqi.fig
% JISUANQI, by itself, creates a new JISUANQI or raises the existing % singleton*.%
% H = JISUANQI returns the handle to a new JISUANQI or the handle to % the existing singleton*.%
% JISUANQI('CALLBACK',hObject,eventData,handles,...)calls the local % function named CALLBACK in JISUANQI.M with the given input arguments.%
% JISUANQI('Property','Value',...)creates a new JISUANQI or raises the % existing singleton*.Starting from the left, property value pairs are % applied to the GUI before jisuanqi_OpeningFunction gets called.An % unrecognized property name or invalid value makes property application % stop.All inputs are passed to jisuanqi_OpeningFcn via varargin.%
% *See GUI Options on GUIDE's Tools menu.Choose “GUI allows only one % instance to run(singleton)”.%
% See also: GUIDE, GUIDATA, GUIHANDLES % Copyright 2002-2003 The MathWorks, Inc.% Edit the above text to modify the response to help jisuanqi % Last Modified by GUIDE v2.5 04-Dec-2012 17:06:43 % Begin initialization codeDO NOT EDIT
%---Executes just before jisuanqi is made visible.function jisuanqi_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)% Get default command line output from handles structure varargout{1} = handles.output;
function edit1_Callback(hObject, eventdata, handles)% hObject handle to edit1(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles emptyto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj
textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','1');else
textString =strcat(textString,'1');set(handles.text1,'String',textString)end jj=0;
%---Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj
textString = get(handles.text1,'String');
if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','3');else
textString =strcat(textString,'3');set(handles.text1,'String',textString)end jj=0;
%---Executes on button press in pushbutton13.function pushbutton13_Callback(hObject, eventdata, handles)% hObject handle to pushbutton13(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj
textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','-');else
textString = get(handles.text1,'String');textString =strcat(textString,'-');set(handles.text1,'String',textString)end jj=0;
%---Executes on button press in pushbutton21.function pushbutton21_Callback(hObject, eventdata, handles)% hObject handle to pushbutton21(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)textString = get(handles.text1,'String');%strcmp(textString,'0.')textString=handles.text1;
textString=sin(str2num(get(handles.text1,'String'))*pi/180);set(handles.text1,'String',num2str(textString))%a = strread(textString, '%f')%textString=get(handles.text1,'String')%textString=strcat(textString,'sin')%set(handles.text1,'String',textString)%---Executes on button press in pushbutton23.function pushbutton23_Callback(hObject, eventdata, handles)% hObject handle to pushbutton23(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj
textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','4');else
textString =strcat(textString,'4');set(handles.text1,'String',textString)end jj=0;
%---Executes on button press in pushbutton5.function pushbutton5_Callback(hObject, eventdata, handles)% hObject handle to pushbutton5(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj
textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','6');else
textString =strcat(textString,'6');set(handles.text1,'String',textString)end jj=0;
%---Executes on button press in pushbutton15.function pushbutton15_Callback(hObject, eventdata, handles)% hObject handle to pushbutton15(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj
textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','/');else
textString = get(handles.text1,'String');textString =strcat(textString,'/');set(handles.text1,'String',textString)end jj=0;
%---Executes on button press in pushbutton24.function pushbutton24_Callback(hObject, eventdata, handles)% hObject handle to pushbutton24(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)textString = get(handles.text1,'String');%strcmp(textString,'0.')textString=handles.text1;
textString=cos(str2num(get(handles.text1,'String'))*pi/180);set(handles.text1,'String',num2str(textString))%---Executes on button press in pushbutton26.function pushbutton26_Callback(hObject, eventdata, handles)% hObject handle to pushbutton26(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj
textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','7');else
textString =strcat(textString,'7');set(handles.text1,'String',textString)end jj=0;
%---Executes on button press in pushbutton8.function pushbutton8_Callback(hObject, eventdata, handles)% hObject handle to pushbutton8(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj
textString = get(handles.text1,'String');
if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','9');else
textString =strcat(textString,'9');set(handles.text1,'String',textString)end jj=0;
%---Executes on button press in pushbutton17.function pushbutton17_Callback(hObject, eventdata, handles)% hObject handle to pushbutton17(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)set(handles.text1,'String',')');else
textString =strcat(textString,')');set(handles.text1,'String',textString)end
%---Executes on button press in pushbutton27.function pushbutton27_Callback(hObject, eventdata, handles)% hObject handle to pushbutton27(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)textString = get(handles.text1,'String');%strcmp(textString,'0.')textString=handles.text1;
textString=tan(str2num(get(handles.text1,'String'))*pi/180);set(handles.text1,'String',num2str(textString))%---Executes on button press in pushbutton29.function pushbutton29_Callback(hObject, eventdata, handles)% hObject handle to pushbutton29(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)
global jj
textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','0.');else
textString =strcat(textString,'0');set(handles.text1,'String',textString)end jj=0;
%---Executes on button press in pushbutton11.function pushbutton11_Callback(hObject, eventdata, handles)% hObject handle to pushbutton11(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)set(handles.text1,'String','0.');
%---Executes on button press in pushbutton19.function pushbutton19_Callback(hObject, eventdata, handles)% hObject handle to pushbutton19(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)textString=get(handles.text1,'String')s=eval(textString)
set(handles.text1,'String',s)
%---Executes on button press in pushbutton30.function pushbutton30_Callback(hObject, eventdata, handles)% hObject handle to pushbutton30(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)textString = get(handles.text1,'String');%strcmp(textString,'0.')textString=handles.text1;
textString=cot(str2num(get(handles.text1,'String'))*pi/180);set(handles.text1,'String',num2str(textString))%---Executes on button press in pushbutton32.function pushbutton32_Callback(hObject, eventdata, handles)% hObject handle to pushbutton32(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)%open('1.bmp')
gtext('大家好;我是智能机器人-my name is seven');
%------function J_Callback(hObject, eventdata, handles)% hObject handle to J(see GCBO)
% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)close(gcf);
8、参考书目:
[1]《MATLAB语言及其在电子信息工程中的应用》 王洪元主编 清华大学出版社
[2] 《MATLAB中GUI的应用》 王洪元主编 清华大学出版社
第五篇:《制作简单的计算器》学案
制作简单的计算器
学习要点: 数据类型
数据类型的转换 +-*/符号 判断 组合框 四舍五入 注释
一、任务分析
简单计算器:输入数值进行加减乘除计算,绘制流程图,确定所需组件。(1)三个编辑框(输入或显示的数值和结果)(2)一个组合框(放置运算符号)(3)一个标签(放置等号)
(4)1个按钮(被单击时激发代码)
2、界面设计(可参考上图)
3、认识语句(1)到文本():数值转化为文本(2)到数值():到数值(通用型 待转换的文本或数值)
(3)判断()调用格式: 〈无返回值〉 判断(逻辑型 条件)本命令根据提供的逻辑参数的值,来决定是否改变程序的执行位置,如果提供的逻辑参数值为真,程序继续顺序向下执行,否则跳转到下一分支处去继续判断。(4)组合框():语句使用可参考E语言知识库
4、练习用E语言解决(1)利用组件组建窗体
(2)右击组合框,设置“列表项目”,在列表项管理对话框中选择“向后插入空项目”分别输入“+-*/”符号。点击确定(3)点击组合框属性,在【类型】中选择“不可编辑下拉式”;在【现行选中项】中选择“0”。(目的避免在组合框中写入不必要的东西)
(4)点击【计算】按钮编写程序编辑框3.内容 = 到文本(到数值(编辑框1.内容)+ 到数值(编辑框2.内容))(5)利用判断解决加减乘除的运算
(6)注意除号的写法:如果输入“/”,符号自动变成“÷”,进行除法运算;如果输入“”,符号自动加粗“ \”,表示进行整除运算(**求出两个数值的商,并返回其整数部分,运算符号为“”。)
E语言代码改成如下:
(7)四舍五入:调用格式: 〈双精度小数型〉 四舍五入(双精度小数型 欲被四舍五入的数值,[整数型 被舍入的位置])-系统核心支持库->算术运算
英文名称:round 返回按照指定的方式进行四舍五入运算的结果数值。本命令为初级命令。参数<1>的名称为“欲被四舍五入的数值”,类型为“双精度小数型(double)”。参数<2>的名称为“被舍入的位置”,类型为“整数型(int)”,可以被省略。如果大于0,表示小数点右边应保留的位数;如果等于0,表示舍入到整数;如果小于0,表示小数点左边舍入到的位置。例如:四舍五入(1056.65, 1)返回 1056.7; 四舍五入(1056.65, 0)返回 1057; 四舍五入(1056.65,-1)返回 1060。如果省略本参数,则默认为0。将除法的E语言代码改成如下: