这是由C语言的特性决定的,C是结构化语言,虽然它不是完全的块结构化。goto顺序执行语言的典型控制语句。

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。 -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。 -毛泽东
循环总有结束条件吧。
否则就是一个死循环了。
可以用while语句,
不对吧,你怎么没有判断条件呢?
while(1)
{scanf("%d",&a);
if(a>=1&&a<=8)
break;
printf("error input:\n");
}