函数不使用 C 中的指针返回正确的值

若昂·佩德罗·奥利维拉

这是一个计算所有参与投注的朋友的奖金的程序。奖励基于每个人捐款的多少。但是我创建的函数为所有人返回 0.0000。

一个小字典:

  • 溢价 = 奖品
  • aposta = 每个朋友的贡献
int main(){
    int exerc;

    printf("Digite o numero do exercicio desejado: ");
    printf("\n");
    scanf("%d", &exerc);

    switch (exerc){
        case 2:{
            float aposta1, aposta2, aposta3, premio;

            printf("Digite respectivamente o valor que cada um apostou: ");
            scanf("%d %d %d", &aposta1, &aposta2, &aposta3);
            printf("Digite o valor do premio: ");
            scanf("%d", &premio);

            void exercicio2(float *, float*, float*, const float*);
            exercicio2(&aposta1, &aposta2, &aposta3, &premio);

            printf("O valor que o primeiro apostante recebera e de: %f", aposta1);
            printf("\nO valor que o segundo apostante recebera e de: %f", aposta2);
            printf("\nO valor que o terceiro apostante recebera e de: %f", aposta3);

        }
    }
    return 0;
}

void exercicio2(float *ap1, float *ap2, float *ap3, const float *premio){
    float total;

    total = *ap1 + *ap2 + *ap3;

    *ap1 = (*ap1/total) * (*premio);
    *ap2 = (*ap2/total) * (*premio);
    *ap3 = (*ap3/total) * (*premio);
}

输入(投注)aposta1 = 50、aposta2 = 25、aposta3 = 25 和 premio(prize) = 1000 的预期值将是:ap1 = 500、ap2 = 250、ap3 = 250。

但它正在发生:

"C:\Users\Marco Antonio\CLionProjects\untitled\cmake-build-debug\untitled.exe"
Digite o numero do exercicio desejado: 2
Digite respectivamente o valor que cada um apostou:50 25 25
Digite o valor do premio:1000
O valor que o primeiro apostante recebera e de: 0.000000
O valor que o segundo apostante recebera e de: 0.000000
O valor que o terceiro apostante recebera e de: 0.000000
j23

更改格式说明符 ( %dto %f) 将解决问题:

scanf("%d %d %d", &aposta1, &aposta2, &aposta3);
scanf("%d", &premio);

scanf("%f %f %f", &aposta1, &aposta2, &aposta3);
scanf("%f", &premio);

问题是您正在输入一个浮点数,而您的程序正在读取整数。在这种情况下,行为是未定义的。请看一个SO 问题,它是关于格式说明符和未定义行为的答案

标准规定:

如果任何参数不是相应转换规范的正确类型,则行为未定义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C函数中使用指针作为返回值

来自分类Dev

从C中的函数返回指针错误

来自分类Dev

int类型的函数不使用返回C ++

来自分类Dev

C中的函数没有返回正确的指针类型?

来自分类Dev

尝试不使用nanosleep / usleep在C函数中创建延迟

来自分类Dev

不使用函数的c中的子字符串

来自分类Dev

C中的函数未返回正确的值

来自分类Dev

如何在不使用C语言中使用typedef的情况下声明将指针返回到返回函数指针的函数的函数?

来自分类Dev

从C ++中的函数返回指向数组的指针?

来自分类Dev

如何在C#中实现C ++样式函数指针?,不使用委托

来自分类Dev

在不使用指针的情况下,在C ++中返回“无效值”类型的正确方法是什么?

来自分类Dev

为什么不使用double函数中声明的数字?(C)

来自分类Dev

有没有办法在不使用void指针的情况下返回C函数中的任何类型?

来自分类Dev

使用strcpy()在C中为指针正确分配值

来自分类Dev

在C ++中返回指针的函数

来自分类Dev

如何在不使用C的指针的情况下通过函数传递2D数组

来自分类Dev

C中的void函数指针返回值

来自分类Dev

int类型的函数不使用返回C ++

来自分类Dev

不使用函数的c中的子字符串

来自分类Dev

从C ++中的函数返回指向数组的指针?

来自分类Dev

c中的字符串串联,不使用函数

来自分类Dev

c函数指针的返回值

来自分类Dev

边界检查字符串指针以获取C函数中的返回值

来自分类Dev

指针在C中的函数后不返回

来自分类Dev

如何创建通用函数,该函数将返回c ++中任何级别的指针的值?

来自分类Dev

如何正确使用从函数接收的指针?(在C中)

来自分类Dev

C 中函数指针的正确值类型

来自分类Dev

用函数对数组进行排序而不使用 C 中的指针是行不通的。为什么?

来自分类Dev

C中如何正确使用指针

Related 相关文章

  1. 1

    在C函数中使用指针作为返回值

  2. 2

    从C中的函数返回指针错误

  3. 3

    int类型的函数不使用返回C ++

  4. 4

    C中的函数没有返回正确的指针类型?

  5. 5

    尝试不使用nanosleep / usleep在C函数中创建延迟

  6. 6

    不使用函数的c中的子字符串

  7. 7

    C中的函数未返回正确的值

  8. 8

    如何在不使用C语言中使用typedef的情况下声明将指针返回到返回函数指针的函数的函数?

  9. 9

    从C ++中的函数返回指向数组的指针?

  10. 10

    如何在C#中实现C ++样式函数指针?,不使用委托

  11. 11

    在不使用指针的情况下,在C ++中返回“无效值”类型的正确方法是什么?

  12. 12

    为什么不使用double函数中声明的数字?(C)

  13. 13

    有没有办法在不使用void指针的情况下返回C函数中的任何类型?

  14. 14

    使用strcpy()在C中为指针正确分配值

  15. 15

    在C ++中返回指针的函数

  16. 16

    如何在不使用C的指针的情况下通过函数传递2D数组

  17. 17

    C中的void函数指针返回值

  18. 18

    int类型的函数不使用返回C ++

  19. 19

    不使用函数的c中的子字符串

  20. 20

    从C ++中的函数返回指向数组的指针?

  21. 21

    c中的字符串串联,不使用函数

  22. 22

    c函数指针的返回值

  23. 23

    边界检查字符串指针以获取C函数中的返回值

  24. 24

    指针在C中的函数后不返回

  25. 25

    如何创建通用函数,该函数将返回c ++中任何级别的指针的值?

  26. 26

    如何正确使用从函数接收的指针?(在C中)

  27. 27

    C 中函数指针的正确值类型

  28. 28

    用函数对数组进行排序而不使用 C 中的指针是行不通的。为什么?

  29. 29

    C中如何正确使用指针

热门标签

归档