选择结构的嵌套
2011_3_C_16:阅读程序
1 2 3 4 5 6 7 8 9 10 11 | #include <stdio.h> int main(int argc, char *argv[]) { int x=1,y=0; if (!x) y++; else if(x==0) if (x) y+=2; else y+=3; printf("%d\n",y); return 0; } |
如果使用C-Free进行代码格式化,就得到下面的代码,结构清晰了很多。
1 2 3 4 5 6 7 8 9 10 11 | #include <stdio.h> int main(int argc, char *argv[]) { int x=1,y=0; if (!x) y++; else if(x==0) if (x) y+=2; else y+=3; printf("%d\n",y); return 0; } |
本题关键是 if-else 的匹配, else总是和最近的 if 相匹配
1 2 3 4 5 6 7 8 9 10 11 12 | #include <stdio.h> int main(int argc, char *argv[]) { int x=1,y=0; if (!x) y++; else if(x==0) { if (x) y+=2; else y+=3; } printf("%d\n",y); return 0; } |
本题主要考察的知识点为if语句的嵌套,变量x的值为1,既不满足表达式!x为真,也不满足表达式x==0,故不执行if语句,而直接执行printf函数输出y的值0。