我编写了一个displayResults
函数,在该函数中,我将所有计算都传递到参数中并打印每一行。
每次需要数据时,控制台应用程序都会保持打开状态,但是一旦进入displayResults
函数,该窗口就会关闭。
我已经包含了system("Pause);
,希望它可以使窗口保持打开状态,但是不起作用。
我所指的功能:
void displayResults(double force, double volume, char encodeTxt, double distance,
double tangent, double resist, double y)
{
printf("The force = %lf\n", force);
printf("The volume = %lf\n", volume);
printf("The encoded character = %c", encodeTxt);
printf("The distance = %lf", distance);
printf("The tangent = %lf", tangent);
printf("The resistance = %lf", resist);
printf("The y value = %lf", y);
system("Pause");
}
这里是我的更多代码:
double getForce(void)
{
double force = 0, mass = 0, accel = 0;
printf("Enter the mass:\n");
scanf("%lf", &mass);
printf("Enter the acceleration:\n");
scanf("%lf", &accel);
force = mass * accel;
return force;
}
double getVolume(void)
{
double volume = 0, radius = 0, height = 0;
printf("Enter radius of cylinder:\n");
scanf("%lf", &radius);
printf("Enter height of cylinder:\n");
scanf("%lf", &height);
volume = PI * pow(radius, 2) * height;
return volume;
}
char getEncode(void)
{
char encodeTxt, plainTxt;
int shift = 0;
printf("Enter a character:\n");
scanf(" %c", &plainTxt);
printf("Enter an integer");
scanf("%d", &shift);
encodeTxt = (plainTxt - 'A') + 'a' - shift;
return encodeTxt;
}
double getDistance(void)
{
double distance = 0, x1 = 0, x2 = 0, y1 = 0, y2 = 0;
printf("Enter first point:\n");
scanf("%lf%lf", &x1, &y1);
printf("Enter second point:\n");
scanf("%lf%lf", &x2, &y2);
distance = sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));
return distance;
}
double getTangent(void)
{
double tangent = 0, theta = 0;
printf("Enter the theta angle:\n");
scanf("%lf", &theta);
tangent = sin(theta) / cos(theta);
return tangent;
}
double getResist(void)
{
double resist = 0;
int r1 = 0, r2 = 0, r3 = 0;
printf("Enter three resistors:\n");
scanf("%d%d%d", &r1, &r2, &r3);
resist = 1 / (1 / r1 + 1 / r2 + 1 / r3);
return resist;
}
double equation(void)
{
double x = 0, y = 0, z = 0;
int a = 0;
printf("Enter the a value:\n");
scanf("%d", &a);
printf("Enter the x, y, z values:\n");
scanf("%lf%lf%lf", &x, &y, &z);
y = ((double)2 / (double)3) - y + z * x / (a % 2) + PI;
return y;
}
最后是我的主要功能:
int main(void)
{
double force = 0, volume = 0, distance = 0,
tangent = 0, resist = 0, y = 0;
char encodeTxt;
force = getForce();
volume = getVolume();
encodeTxt = getEncode();
distance = getDistance();
tangent = getTangent();
resist = getResist();
y = equation();
displayResults(force, volume, encodeTxt, distance, tangent, resist, y);
return 0;
}
我希望控制台显示我的结果,但是在从方程式函数中请求最后的x,y z值后,它将停止工作。
答案 0 :(得分:0)
y = ((double)2 / (double)3) - y + z * x / (a % 2) + PI;
我的第一个想法是a可能是偶数,因此a%2 == 0,并且不能除以零。 一旦某物/ 0被评估,该程序就会停止。
您可以在此计算前后尝试打印一些内容,以查看我是否正确。
答案 1 :(得分:0)
这是以下功能引入的零除问题
double getResist(void)
{
double resist = 0;
int r1 = 0, r2 = 0, r3 = 0;
printf("Enter three resistors:\n");
scanf("%d%d%d", &r1, &r2, &r3);
resist = 1 / (1 / r1 + 1 / r2 + 1 / r3);
return resist;
}
我刚刚调试了程序,您正在输入r1,r2和r3作为整数。因此,
1 / r1 + 1 / r2 + 1 / r3 = 0 !
此处将出现“浮点例外”。
解决方案是将r1,r2和r3声明为double。