C++ 程序不向函数返回值

C++ 程序不向函数返回值,c++,function,if-statement,switch-statement,return,C++,Function,If Statement,Switch Statement,Return,我试图做一个牛顿第二定律计算器,当我输入计算值时,什么也没有发生。我不确定它们是否没有返回到主函数或什么。我想做的是让用户输入一个字符,然后由一个包含switch语句的函数获取,在switch语句的情况下,函数调用执行算术的函数,然后,这些函数将向开关函数返回一个值,开关函数将向主函数返回一个值,然后主函数将该值打印到屏幕上 // Newtons2ndlaw.cpp : This file contains the 'main' function. Program execution begi

我试图做一个牛顿第二定律计算器,当我输入计算值时,什么也没有发生。我不确定它们是否没有返回到主函数或什么。我想做的是让用户输入一个字符,然后由一个包含switch语句的函数获取,在switch语句的情况下,函数调用执行算术的函数,然后,这些函数将向开关函数返回一个值,开关函数将向主函数返回一个值,然后主函数将该值打印到屏幕上

// Newtons2ndlaw.cpp : This file contains the 'main' function. Program 
execution begins and ends there.
//

#include "pch.h"
#include <stdio.h>
#include <stdlib.h>
#include<iostream>

void varselect(char, float *);

void force(float *);

void acceleration(float *);

void mass(float *);

int main()


{

    float eqvalue;
    char operation;

    printf("Welcome to Newtons 2nd law solver!\n");

    system("PAUSE");

    printf("Would you like to solve for a Force, Acceleration or Mass?\nType 'F'(for force), 'A'(for acceleration), 'M'(for mass) to select a variable\n");

    scanf_s("%c", &operation,1);
    if (operation == 'f' || operation == 'F' || operation == 'a' || operation == 'A' || operation == 'm' || operation == 'M')           //logic for determing what the user entered
    {}
    else
    {
        printf("Please enter a valid character.");
    }

     varselect(operation,&eqvalue);             //function call to receive float value from varselect function

     if (operation == 'f' || operation == 'F')              //{
     {
         printf("The force = %f",eqvalue);
     }
                                                                //this block determines what character string to display with calculated float value                                    
     else if (operation == 'a' || operation == 'A')                         
     {
         printf("The acceleration = %f", eqvalue);
     }

     else if (operation == 'm' || operation == 'M')
     {
         printf("the Mass = %f", eqvalue);
     }
}                                                           //}

void varselect(char x, float *j)                            
                                                                    //this function recieves the user inputed char value and returns the calculated float value to function call. 
{                                                                   //switch allows program to "understand" users unwillingness to press shift before a,f,m like printf statement tells them to do.
    switch (x)                                                      // also allows each variable to call its own function.
    {
    case 'f':
        float getval;
        force(&getval);
        *j = getval;
        return;
        break;
    }

    switch (x)
    {
    case 'F':
        float getval;
        force(&getval);
        *j = getval;
        return;
        break;
    }

    switch (x)
    {
    case 'a':
        float getval;
        acceleration(&getval);
        *j = getval;
        return;
        break;
    }

    switch (x)
    {
    case 'A':
        float getval;
        acceleration(&getval);
        *j = getval;
        return;
        break;
    }

    switch (x)
    {
    case 'm':
        float getval;
        mass(&getval);
        *j = getval;
        return;
        break;

    }

    switch (x)
    {
    case 'M':
        float getval;
        mass(&getval);
        *j = getval;
        return;
        break;
    }
    return;
}

void force(float *fma)                                      
{
    float acceleration, mass;

    printf("Enter a value for 'Mass', then 'Acceleration'.\n\n");
    scanf_s("%f\n%f\n", &mass, &acceleration, 2);

        *fma = mass * acceleration;

        return;

}

void acceleration(float *afm)
{                                                                                                                           //functions to take input from user and return float to varselect function
    float force, mass;

    printf("Enter a value for 'Force', then 'Mass'.\n\n");
    scanf_s("%f\n%f\n", &force, &mass, 1);

        *afm = force / mass;

    return;

}

void mass(float *fam)
{
    float force, acceleration;

    printf("Enter a value for 'Force', then 'Acceleration'.\n\n");
    scanf_s("%f\n%f\n", &force, &acceleration, 1);

    *fam = force / acceleration;

    return;
}

我认为这与你的代码无关。。。我能说的是,如果你有一个int、double或float函数,它的工作原理与void相同。你可以输入你需要的参数,比如牛顿第二定律或者你需要的任何东西。在那里你可以添加开关功能。在切换之后,返回输出。 在{}之后的开关之后,输入返回输出或要返回的变量的名称。 要在控制台上使用它,只需如下所示:
你需要学习如何调试你自己的程序吗。你需要创建一个。在哪里转储所有程序并说它不工作的问题将作为非主题关闭。这不是开关应该如何使用。在varselect函数中最多需要一个switch语句。与void forcefloat*fma相比,更喜欢float force。该函数的意图更加明确。首先,很明显,您正在计算并返回。在第二种情况下,在阅读代码之前,您不知道该指针发生了什么。可能是函数需要一个数组。可能正在更新一个值,但在这种情况下,它应该是void forcefloat&fma。这毕竟是C++。这就引出了一个问题,这些printf和scanf_的东西是怎么回事?这甚至不是一个符合标准的“scanf”。很抱歉,这个问题是如何提出的,这是我第一次来到这个论坛。这学期我要上一门关于C的课程,这个课程只是我对它的探索。我明白你对switch语句的看法了!我也会尝试使用你建议的功能!我使用scanf_s的原因是因为在visual中,它在使用scanf时给了我一个编译器错误。它希望我使用scanf_,这样我就可以指定缓冲区限制。除了printf,我应该使用什么?我什么都不知道,因为这是我第一次接触C编程。