正确答案: A
a=2,b=1
题目:有如下程序main() { int x=1,a=0,b=0; switch(x) { case 0: b++; case 1: a++; case 2: a++;b++; } printf("a=%d,b=%d\n",a,b);}该程序的输出结果是
解析:C语言规定case后面跟的必须是整型常量表达式。进入case后,如果没有遇到break语句就会一直往下执行,后面其他case或default分支的语句也会被执行到,直到遇到break,或者执行到整个switch语句块的末尾。题目中给出了三个case语句:case 0、case 1、case 2。当x为1时,从case 1语句开始执行,因为没有break语句,将一直执行到函数末尾结束,即执行case 1、case 2两条语句。执行完case 1时,a=1,b=0;执行完case 2时,a=2,b=1。
查看原题
举一反三的答案和解析:
[单选题]有以下程序 #include iostream> using namespace std; class MyClass { public: MyClass(int n) { number=n; } // 拷贝构造函数 MyClass(MyClass& other) {number=other. number;} -MyClass() {} private: int number; }; MyClass fun(MyClass p) { MyClass temp(p); return temp; } int main() { MyClass obj1(10), obj2(0); MyClass obj3(obj 1); obj2=fun(obj3); return 0; } 程序执行时,MyClass 类的拷贝构造函数被调用的次数是______ 次。
4
解析:解析:对象初始化和复制时,都要拷贝构造函数。所以程序执行一共调用了4次构造函数
[单选题]下列能够交换变量X和Y值的程序段是( )。
Z=X:X=Y:Y=Z
解析:本题以Z为中间变量,交换X、Y的值。