先解释scanf(%d,&s)
由于你输入的是 1 2 3 4 5 0
%d是要求输入数字 可以由空格 Tab 回车等作为分隔符,
所以s取到的值就为1;多余的值会保留 并分配到下一个scanf 语句中
while((s=1)>0) 条件成立 进入switch((s=1))
其中的break是跳出switch语句;如果没有执行break语句的话,则会执行下一条case后的语句
case 1: 是判断其后跟着的表达式是否与switch(s)中的变量s相同
default: 是除了以上的case结果外 其他的都执行其后的语句
如果相同则执行改case 后的语句
s=1 满足 case 1: 执行其后语句 printf("%d",s+5) 输出6
设屏幕显示结果为变量 str=6
无break不跳出switch继续执行 case 2中的语句printf("%d",s+4)输出5; str=65
遇break跳出循环;
scanf("%d",&s);取到上次保留的数值 2 3 4 5 0中的2, s=2;
while((s=2)>0) 满足条件继续执行
case 1:不成立跳过
case 2:成立 输出6
str=656
break跳出循环
s=3
while(3>0)条件成立
case 1:
case 2:
不成立跳过
case 3: 成立 输出6 str=6566
无break继续
default: 输出4 str=65664
s=4
while(4>0)
default:输出 5 str=656645
while(5>0)
default:输出 6 str=6566456
whle(0>0) 不成立
程序结束屏幕上的结果为 6566456