#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);
}
加法是对的,但是减法和乘法运行出来是错的。
追答怎么错的
追问乘法运行的结果:
改过之后运行加法是对的,但运行减法是错的。
输入1和4
运行减法
输出的是很小的一个负数,有好几位
要是加法对了,那就是方式和思路对了,但是减法错了,可能是你编译器对int类型的解释有问题,也就是int的取值范围不可能是负数