#include <stdio.h>
int main()
{
int num1, num2, num3;
printf("Enter three integers to find maximum: \n");
scanf("%d%d%d", num1, num2, num3);
switch (num1 > num2)
{
switch (num1 > num3)
{
case 1:
printf("%d is maximum", num1);
break;
switch (num2 > num1)
{
switch (num2 > num3)
{
case 1:
printf("%d is maximum", num2);
break;
default:
printf("%d is maximum", num3);
}
}
}
}
}
这是我在VS Code中编写的switch
语句程序,用于查找3个数字之间的最大值,但它不起作用。我声明了3个变量num1
,num2
,num3
,然后我将num1
与num2
和num3
进行比较,类似地,num2
与num1
和num3
,num3
在default
中。
我们可以写3个数字之间的最大值吗?
2条答案
按热度按时间cfh9epnr1#
对于初学者,
scanf
调用的参数是不正确的。你需要写
一般来说,您应该检查输入是否成功,例如
其次,用户可以输入至少两个彼此相等的数字,它们大于第三个数字。你得考虑到这点。
为了使编写switch语句更简单,使用if语句执行任务将是有用的。他们可以看下面的方式
所以现在使用switch语句重写if语句并不困难。他们可以看下面的方式
在case标签中不使用常量
0
和1
,而可以通过包含头<stdbool.h>
来使用命名常量false
和true
,例如当然,还有其他方法来编写switch语句,但这种方法已经足够清楚了。
这是一个演示程序。
它的输出可能看起来像
演示程序中包含if语句只是为了表明使用if语句和switch语句的结果是相同的。当然,在你的程序中,你应该删除if语句。
rjee0c152#
switch
语句体中缺少case
或default
子句。还要注意,你必须将目标变量的地址传递给
scanf()
,并且你应该测试这个scanf
成功地转换了3个整数:它返回成功转换的次数。以下是修改后的版本:
下面是一个使用单个
switch
语句的替代方案:最后,滥用规则,这里是一个简化的版本,仍然使用
switch
语句,很容易扩展到更大的数字集:为了完整起见,上面的
switch
语句可以重写为空体: