以下程序执行输出结果第一行为?第二行为?
发布网友
发布时间:2022-07-26 07:29
我来回答
共1个回答
热心网友
时间:2023-10-18 09:39
我向你表示道歉,不该这么傲慢无礼,而且今天重新解释程序的时候才发现昨天回答有误。
我们直接看for循环:
第一次循环x=5,x%4的结果是1,所以执行第一个printf()语句,以十进制形式输出5;然后x的值变为6,由于case p1 语句块缺少break;语句,程序将继续和后续的分支语句比较,这样就到了default语句,将x的值加1,变为7。此时就跳出了switch语句的作用域,执行第二个printf()语句。以八进制形式输出7(此时它和十进制的7等价)并换行。
第二次进行for循环开始的时候,x的值为7,将其加1后进入循环,x%4的结构不满足case p1和case p2,所以x将自增1,变为9。第二个printf()语句以八进制形式输出9。将9化为二进制:00,001,001,从右到左每三位转化成八进制,就是11。要是这样解释你还不懂,还是回去翻翻书。
同第二次,第三次进入循环体的时候x=10,x%4=2,转到第二个case语句,使x自增1并跳出switch语句的作用域,执行第二个printf()语句以八进制形式输出11。即13.(00001011=>13)
..........我说的不含糊啊。
我可以给你更详细的解释,但你得给分 ^_^,虽然我分数并不是我回答问题的目的,但你总得对回答者给予肯定。
57
11
13
第一行的5是第一个printf()语句以十进制的形式输出的,第一行的7是第二个printf()语句以八进制的形式输出的。
第二行的11是第二个printf()语句以八进制的形式输出的。
第三行的13第二个printf()语句以八进制的形式输出的