📜  门| GATE CS 1999 |问题18(1)

📅  最后修改于: 2023-12-03 15:42:10.984000             🧑  作者: Mango

GATE CS 1999 | 问题18

这是一道GATE CS 1999年的考题,需要对给定的代码进行分析并回答问题。以下是代码片段:

#include<stdio.h>
int main(){
    int i=0,j=0;
    for(i=0;i<5;i++){
        switch(i){
            case 0: j+=i/2;break;
            case 1: j+=i%2;break;
            case 2: j+=i*2;break;
            case 3: j-=i;break;
            case 4: j+=i;break;
            default: j=0;break;
        }
    }
    printf("%d",j);
    return 0;
}
代码分析

在这段代码中,我们定义了i和j两个整型变量并初始化i=0,j=0。然后开始一个for循环,循环条件为i<5,i每次递增1。

在循环体内,我们使用了switch语句对变量i进行了判断。当i=0时,执行j+=i/2,即j不变。当i=1时,执行j+=i%2,即j变为1。当i=2时,执行j+=i*2,即j变为5。当i=3时,执行j-=i,即j变为2。当i=4时,执行j+=i,即j变为6。最后执行default语句,将j赋值为0。

循环结束后,我们用printf函数输出j的值,即6。

回答问题
问题18a

代码的输出结果是什么?

答: 6

问题18b

修改代码中的default语句,使得当变量i为负数时,j的值加上100。

答:

#include<stdio.h>
int main(){
    int i=0,j=0;
    for(i=0;i<5;i++){
        switch(i){
            case 0: j+=i/2;break;
            case 1: j+=i%2;break;
            case 2: j+=i*2;break;
            case 3: j-=i;break;
            case 4: j+=i;break;
            default: if(i<0) j+=100; else j=0;break;
        }
    }
    printf("%d",j);
    return 0;
}

以上是修改后的代码,我们把default语句改为了一个if语句,当i<0时,j的值加上100,否则将j赋值为0。

问题18c

上面的程序中,当变量i为5时,j的值是多少?

答: 循环条件为i<5,当i=5时,循环结束,j的值不会变化,仍为6。