gpt4 book ai didi

c - 函数打印错误值,但正在计算正确值

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

#include <stdio.h>
#include <stdlib.h>
#include <math.h>


float ts (int a) {
float tp;
tp=a*60;
return tp;
}


int ponto (float t) {
if (t < 180)
return 100;
else if (t >= 180 || t <= 300)
return 80;
else
return ((80-(t-5))/5);
}

int main()
{
int quantidade,c=0, p1, p2,p3,insc;
float tp1, tp2, tp3,t1,t2,t3;

puts ("Informe quantidade de equipes");
scanf ("%d", &quantidade);
puts ("Informe tempo padrao das tres etapas respectivamente em minutos");
scanf ("%f%f%f", &tp1, &tp2, &tp3);
tp1 = ts (tp1);
tp2 = ts (tp2);
tp3 = ts (tp3);
do {
puts ("Informe número de inscricao da equipe");
scanf ("%d", &insc);
puts ("Informe tempo das tres etapas respectivamente em minutos");
scanf ("%f%f%f", &t1, &t2, &t2);
t1 = ts (t1);
t2 = ts (t2);
t3 = ts (t3);
printf ("\nNº de inscricao: %d", insc);
t1 = abs (tp1-t1);
p1 = ponto (t1);
t2 = abs (tp2-t2);
p2 = ponto (t2);
t3 = abs (tp3-t3);
p3 = ponto (t3);
printf ("\nPontos obtidos na etapa 1: %d", p1);
printf ("\nPontos obtidos na etapa 2: %d", p3);
printf ("\nPontos obtidos na etapa 3: %d", p3);
printf ("\nTotal de pontos: %d",p1+p2+p3);
c++;
} while ( c < quantidade);
return 1;
}

为什么函数 ponto 总是返回 100 而 int total 返回真值?我用的是codeblocks... total出现的值是真实值,但是etapa 1,2,3区域出现的de值总是100...

最佳答案

您可能还想提供测试数据,但我发现一个迫在眉睫的问题。在应该打印出 p2 的行中,您实际上正在输出 p3

我还会对 float 和整数的混合保持警惕,例如将 float 传递给 abs()。选择一种数据类型并坚持使用它可能会更好。

在调用 ts() 时将 float 转换为整数时输入 float 似乎没有什么意义,这可能是您的问题所在。

无论如何,除非您保留大量数组,否则由于范围和精度的增加,大多数人倾向于选择 double 而不是 float 。

而且,如果您对此深思熟虑:

else if (t >= 180 || t <= 300)

您会意识到它总是评估为真。您可能打算使用 &&,逻辑 AND 运算符。

关于c - 函数打印错误值,但正在计算正确值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16996763/

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