C语言编程问题,求两数之和、差、积;调用,指针(帮忙看看我的程序哪错了)

#include<stdio.h>#include<string.h>intadd(int*m,int*n){inti;i=(*m)+(*n);returni;}ints... #include<stdio.h>
#include<string.h>
int add(int *m,int *n)
{
int i;
i=(*m)+(*n);
return i;
}
int sub(int *e,int *f)
{
int i;
i=(*e)-(*f);
return i;
}
int mul(int *p,int *q)
{
int i;
i=(*p)*(*q);
return i;
}
int process(int *a,int *b)
{
char i;
int j;
printf("请输入您想要的计算(+/-/*):");
scanf("%c",&i);
if(strcmp(i,'+')==0)
j=add(a,b);
return j;
if(strcmp(i,'-')==0)
j=sub(a,b);
return j;
if(strcmp(i,'*')==0)
j=mul(a,b);
return j;
}
void main()
{
int a,b,*p1,*p2,m;
p1=&a;
p2=&b;
printf("请输入两个数:\n");
scanf("%d,%d",&a,&b);
m=process(*p1,*p2);
printf("所求的值为:%d",m);
}
我把主函数改成这样(还是不行):
void main()
{
int a,b,*p1,*p2,m;
p1=&a;
p2=&b;
printf("请输入两个数:\n");
scanf("%d,%d",&a,&b);
m=process(p1,p2);
printf("所求的值为:%d",m);
}
展开
 我来答
忘至白葬不情必0T
2011-12-09 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
int process(int *a,int *b)
{
char i;
int j;
printf("请输入您想要的计算(+/-/*):");
getchar(); //要把之前输入两个数时按的回车给过滤掉
scanf("%c",&i);
if(i=='+') //字符比较用不着strcmp
{
j=add(a,b);
return j;
}
if(i=='-')
{
j=sub(a,b);
return j;
}
if(i=='*')
{
j=mul(a,b);
return j;
}
}
void main()
{
int a,b,*p1,*p2,m;
p1=&a;
p2=&b;
printf("请输入两个数:\n");
scanf("%d,%d",&a,&b);
m=process(p1,p2); //不是*p1,*p2
printf("所求的值为:%d",m);
}
更多追问追答
追问
加法是对的,但是减法和乘法运行出来是错的。
追答
怎么错的
淦海瑶s1
2011-12-09 · TA获得超过3646个赞
知道大有可为答主
回答量:3341
采纳率:100%
帮助的人:771万
展开全部
if(strcmp(i,'+')==0)
j=add(a,b);
这个比较有必要用吗:if(i=='+') 不就好了
这个不需要指针,就能干的好好的
int add(int a,int b)
{
return a+b;
}
int sub(int a,int b)
{
return a-b;
}
int mul(int a,int b)
{
return a*b;
}
追问
改过之后运行加法是对的,但运行减法是错的。
输入1和4
运行减法
输出的是很小的一个负数,有好几位
追答
要是加法对了,那就是方式和思路对了,但是减法错了,可能是你编译器对int类型的解释有问题,也就是int的取值范围不可能是负数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
道上辖c5736
2011-12-09 · TA获得超过126个赞
知道答主
回答量:114
采纳率:0%
帮助的人:101万
展开全部
#include<stdio.h>
#include<string.h>
int add(int *m,int *n)
{
int i;
i=(*m)+(*n);
return i;
}
int sub(int *e,int *f)
{
int i;
i=(*e)-(*f);
return i;
}
int mul(int *p,int *q)
{
int i;
i=(*p)*(*q);
return i;
}
int process(int *a,int *b)
{
char i;
int j;
getchar(); /////
printf("请输入您想要的计算(+/-/*):");
scanf("%c",&i);
if(i-'+'==0) //不用strcmp
{j=add(a,b); //加{}
return j;}
if(i-'-'==0)
{ j=sub(a,b);
return j;}
if(i-'*'==0)
{ j=mul(a,b);
return j;}
}
void main()
{
int a,b,*p1,*p2,m;
p1=&a;
p2=&b;
printf("请输入两个数:\n");
scanf("%d%d",&a,&b);
m=process(p1,p2); //改为指针
printf("所求的值为:%d",m);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wenluma
2011-12-09 · 超过14用户采纳过TA的回答
知道答主
回答量:69
采纳率:100%
帮助的人:39.1万
展开全部
在主函数中声明下你自己定义的函数试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
邴格忻映
2020-03-05 · TA获得超过3928个赞
知道大有可为答主
回答量:3190
采纳率:34%
帮助的人:193万
展开全部
int
process(int
*a,int
*b)
{
char
i;
int
j,m,n;
m=*a;
n=*b;
printf("请输入您想要的计算(+/-/*):");
getchar();
scanf("%c",&i);
if(i=='+')
{
j=add(m,n);
return
j;
}
if(i=='-')
{
j=sub(m,n);
return
j;
}
if(i=='*')
{
j=mul(m,n);
return
j;
}
}
这个函数的问题。if语句下面不加{}的话,只有if下的第一条语句有用。
所以输入+的话是对的,输入-*的话都是走的第一个return
j;所以出错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式