Re: [课业] 铁路 107 高员三级 程式语言 第五题

楼主: utamaru (IN OTAKU WE TRUST)   2018-06-19 17:17:30
※ 引述《usisiu (LOOK)》之铭言:
: 题目出处:107年 铁路特考 高员三级 资讯处理 程式语言 第五题
: (一)请问下列C程式执行的结果是什么? (10分)
: #include <stdio.h>
: int a,b;
: void main(){
: a=4;
: b=30;
: printf("Before the switch statement, a=%d.\n",a);
: switch(a){
: case 1:a=a*10;break;
: case 2:a=a*10;break;
: case 3:a=a*10;
: while(a<b) case 4:{a=a+5;}break;
: case 5:a=a*10;break;
: default:
: b=a*10;break;
: }//end of switch
: printf("after the switch statement, a=%d.\n",a);
: }
: 疑惑点:
: 我在考试的时候,看不懂 while(a<b) case 4:{a=a+5;}break;
: 所以直接跳过,直接看到 default: b=a*10;break; 这一段,
: 因此我的答案是写
: Before the switch statement, a=4.
: after the switch statement, a=4.
: 但是我用编译器跑过一次,发现答案是
: Before the switch statement, a=4.
: after the switch statement, a=34.
: 怀疑跟 while(a<b) case 4:{a=a+5;}break; 这一句程式码有关
: 但是我又无法解释为什么,第一次看到这一种程式码,
: 请问 while(a<b) case 4:{a=a+5;}break; 这一段程式码要如何解释?
: 先谢谢各位先进
while( A.条件式 )
{B.当条件成立时,就重复做的事}
while(a<b) case 4:{a=a+5;}break;
一开始a=4 b=30 条件成立 a=4+5=9
a=9 b=30 条件成立 a=9+5=14
a=14 b=30 条件成立 a=14+5=19
a=19 b=30 条件成立 a=19+5=24
a=24 b=30 条件成立 a=24+5=29
a=29 b=30 条件成立 a=29+5=34
a=34 b=30 条件不成立 离开while循环 遇到break 离开switch
上面的结果 是把程式码改写成下面土法炼钢出来的
while (a<b ) case 4:{a=a+5; printf("in while loop, a= %d.\n", a);} break;

Links booklink

Contact Us: admin [ a t ] ucptt.com