我试图在3个条件下使用switch语句.条件是:
当我试图运行我的程序时,它显示错误的结果.我的意见是
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)
这不是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语句.
| 归档时间: |
|
| 查看次数: |
862 次 |
| 最近记录: |