嗯,首先,我对C语言并不陌生,所以这可能有一个简单的答案,但我无法弄清楚它可能是什么。而且,我的英语不是你称之为完美的,所以如果我让自己难以理解,我会提前道歉。
我正在尝试这个小程序,让我可以用固定的速度对旅行时间进行简单的计算,我需要输入的只是旅行的距离。我开始对它进行编码,很快我得到了一个半功能的控制台程序,但随后它开始增长和增长,然后出现了一个点,我似乎无法在代码中添加任何浮点数。这是迄今为止的代码:
#include<stdio.h>
#include <string.h>
#include <math.h>
/* TENGO QUE ARREGLAR ESTO, ME CAUSA BRONCA CON EL NÚMERO TOTAL DE FLOAT NUMBERS*/
main()
{
float x1, km, mn, mn1, mn1a, mn1b, mn1c, mn2, mn2a, mn2b, mn2c, mn3, mn3a, mn3b, mn3c, mn4;
int c=1;
printf("\n\n\tTiempo de recorrido\n\n");
if (x1 >= 0)
{
do
{
printf("\tEscribe distancia en mapa: ");
scanf("%f", &x1);
c = x1;
km = x1*50; // Distancia real
mn = km;
mn1 = mn/5; // Tiempo de viaje
mn1a = mn1/18; // Jornadas de marcha
mn1b = mn1 + (floorf(mn1a)*6); // Tiempo total del viaje
mn1c = mn1b/24; // Días totales de viaje
mn2 = mn/8;// Tiempo de viaje
mn2a = mn2/18; // Jornadas de marcha
mn2b = mn2 + (floorf(mn2a)*6); // Tiempo total del viaje
mn2c = mn2b/24; // Dias totales de viaje
mn3 = mn/25;// Tiempo de viaje
mn3a = mn3/18;
//Instrucciones PRINT
printf("\n\n\tNumero de kilometros = %3.2f km", km);
if (mn1 < 24){
printf("\n\n\tTiempo a 5 km/h (caminata) = %3.2f horas", mn1);
}
else{
printf("\n\n\tViaje en caminata (5 km/h)\n");
printf("\n\tTiempo de recorrido = %3.2f horas", mn1);
printf("\n\tJornadas de marcha = %3.2f jornadas", mn1a);
printf("\n\tTiempo total = %3.2f horas", mn1b);
printf("\n\tDias totales = %3.2f dias\n", mn1c);}
if (mn2 < 24){
printf("\n\tTiempo a 8 km/h (a caballo) = %3.2f horas", mn2);}
else{
printf("\n\n\tViaje a caballo (8 km/h)\n");
printf("\n\tTiempo de viaje = %3.2f horas", mn2);
printf("\n\tJornadas de marcha = %3.2f dias", mn2a);
printf("\n\tTiempo total = %3.2f horas", mn2b);
printf("\n\tDias totales = %3.2f dias\n", mn2c);
}
if (mn3 < 24){
printf("\n\tTiempo a 25 km/h = %3.2f horas\n", mn3);
}
else{
printf("\n\n\tTrote de caballo (25 km/h)\n");
printf("\n\tTiempo de viaje = %3.2f horas", mn3);
printf("\n\tJornadas de marcha = %&.2f días", mn3a);
printf("\n\tJornadas de marcha = %3.2f horas", mn3);
}
}
while (c >= 0);
}
else{
getch();
}
}
现在,当我尝试运行上面的代码时,输出没有问题。但是,当我尝试在下面添加另一个变量声明(mn4已经在float声明中添加)时,程序会出错:我只得到文本“Escribe la distancia en el mapa”(不带:符号“),当我键入任何键时,它会发送消息“Process return with return value 49/50”,并在下一次击键后关闭。
我已经尝试过用我能想到的任何方式思考代码,但没有任何效果,只是由于某种原因它将返回值改为49到50之间。我希望有人可以告诉我如何解决这个问题,或者,如果不可能的话,告诉我为什么会这样,所以我可以找到解决方法。
提前致谢。
答案 0 :(得分:4)
这是因为你把一切都包裹在一个很大的if (x1 >= 0)
中。看起来你在一开始就对一个未初始化的变量进行分支......没有明显的原因。
我认为您打算阅读x1
,然后根据其值调整计算。