C++的一个小程序,设计一个简单的计算器,我的程序的问题出在哪里

//设计一个计算器程序,能够根据键盘输入的操作数和运算符,做简单的加减乘除运算。//当输入“;”号时结束运算//测试数据为://输入操作数:3//输入运算符:+//输入操... //设计一个计算器程序,能够根据键盘输入的操作数和运算符,做简单的加减乘除运算。
//当输入“;”号时结束运算
//测试数据为:
//输入操作数:3
//输入运算符:+
//输入操作数:40
//输出结果:43
//输入运算符:-
//输入操作数:23
//输出结果:20
//输入运算符:*
//输入操作数:2
//输出结果:40
//输入运算符:/
//输入操作数:8
//输出结果:5
//输入运算符:?
//运算符输入错误!
//输入运算符:;
//运算结束。

#include<iostream.h>
int add(int a,int b);
int sub(int a,int b);
int mul(int a,int b);
int div(int a,int b);
int func(char m,int num,int q);

void main()
{
int p,q;
static num=0;
char m;
cin>>p>>m>>q;
num=p;
while(q!=';')
{
func(m,num,q);
cout<<num<<" ";
cin>>q;
}

}
int func(char m,int p,int q)
{
if(m=='+')
add(p,q);
else if(m=='-')
sub(p,q);
else if(m=='*')
mul(p,q);
else if(m=='/')
div(p,q);
else
cout<<"运算符错误!"<<endl;

return p;

}

int add(int a,int b)
{
a=a+b;
return a;
}

int sub(int a,int b)
{
a=a-b;
return a;
}

int mul(int a,int b)
{
a=a*b;
return a;
}

int div(int a,int b)
{
a=a/b;
return a;
}

//调用加减乘除函数没有起作用,而且有时候会出现死循环
展开
 我来答
度娘是农民
2008-02-02 · TA获得超过133个赞
知道小有建树答主
回答量:363
采纳率:0%
帮助的人:142万
展开全部
#include<iostream.h>
int add(int &a,int b);
int sub(int &a,int b);
int mul(int &a,int b);
int div(int &a,int b);
int func(char m,int &num,int q);

void main()
{
int p,q=0;
char m;
cin>>p>>m>>q;
do{
p=func(m,p,q);
cout<<p<<endl;
cin>>m>>q;
}while (m!=';');
}

int func(char m,int &p,int q)
{
if(m=='+')
p=add(p,q);
else if(m=='-')
p=sub(p,q);
else if(m=='*')
p=mul(p,q);
else if(m=='/')
p=div(p,q);
else
cout<<"运算符错误!"<<endl;
return p;
}

int add(int &a,int b)
{
a=a+b;
return a;
}

int sub(int &a,int b)
{
a=a-b;
return a;
}

int mul(int &a,int b)
{
a=a*b;
return a;
}

int div(int &a,int b)
{
a=a/b;
return a;
}

这样
Y_Snow
2008-02-02 · 超过36用户采纳过TA的回答
知道答主
回答量:110
采纳率:0%
帮助的人:108万
展开全部
问题出在:
1、
int func(char m,int p,int q)
{
if(m=='+')
add(p,q);
else if(m=='-')
sub(p,q);
else if(m=='*')
mul(p,q);
else if(m=='/')
div(p,q);
else
cout<<"运算符错误!"<<endl;

return p;

}
//p没赋值就直接返回了?

2、
while(q!=';')
{
func(m,num,q);
cout<<num<<" ";
cin>>q;
}
//新的操作数应该是函数func的返回值,但你的不是。
//操作符也没更新

自己再想想然后修改过来就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jackilee1980
2008-02-02 · TA获得超过486个赞
知道小有建树答主
回答量:285
采纳率:0%
帮助的人:0
展开全部
#include<iostream.h>
int add(int &a,int b);
int sub(int &a,int b);
int mul(int &a,int b);
int div(int &a,int b);
int func(char m,int &num,int q);

void main()
{
int p,q=0;
char m;
while(q!=';')
{
cin>>p>>m>>q;
func(m,p,q);
cout<<p<<endl;
}

}
int func(char m,int &p,int q)
{
if(m=='+')
add(p,q);
else if(m=='-')
sub(p,q);
else if(m=='*')
mul(p,q);
else if(m=='/')
div(p,q);
else
cout<<"运算符错误!"<<endl;

return p;

}

int add(int &a,int b)
{
a=a+b;
return a;
}

int sub(int &a,int b)
{
a=a-b;
return a;
}

int mul(int &a,int b)
{
a=a*b;
return a;
}

int div(int &a,int b)
{
a=a/b;
return a;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
终晋耿丽佳
2019-08-04 · TA获得超过3762个赞
知道大有可为答主
回答量:3098
采纳率:28%
帮助的人:158万
展开全部
#include<iostream.h>
int
add(int
&a,int
b);
int
sub(int
&a,int
b);
int
mul(int
&a,int
b);
int
div(int
&a,int
b);
int
func(char
m,int
&num,int
q);
void
main()
{
int
p,q=0;
char
m;
cin>>p>>m>>q;
do{
p=func(m,p,q);
cout<<p<<endl;
cin>>m>>q;
}while
(m!=';');
}
int
func(char
m,int
&p,int
q)
{
if(m=='+')
p=add(p,q);
else
if(m=='-')
p=sub(p,q);
else
if(m=='*')
p=mul(p,q);
else
if(m=='/')
p=div(p,q);
else
cout<<"运算符错误!"<<endl;
return
p;
}
int
add(int
&a,int
b)
{
a=a+b;
return
a;
}
int
sub(int
&a,int
b)
{
a=a-b;
return
a;
}
int
mul(int
&a,int
b)
{
a=a*b;
return
a;
}
int
div(int
&a,int
b)
{
a=a/b;
return
a;
}
这样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式