为什么会出现错误?
***
***
****
*****
******
这是课程中的例子,老师用的是 for 嵌套来完成的。我想用 switch...case 来完成,语句如下:
#include<stdio.h>
void main()
{
int i;
i=1;
switch(i)
case 1 :
{printf("*",i++);
printf("\n");break;
}
case 2 :
{printf("**",i++);
printf("\n");break;
}
case 3 :
{printf("***",i++);
printf("\n");break;
}
case 4 :
{printf("****",i++);
printf("\n");break;
}
case 5 :
{printf("*****",i++);
printf("\n");break;
}
case 6 :
{printf("******",i++);
printf("\n");break;
}
}
为什么会出现 :error C2046: illegal case 和 error C2043: illegal break 错误?
Switch(){ },Switch少了个花括号,而且break之后直接就跳出来Switch循环了。 运行了一下,程还是需要套一个for,改成下面这样可以正常打印了
#include <stdio.h>
int main()
{
int i;
i = 1;
for (;;)
{
switch (i)
{
case 1:
{
printf("*");
printf("\n");
i++;
continue;
}
case 2:
{
printf("**");
printf("\n");
i++;
continue;
}
case 3:
{
printf("***");
printf("\n");
i++;
continue;
}
case 4:
{
printf("****");
printf("\n");
i++;
continue;
}
case 5:
{
printf("*****");
printf("\n");
i++;
continue;
}
case 6:
{
printf("******");
printf("\n");
i++;
break;
}
}
}
//getchar();
return 0;
} 1.楼主,switch其实并不是一个训环,你可以把它理解为比if更高级的判断语句,因为输出有5行,所以一定要用到循环语句,这里我们可以使用for(;i<=5;)来让他循环5次
2.修改后的代码,代码使用的是int main(),现在的编译器void main快淘汰了,容易报错
#include<stdio.h>
int main()
{
int i;
i=1;
for(;i<=5;)
switch(i)
{
case 1 :
{printf("*",i++);
printf("\n");break;
}
case 2 :
{printf("**",i++);
printf("\n");break;
}
case 3 :
{printf("***",i++);
printf("\n");break;
}
case 4 :
{printf("****",i++);
printf("\n");break;
}
case 5 :
{printf("*****",i++);
printf("\n");break;
}
case 6 :
{printf("******",i++);
printf("\n");break;
}
}
return 0;
}
3.可以使用嵌套的for语句改进代码#include <stdio.h>
int main()
{
int i,j=1;
i = 1;
for(;i<=5;i++)
{
for(j=1;j<=i;j++)
printf("*");
printf("\n");
}
return 0;
} switch-case结构只需要一个大括号,而且遇到break停止(只需要在最后用break即可)
还有不建议把i++写到printf函数里
switch(i)
{
case 1 :
printf("*");
i++;
printf("\n");
case 2 :
printf("**");
i++;
printf("\n");
case 3 :
printf("***");
i++;
printf("\n");
case 4 :
printf("****");
i++;
printf("\n");
case 5 :
printf("*****");
i++;
printf("\n");
case 6 :
printf("******");
i++;
printf("\n");break;
} 谢谢三位的解答! 要选择一个最佳答案,有点让我为难了。二楼的解答就是我的想法 nanqi2333 发表于 2020-7-8 02:39
运行了一下,程还是需要套一个for,改成下面这样可以正常打印了
#include
int main()
谢谢你的解答! 我是初学,还没有学到 continue 语句 巴巴鲁 发表于 2020-7-8 08:33
switch-case结构只需要一个大括号,而且遇到break停止(只需要在最后用break即可)
还有不建议把i++写到pr ...
谢谢你的解答! 老师上课时反复交代,要养成好习惯,哪怕只有一行代码,也用大括号,方便检查,也不易出错
页:
[1]