参考答案和解析
正确答案:C
更多“有以下程序 main() {inti=1,j=1,k=2; if((j++||k++)&&i++) printf("%d,%d,%d\n ”相关问题
  • 第1题:

    有以下程序: main() { int i=1,j=1,k=2; if((j++||k++)&&i++) printf("%d,%d,%d\n",i,j,k); } 执行后输出结果是( )。

    A.1,1,2

    B.2,2,1

    C.2,2,2

    D.2,2,3


    正确答案:C
    解析:首先计算if语句后面的表达式值,先计算运算符&&前面括号里的||运算。在||运算中先计算j++,值为1(j的值为2),为真,后面的k++将不再计算,k的值依旧为2。计算&&后面的表达式i++,值为1(i的值变为2)。整个表达式的值为真,所以执行后面的输出语句,最后输出的i,j和k的值为2、2和2。所以,C选项为所选。

  • 第2题:

    以下程序输出结果是: main() {int i=1,j=1,k=2; if((j++||k++) && i++) printf(“%d,%d,%dn”,i,j,k); } ()

    A.1,1,2

    B.2,2,1

    C.2,2,2

    D.2,2,3


    1 3 2 主函数中用了一个for循环,for循环里嵌套了一个switch语句,for循环了三次,当i=9时,i/10=0,执行switch语句中case0分支,m和n的值各加1,变为1和1,然后遇到break语句,退出switch语句;当i=10,i/10=1,执行switch语句中default分支,使k和n的值各加1变为1和2,退出switch语句;当i=11时,i/10=1,执行switch语句中default分支,k和n的值各加1变为2和3,退出switch语句,循环结束。故该空格处应该填132。

  • 第3题:

    有以下程序 main() { int i=1,j=1,k=2; if((j++‖k++)&&i++) printf("%d,%d,%dn",i,j,k); } 执行后输出结果是()。

    A.1,1,2

    B.2,2,1

    C.2,2,2

    D.2,2,3


    C 解析:程序中for循环了三次,第一次i=O,执行switch语句中case0:分支,直到遇到default语句,退出switch,这里共执行了3个输出语句分别输出0、0、0,第二次循环i=1,switch语句中没有匹配的分支,故只执行default语句输出1,退出switch语句;第三次循环i=2,从switch语句中的case2:开始执行,共执行了两个输出语句输出2、2。最后输出的结果为000122。所以, 4个选项中选项C符合题意。

  • 第4题:

    有以下程序 main() { int i=1,j=1,k=2; if((j++‖k++)&&i++) printf("%d,%d,%d\n",i,j,k);} 执行后输出结果是

    A.1,1,2

    B.2,2,1

    C.2,2,2

    D.2,2,3


    正确答案:C
    解析:该题目的关键是要搞清楚“&&”和“‖”两个逻辑运算符的运算功能。运算符“&&”和“‖”是双目运算符,要求有两个运算量。且规定逻辑与运算中,只有前面运算量的值为真时,才需要判别后面的值。只要前面为假,就不必判别后面的值。而逻辑或则为只要前为真,就不必判别后面的值;只有前为假,才判别后。本题中j++值为真,不进行k++的运算,所以k的值保持不变。

  • 第5题:

    7、以下程序运行后的输出结果是 int i=1,j=1,k=2; if((j++||k++)&&i++) printf("%d %d %d\n",i,j,k);

    A.2 2 2

    B.2 2 1

    C.2 2 3

    D.1 1 2


    试题7分析 a%=9相当于a=a%9=37%9=1。 试题7答案 1