使用此复杂逻辑的switch语句的意外输出

1 c switch-statement

我试图在3个条件下使用switch语句.条件是:

  1. 当a,b和c都为零时,x的任何值都是一个解.打印:x的任何值都是一个解决方案.
  2. 当a和b为零且c不为时,则不存在解.打印:没有解决方案.
  3. 当a为零且b不为零时,唯一的解决方案是x = -c/b.计算x的值并打印解决方案.

当我试图运行我的程序时,它显示错误的结果.我的意见是

a = 0
b = 0
c = 0
Run Code Online (Sandbox Code Playgroud)

所以它应该打印"x的任何值是一个解决方案",但它没有.

我的计划是:

#include <stdio.h>

//Function declarations
void getData (int* a, int* b, int* c);
float calculateX (int a, int b, int c);

//===================================================
int main (void)
{
    //Local declarations
    int a;
    int b;
    int c;
    float x;

    //Statements
    getData (&a, &b, &c);
    calculateX (a, b, c);

    int temp;
    printf("\nEnter an integer and press enter to exit the program: ");
    scanf("%d", &temp);

    return 0;
}

//----------------------------------------------------
void getData (int* a, int* b, int* c)
{
    printf("Enter three integers: ");
    scanf("%d %d %d", a, b, c);
    return;
}

//----------------------------------------------------
float calculateX (int a, int b, int c)
{
    float x;

    printf("Input is: %d %d %d\n", a, b, c);
    switch(a, b, c)
    {
        case 1: (a, b, c == 0);
                printf("Any value of x is a solution.");
                break;
        case 2: (a, b == 0 && c!= 0);
                printf("No solution exists.");
                break;
        case 3: (a == 0 && b!= 0);
                x = (float)(-c/b);
                printf("The value of x is: %.1f", x);
                break;
        default: printf("Cannot calculate.");
    }
    return a, b, c;
}
Run Code Online (Sandbox Code Playgroud)

我的输出是:

Enter three integers: 0 0 0
Input is: 0 0 0
Cannot calculate.
Enter an integer and press enter to exit the program:
Run Code Online (Sandbox Code Playgroud)

Oli*_*rth 7

这不是switch声明的工作方式.它编译,但非常模糊的原因.显然,它在运行时没有达到预期效果.

一般来说,您switch单个表达式上使用语句,每个case标签代表该表达式的一个可能值.例如:

switch (x)
{
case 1:
    // Code here runs when x == 1
    break;
case 2:
    // Code here runs when x == 2
    break;
default:
    // Code here runs for all other values of x
    break;
}
Run Code Online (Sandbox Code Playgroud)

在您的应用程序中,您希望测试多个变量,并以复杂的方式组合它们.没有简洁的方法来做到这一点switch.您应该考虑一组if语句.

  • +1 ......但是有什么关于逗号运算符的模糊内容?;) (2认同)