计算两数的和与差,输出结果不对。
#include<stdio.h>
int main()
{
void sum_diff(float op1,float op2,float *psum,float *pdiff);
float op1,op2,*psum,*pdiff,a,b;
printf("Enter x,y:");
scanf("%lf %lf",&op1,&op2);
psum=&a;
pdiff=&b;
sum_diff(op1,op2,psum,pdiff);
printf("The sum is %.2f\n",*psum);
printf("The diff is %.2f",*pdiff);
return 0;
}
void sum_diff(float op1,float op2,float *psum,float *pdiff)
{
static float num1,num2;
float *x,*y;
num1=op1+op2;
psum=&num1;
num2=op1-op2;
pdiff=&num2;
}
float用%f,double用%lf
这只是一眼看出来的,你先改了再看还有没有错误
既然传了指针进去,直接用*psum = op1+op2就行了
还有 scanf你用的是%lf,应该改成%f
有两个地方需要改进,一是scanf读取单精度浮点数float时要用%f,二是在给指针指向的变量赋值时可以直接用*point类似格式赋值,修改后代码如下:
#include<stdio.h>
int main()
{
void sum_diff(float op1,float op2,float *psum,float *pdiff);
float op1,op2,*psum,*pdiff,a,b;
printf("Enter x,y:");
scanf("%f %f",&op1,&op2);
psum=&a;
pdiff=&b;
sum_diff(op1,op2,psum,pdiff);
printf("The sum is %.2f\n",*psum);
printf("The diff is %.2f",*pdiff);
return 0;
}
void sum_diff(float op1,float op2,float *psum,float *pdiff)
{
float num1,num2;
num1=op1+op2;
// printf("num1=%f\n",num1);
*psum=num1;
num2=op1-op2;
*pdiff=num2;
// printf("num2=%f\n",num2);
}