宝贝编程学生在这里。一项作业要求我使用几个循环从 1 到 100 进行计数,并且在其中一个循环中,我必须包含一个 switch 语句,该语句根据条件打印一些内容。 这是任务的内容: "创建一个满足以下要求的基本程序:
我可以很好地完成循环语句,我可以编写 switch 语句,但是将 switch 语句放入已经在计数的循环中似乎是不可能的。根据我的理解,switch 语句中的 case 必须是整数值(如“1”),不能是赋值(如“counter <= 10”)。我做了很多研究,但我的教授或任何 youtube 教程都没有帮助或澄清。我在这里不知所措;我对 switch 语句有什么不理解的地方吗?我感到很失落。
答案 0 :(得分:2)
在这种情况下使用 switch() case
不是一个好主意,这表明您的老师对练习没有更好的主意:)
另一种数学
for (int i = 1; i <= 100; i++)
{
switch (i/10 + !!(i%10) + i/20 + (i > 21))
{
case 1:
printf("%d is less than or equal to 10\n", i);
break;
case 2:
printf("%d is greater than or equal to 11 but less than 20\n", i);
break;
case 3:
case 4:
/* nothing printed for 20 or 21? */
break;
default:
/* cases 22 to 100 */
printf("%d is greater than 21\n", i);
break;
}
}
作为其他答案的补充,您还可以使用 gcc 扩展名:
for (int i = 1; i <= 100; i++)
{
switch (i)
{
case 1 ... 10:
printf("%d is less than or equal to 10\n", i);
break;
case 11 ... 19:
printf("%d is greater than or equal to 11 but less than 20\n", i);
break;
case 20:
case 21:
/* nothing printed for 20 or 21? */
break;
default:
/* cases 22 to 100 */
printf("%d is greater than 21\n", i);
break;
}
}
代码从@IanAbbot 回答中被部分窃取(由于懒惰)
但它不是标准的 C。
答案 1 :(得分:1)
在同一个语句之前可以有多个 case
标签:
for (int i = 1; i <= 100; i++)
{
switch (i)
{
case 1: case 2: case 3: case 4: case 5:
case 6: case 7: case 8: case 9: case 10:
printf("%d is less than or equal to 10\n", i);
break;
case 11: case 12: case 13: case 14: case 15:
case 16: case 17: case 18: case 19:
printf("%d is greater than or equal to 11 but less than 20\n", i);
break;
case 20:
case 21:
/* nothing printed for 20 or 21? */
break;
default:
/* cases 22 to 100 */
printf("%d is greater than 21\n", i);
break;
}
}
答案 2 :(得分:0)
作为一个想法。您可以使用条件运算符。
#include <stdio.h>
int main(void)
{
while ( 1 )
{
printf( "Enter a non-negative number (0 - exit): ");
unsigned int n;
if ( scanf( "%u", &n ) != 1 || n == 0 ) break;
switch ( n <= 10 ? 0 : ( n < 20 ? 1 : ( 21 < n ) ? 2 : 3 ) )
{
case 0:
puts( "The number is less than or equal tp 10" );
break;
case 1:
puts( "The number is less than 20" );
break;
case 2:
puts( "the number is greater than 21" );
break;
case 3: default:
break;
}
}
return 0;
}
程序输出可能看起来像
Enter a non-negative number (0 - exit): 10
The number is less than or equal tp 10
Enter a non-negative number (0 - exit): 11
The number is less than 20
Enter a non-negative number (0 - exit): 22
the number is greater than 21
Enter a non-negative number (0 - exit): 21
Enter a non-negative number (0 - exit): 0