gpt4 book ai didi

c - 1 个函数中的 3 个指针 - 计算器不工作

转载 作者:太空宇宙 更新时间:2023-11-04 05:26:29 25 4
gpt4 key购买 nike

我的计算器程序中的函数有问题。该函数只返回 0 个值 。我想要那个:

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 调用将无法读取运算符或第二个数字。

关于c - 1 个函数中的 3 个指针 - 计算器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25325296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com