更多“有以下程序 main( ) { int i=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,%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的值保持不变。

  • 第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题:

    以下程序的输出结果是#include <conio.h>#include <stdio.h>#define M 100void fun(int m, int *a, int *n){ int i,j=0; for(i=1;i<=m;i++) if(i%7==0||i%11==0) a[j++]=i; *n=j;}main(){ int aa[M],n,k; clrscr(); fun(100,aa,&n); for(k=0;k<n;k++) if((k+1)%20==0)printf("\n"); else printf("%d",aa[k]); printf("\n"); }


    正确答案:77
    在本题中,程序首先定义一个宏M,然后定义一个fun函数,函数带有三个形参,分别是一个整型形参m和两个整型指针形参a、n。在函数体中,首先定义两整型变量i和j,并给j赋初值为0,然后执行循环,循环体中首先是一个条件判断语句,如果结果为真,则说明变量i能同时被7和11整除,并将变量i保存到数组中,循环结束后,将数组中元素的个数通过指针变量n进行返回。通过分析可以知道,fun函数的作用是求取1到m中能同时被7和11整除的整数,并将结果保存到数组a中。
    在主函数中,首先定义了两个整型变量和一个整型数组aa,然后调用clrscr()函数对文本模式窗口进行清除操作。接着调用fun函数,根据上面我们对fun函数的分析,要计算1~100之间能同时被7和11整除的整数,很显然,这样的数只有77一个,那么此时数组aa中只有一个元素为77,而n的值是1。
    接着执行for循环,从程序中不难看出循环的作用是将数组aa中的元素按一定的规则输出,其规则为每行最多只能输出20个值。结合上面的分析,数组aa中只有一个元素为77,因此,本题程序的最终输出结果为77。

  • 第5题:

    以下程序输出结果是: 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。