📅  最后修改于: 2023-12-03 15:42:10.984000             🧑  作者: Mango
这是一道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。
代码的输出结果是什么?
答: 6
修改代码中的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。
上面的程序中,当变量i为5时,j的值是多少?
答: 循环条件为i<5,当i=5时,循环结束,j的值不会变化,仍为6。