C 1个函数中有3个指针-计算器不工作
我的计算器程序中有一个函数有问题。该函数只返回0个值. 我希望:C 1个函数中有3个指针-计算器不工作,c,pointers,while-loop,switch-statement,function-pointers,C,Pointers,While Loop,Switch Statement,Function Pointers,我的计算器程序中有一个函数有问题。该函数只返回0个值. 我希望: Input:3+4 Output:7 我使用了指针来使用引用调用方法。请给我一些提示。 错误在函数readcalc中。如果我在主程序中编写整个语法,它就可以工作了 这是我的密码 #include "stdafx.h" #include <stdio.h> #include <stdlib.h> double readcalc(double*,char*,double*); double additio
Input:3+4
Output:7
我使用了指针来使用引用调用方法。请给我一些提示。
错误在函数readcalc中。如果我在主程序中编写整个语法,它就可以工作了
这是我的密码
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
double readcalc(double*,char*,double*);
double addition(double,double);
double subtraction(double,double);
double multiplication(double,double);
double division(double,double);
int main()
{
double a=0, b=0;
char op='R', restart = 'Y';
while (restart != 'N')
{
readcalc(&a,&op,&b);
printf("%lf%lf", a, b);
printf("\n ---CALCULATOR--- \n\n\n");
switch (op)
{
case '+':printf("%lf + %lf = %lf\n", a, b, addition(a, b)); break;
case '-':printf("%lf - %lf = %lf\n", a, b, subtraction(a, b)); break;
case '*':printf("%lf * %lf = %lf\n", a, b, multiplication(a, b)); break;
case '/':printf("%lf / %lf = %lf\n", a, b, division(a, b)); break;
default:printf("bad operator!");
}
printf("New Calc? (Y,N) \n");
fflush(stdin);
scanf("%c", &restart);
if (restart != 'Y'&&restart != 'N')
{
printf("Bad input!");
}
}
fflush(stdin);
getchar();
return 0;
}
double readcalc(double* x,char* opp,double* y)
{
printf("\n Type your calculation!(z.B.4+7)\n");
scanf("%lf%c%lf", &x, &opp, &y);
return 0;
}
double addition(double a,double b)
{
double c = 0;
c = a + b;
return c;
}
double subtraction(double a, double b)
{
double c = 0;
c = a - b;
return c;
}
double multiplication(double a, double b)
{
double c = 0;
c = a*b;
return c;
}
double division(double a, double b)
{
double c = 0;
c = a / b;
return c;
}
我可以更改什么?readcalc的问题是您将指向指针的指针作为参数传递给scanf。变量已经是指针了,所以不必使用运算符的地址来获取指针,因为这样就可以获得指向指针的指针
还要注意scanf格式,因为%c格式不会跳过前导空格,因此如果输入例如1+2,scanf调用将无法读取运算符或第二个数字。您的readcalc函数调用
void readcalc(double* x,char* opp,double* y)
{
printf("\n Type your calculation!(z.B.4+7)\n");
scanf("%lf%c%lf", x, opp, y); // <== no &'s
}
scanf("%lf%c%lf", &x, &opp, &y);
在指针、int*x等上
当您将其内联放置在main中时,它对变量的地址起作用。
换成
scanf("%lf%c%lf", x, opp, y);
在适当的警告级别,您可能已看到警告
当您在那里时,readcalc返回一个您从未使用过的double。也许它应该是空的?欢迎这样做。使用一些缩进,程序的可读性会更好。我很高兴告诉我们为什么你认为问题在readcalc中,以帮助我们找到问题。例如,在英语中不是指:你应该使用例如。。