单选题有如下程序:#include main(){ int a =0,b=1; if(++a==b++)  printf(T); else  printf(F); printf(a=%d,b=%d,a,b); printf();}程序运行后的输出结果是(  )。A Ta=0,b=1B Fa=1,b=2C Ta=1,b=2D Fa=0,b=2

题目
单选题
有如下程序:#include main(){ int a =0,b=1; if(++a==b++)  printf(T); else  printf(F); printf(a=%d,b=%d,a,b); printf();}程序运行后的输出结果是(  )。
A

Ta=0,b=1

B

Fa=1,b=2

C

Ta=1,b=2

D

Fa=0,b=2


相似考题
更多“有如下程序:#include <stdio.h>main(){ int a =0,b=1; if(++a==b++)  ”相关问题
  • 第1题:

    下列程序的输出结果是() include main() {int a=3,b=2,c=1; if(a

    下列程序的输出结果是( )

    #include<stdio.h>

    main()

    {int a=3,b=2,c=1;

    if(a<b)

    if(b<0) c=0;

    else c++;

    printf("%d\n",c);

    }

    A.0

    B.2

    C.1

    D.3


    正确答案:C
    解析:本题考查if语句。第一个if语句,先判断条件,发现ab不成立,不再执行下列的语句,直接执行最后的printf输出语句,然后结束程序,整个过程c的值没有发生变化。

  • 第2题:

    有如下程序:includemain(){int a=2,b= -1,c=2; if(a

    有如下程序: #include <stdio.h> main() { int a=2,b= -1,c=2; if(a<b) if(b<0) c=0; else c++; printf("%d\n",c); } 该程序的输出结果是

    A.0

    B.1

    C.2

    D.3


    正确答案:C
    解析:if语句嵌套使用时,else总是与它上面最近的if配对。因此,本题中先判断(ab),因为表达式的值为0,故不执行下面的if语句,直接跳到printf行,c值没有改变。

  • 第3题:

    有如下程序:includemain(){int x=1,a=0,b=0; switch(x) {casc 0:b++;case 1:a++;case

    有如下程序: #include<stdio.h> main() { int x=1,a=0,b=0; switch(x) { casc 0:b++; case 1:a++; case 2:a++;b++; } printf("a=%d,b=%d\n",a,b); } 该程序的输出结果是( )。

    A.a=2,b=1

    B.a=1,b=1

    C.a=1,b=0

    D.a=2,b=2


    正确答案:A
    解析:该程序的关键是要搞清楚程序执行的路线。由于x的值等于1,所以在switch语句中,程序从case1后面的语句开始执行。由于case1后面没有break语句,所以程序顺序执行case2后面的语句。程序共执行了三条语句:a++;a++;b++;所以,变量a和b最后的值分别为2和l。选项A)正确。

  • 第4题:

    有以下程序 include main() { int y=9; for( ; y>0; y--) if(y%

    有以下程序 #include <stdio.h> main() { int y=9; for( ; y>0; y--) if(y%3==0) printf("%d",--y); } 程序的运行结果是

    A.741

    B.963

    C.852

    D.875421


    正确答案:C
    解析:本题首先令y为9,然后通过一个for循环,当y还大于0则循环,每次循环让y递减1。循环体中是一条if语句,通过%运算符计算每当y能被3整除的时候,输出--y的值,即先将y减1,然后输出y的值。故当y等于9、6、3时会输出,输出值分别为8、5、2。所以应该选择C。

  • 第5题:

    有以下程序 include main() { int a=1, b=2, c=3, x; x=(a^b)&c; pri

    有以下程序 #include <stdio.h> main() { int a=1, b=2, c=3, x; x=(a^b)&c; printf("%d\n",x); } 程序的运行结果是

    A.0

    B.1

    C.2

    D.3


    正确答案:D
    解析:在C语言中,整型数据在内存中是按二进制形式存放的,位运算就是直接对这些二进制进行操作的一系列运算符。例如题目中a、 b、c的值分别为1、2、3,那它们在内存中存放的样子就是:0001、0010、0011(由于数据不大,int类型本来要占4字节也就是32位二进制的,这里就省写为4位了)。
    “^”运算符的作用是:按位异或。意思是:两个操作数对应的二进制位如果相异,则结果对应的二进制位为1,否则结果对应二进制位为0。所以0001^0010=0011。“&”运算符的作用是:位与。意思是:如果两个操作数对应的二进制位同时为1,则结果对应的二进制位为1,否则结果对应二进制位为0。所以0011&0011=0011,也就是十进制的3,故本题最终输出结果为3,应该选择D。

  • 第6题:

    有以下程序:include include main( ) {char a[ 7 ] = "a0 \0a0 \0";int i,

    有以下程序:#include <stdio.h>#include <string.h>main( ) { char a[ 7 ] = "a0 \0a0 \0"; int i,j; i = sizeof(a); j = strlen(a); printf(" % d %d \n" ,i,j); }程序运行后的输出结果是( )。

    A.22

    B.76

    C.72

    D.62


    正确答案:C
    解析:C语言.中以,'\0'作为字符串的结束符,且strlen函数计算的是,'\0',字符前的所有字符的个数,故本题中strlen(a)应为2。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。sizeof运算符是计算变量或数组所分配到的内存空间的大小,所以本题的sizeof(a)为7。

  • 第7题:

    下列程序执行后输出的结果是()includef(int A){ int b=0;static c=3;a=c++,b++;return

    下列程序执行后输出的结果是( ) #include<stdio.h> f(int A) { int b=0; static c=3; a=c++,b++; return(A) ; } main() { int a=2,i,k; for(i=0;i<2;i++) k=f(a++); printf("%d\n",k); }

    A.3

    B.0

    C.5

    D.4


    正确答案:D

  • 第8题:

    下述程序的输出结果是()。include int fun(int a){intb=0;staticintc=3;b++,c++;return

    下述程序的输出结果是( )。 # include <stdio.h> int fun( int a) { int b=0; static int c=3; b++,c++; return a+b+c; } void main() { int x=2,i; for(i=1;i<3;i++) printf("%d",fun(x)); }

    A.56

    B.67

    C.78

    D.89


    正确答案:C
    解析:本题主函数中的for循环会循环两次,即输出连续两次调用fun(2)的返回值。在fun()函数中定义了一个静态变量c,第一次调用fun()时c被初始化为3,然后自增为4,最后输出a+b+c为2+1+4=7。由于静态变量的生存周期为整个程序执行周期,所以第二次调用fun()时c的值为4,然后自增为5,故最后输出a+b+c为2+1+5=8。所以程序的输出结果是78,应该选择C。

  • 第9题:

    有如下程序#include "stdio.h"main(){ int a,b,m; for(a=5;a>=1;a--) { m=0;  for(b=a;b<=5;b++)  m=m+a*b; } printf("%d\n",m);}上述程序的运行结果是A.30 B.15 C.20 D.10


    正确答案:B
    在本题中,程序首先定义了三个整型变量,然后执行for循环,从循环的结构条件我们可以知道,循环执行了5次,循环变量a的值分别为5,4,3,2,1。
    当a=5时,m=0,执行第二层循环,循环开始时,是变量a的值赋给循环变量b,而且只要循环变量b的值小于等5,循环继续,循环变量b的值每经过一次循环后自加1,这时由于b=a=5,循环只执行一次,m=m+a*b可描述为m=0+5*5=25。如果我们一直这样分析下去,由于循环的次数太多,那么费时肯定也很多,而且还容易出错,因此,我们需要找到新的解决问题的办法。
    从我们对上一次循环执行过程的分析可以看出,第一层循环,每次在最前面执行语句m=0操作,即将我们前面执行的m结果值进行清0操作,使其不影响后面m的值,程序最终要输出的m是当a=1时那次循环计算到的m的值。
    当a=1时,b的初值为1,第二层循环执行5次,第一次计算到的m=0+1*1=1;第二次计算到的m=1+1*2=3;第三次计算到的m=3+1*3=6;第四次计算到的m=6+1*4=10;第五次计算到的m=10+1*5=15。整个过程其实相当于求1~5的和。
    因此,程序最终的输出结果为15,答案选B。

  • 第10题:

    有下列程序:includemain(){int x=1,y=0,a=0,b=0;switch(x){ case 1:switch(y){ case 0

    有下列程序: #include <stdio.h> main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0:a++;break; case 1:b++;break; } case 2: a++;b++;break; case 3: a++;b++; } printf("a=%d,b=%d\n",a,B) ; } 程序的运行结果是( )。

    A.a=1,b=0

    B.a=2,b=2

    C.a=1,b=1

    D.a=2,b=1


    正确答案:D
    解析:本题考查的是用switch语句实现多分支选择结构,首先进入第一个switch(x)判断,进入case 1中进行嵌套判断,如果switch(y)也成立,a自加1,遇到break,退出嵌套,接着执行case 2,a自加为2,b自加为1,遇到break,结束循环,此时a=2,b=1,故选项D)正确.

  • 第11题:

    下列程序执行输出的结果是()。 include f(int a) {int b=0; static c=3; a=C++;b++; re

    下列程序执行输出的结果是( )。

    #include<stdio.h>

    f(int a)

    { int b=0;

    static c=3;

    a=C++;b++;

    return(a);

    }

    main()

    { int a=2,i,k;

    for(i=0;i<2;i++)

    k=f(a++);

    printf("%d\n",k);

    }

    A.3

    B.4

    C.5

    D.6


    正确答案:B
    解析:本题考查函数调用时的参数传递。在函数调用时,static变量在函数调用结束后所做的所有变化均保持(即上次调用结束时的值)。
      在主函数中,第一次循环,i=0,调用k-f(a++)=f(2),调用完之后才将a加1,a变为3,在f(2)中,先将c=3赋值给a返回,然后将c加1,得到k=a=3,c=4。
      第二次循环,i=1,调用k=f(a++)=f(3),调用完之后才将a加1,a变为4,在f(3)中,先将c=4赋值给a返回,然后将c加1,得到k=a=4,c=5。

  • 第12题:

    有以下程序,程序执行后,输出结果是【】include void fun(int*A) {a[0]=a[1];} main() {i

    有以下程序,程序执行后,输出结果是【 】

    include<stdio.h>

    void fun(int*A)

    { a[0]=a[1];}

    main()

    { int a[10]={10,9,8,7,6,5,4,3,2,1,},i;

    for(i=2;i>1=0;i-) fun(&a[i]);

    for(i=0;i<10;i++) printf("%d,a[i]);

    printf("\n");

    }


    正确答案:7777654321
    7777654321 解析:本题主要考查函数的调用,第—次调用把数组元素a[2]的地址赋给a,此时a[1]即是原数组的a[3]等于7,再执行赋值语句a[0]=a[1],则a[0]和a[1]中的值都是7,然后再把这个值返回给a[2]同样地第二次调用的时候函数返回值也是7,第三次调用返回值也是7,因此数组的前4个元素,即对a[0]、a[1]、a[2]和a[3]的值都为7,当执行第二个for循环时输出数组中所有元素的值7777654321。

  • 第13题:

    下列程序的输出结果是()。 include f(int a) {int b=0; static int c=4; a=c++;b++; re

    下列程序的输出结果是( )。

    #include<stdio.h>

    f(int a)

    { int b=0;

    static int c=4;

    a=c++;b++;

    return(a);

    }

    main()

    { int a=2,i,c;

    for(i=0;i<2;i++)

    C=f(a++);

    printf("%d\n",c);

    }

    A.4

    B.7

    C.6

    D.5


    正确答案:D
    解析:本题考查静态变量的使用方法和for循环。在函数调用时,static变量在函数调用结束后所作的所有变化均不保持,所以当i=1时,第2次进入f函数时c=5,所以最终main函数中c的值为5。

  • 第14题:

    有以下程序 include define F(X,Y) (X)*(Y) main( ) { int a=3, b=4; prin

    有以下程序

    #include <stdio.h>

    #define F(X,Y) (X)*(Y)

    main( )

    { int a=3, b=4;

    printf("%d\n", F(a++, b++));

    }

    程序运行后的输出结果是

    A.12

    B.15

    C.16

    D.20


    正确答案:A
    解析:本题考查了带参数的宏定义。参数只是进行简单的替换而不是把其值求出后替换形式参数。本题中用a++替换X,用b++替换Y,再求(a++)*(b++)的值。

  • 第15题:

    有如下程序:includevoid main(){int x=1,a=0,b=0;switch (x){Case 0: b++;Case 1:

    有如下程序:#include<iostream.h>void main(){int x=1,a=0,b=0;switch (x){Case 0: b++;Case 1: a++;Case 2: a++; b++;}cout<<"a="<<a<<","<<"b="<< b;}该程序的输出结果是( )。

    A.a=2,b=1

    B.a=1,b=1

    C.a=1,b=0

    D.a=2,b=2


    正确答案:A

  • 第16题:

    有以下程序 include int a=1; int f(int c) { stati

    有以下程序 #include <stdio.h> int a=1; int f(int c) { static int a=2; c=c+1; return (a++) + c; } main() { int i, k=0; for(i=0;i<2;i++) { int a=3; k += f(a); k +=a; printf("%d\n",k); }

    A.14

    B.15

    C.16

    D.17


    正确答案:A
    解析:静态局部变量的作用域跟一般局部变量相同,都是从声明处开始到声明所在函数或语句块结束为止。但静态局部变量的生存周期却是从第1次执行到该静态局部变量的声明语句时起,直到程序结束。而—般局部变量的生存周期到离开它的作用域时就结束了。本题的f()函数中static int a=2;语句就声明了一个静态局部变量a,并初始化为2。主函数中,通过一个for循环连着调用了2次f()函数。两次调用形参c都为3,f()函数中让c增1变为4,然后输出(a++) +c,第1次调用a为2,所以输出结果为3+4=6,而第2次调用a被上次调用时的++运算符增1,所以为3,输出结果为3+4=7。所以主函数for循环结束后,k的值是13,下面一条k+=a;语句中的a是全局变量a,值为1。故最终输出结果是14,应该选择 A。

  • 第17题:

    下列程序执行输出的结果是______。 include f (int a) {int b=0;static c=7;a=c++; b++

    下列程序执行输出的结果是______。

    include <stdio.h>

    f (int a)

    { int b=0;

    static c=7;

    a=c++; b++;

    return (a);

    }

    main()

    { int a=2,i,k;

    for(i=0;i<2;i++)

    k=f(a++);

    printf("%d\n", k);

    }


    正确答案:8
    8 解析:第1次for循环,i=0,调用函数f(2),然后将a的值加1,在f()函数中,变量c为static类型,所以c=8;第2次for循环, i=1,调用函数f(3),然后将a的值加1,调用函数f(3)时,a=c++=8,所以k=8。

  • 第18题:

    有以下程序:include main( ){int a=1,b;for(b =1;b <=10;b++){if(a> =8) break; if(a%

    有以下程序:#include <stdio.h>main( ){ int a=1,b; for(b =1;b <=10;b++) { if(a> =8) break; if(a%2 == 1) {a + =5;continue;} a- =3; printf( "% d \n" ,b);}程序运行后的输出结果( )。

    A.3

    B.4

    C.5

    D.6


    正确答案:B
    解析:本题要注意break和continue的区别。continue语句只结束本次循环,继续下一次循环;而break语句则是结束整个循环。本题执行过程如下:a=1,b=1:a>=8不成立,a%2==1成立,执行a+=5,则a=6,继续执行下一次循环;a=6,b=2:a>=8不成立,a%2==1不成立,执行a-=3,则a=3,继续执行下一次循环;a=3,b=3:a>=8不成立,a%2==1成立,执行a+=5,则a=8,继续执行下一次循环;a=8,b=4:a>=8成立,结束整个循环,输出b的值4。

  • 第19题:

    有以下程序includedefine F(X,Y)(X)*(Y)main(){int a=3,b=4;printf("%d\n",F(a++,b++

    有以下程序 #include<stdio.h> #define F(X,Y)(X)*(Y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); 程序运行后的输出结果是

    A.12

    B.15

    C.16

    D.20


    正确答案:A
    解析:在程序中先用表达式将宏替换掉,则输出语句中的表达式为(a++) *(b++),而a++的值为3,b++的值为4。因此最后的值为3*4=12。

  • 第20题:

    有以下程序includemain(){intx=1,y=0,a=0,b=0;switch(X){case1:switch(y){case0:a++;b

    有以下程序 #include <stdio.h> main() { int x=1,y=0,a=0,b=0; switch(X) { case 1: switch(y) { case 0:a++; break; case 1:b++; break; } case 2:a++;b++;break; case 3:a++;b++; } printf("a=%d,b=%d\n",a,b); } 程序

    A.a=1,b=0

    B.a=2,b=2

    C.a=1,b=1

    D.a=2,b=1


    正确答案:D
    解析: 本题考查switch语句,首先,x=1符合条件casel,执行switch(y)语句,y=0符合case 0语句,执行a++并跳出switch(y)语句,此时a=1。因为case 1语句后面没有break语句,所以向后执行case2语句,执行a++,b++,然后跳出switch(x),得a=2,b=1。

  • 第21题:

    有以下程序 include int fun(int a, int b) { if(b==0) return a;

    有以下程序 #include <stdio.h> int fun(int a, int b) { if(b==0) return a; else return(fun(-a,-b)); } main() { printf("%d\n",fun(4,2)); } 程序的运行结果是______。

    A.1

    B.2

    C.3

    D.4


    正确答案:B
    解析:在调用一个函数的过程中又出现直接或间接调用该函数本身,称为函数的递归调用。本题考查的是函数递归调用。首先当a=4,b=2时,调用fun(4,2),不满足条件b==0,继续调用fun函数;此时a=3,b=1,即调用fun(3,1),不满足条件b=0,继续调用fun函数;此时a=2,b=0,满足条件b=0,返回a的值2。

  • 第22题:

    下列程序执行输出的结果是()。includef(int A) {int b=0;static c=3;a=C++;b++;return(

    下列程序执行输出的结果是( )。 #include<stdio.h> f(int A) { int b=0; static c=3; a=C++;b++; return(a); } main() { int a=2,i,k; for(i=0;i<2;i++) k=f(a++); printf("%d\n",k); }

    A.3

    B.4

    C.5

    D.6


    正确答案:B
    解析: 本题考查函数调用时的参数传递。在函数调用时,static变量在函数调用结束后所做的所有变化均保持(即上次调用结束时的值)。
    在主函数中,第一次循环,i=0,调用k=f(a++)=f(2),调用完之后才将a加1,a变为3,在f(2)中,先将c=3赋值给a返回,然后将c加1,得到k=a=3,c=4。
    第二次循环,i=1,调用k=f(a++)=f(3),调用完之后才将a加1,a变为4,在f(3)中,先将c=4赋值给 a返回,然后将c加1,得到k=a=4,c=5。

  • 第23题:

    有如下程序: #include"iostream.h" void main() { int x=1,a=0,b=0; switch(x){ case 0:b++; case 1:a++; case 2:a++;b++; } cout << "a=" <<a << " ," <<"b=" << b; } 该程序的输出结果是

    A.a=2,b=1

    B.a=1,b=1

    C.a=1,b=0

    D.a=2,b=2


    正确答案:A
    解析:该题目的关键是要搞清楚该程序执行了哪几条语句。由于x的值等于1,所以switch结构中,程序从case1后面的语句开始执行,又因为casel后面的语句没有以break结束,所以程序要继续往下执行case2后面的语句所以,该程序共执行了这三条语句:9++;a++;b++;.因此,变量a和b最后的值应该为2和1。注意:break语句可以结束switch语句。

  • 第24题:

    有以下程序:include define F(X,Y)(X)*(Y)main(){int a=3,b=4;printf("%d\n",F(a++,b

    有以下程序: #include <stdio.h> #define F(X,Y)(X)*(Y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); } 程序运行后的输出结果是( )。

    A.12

    B.15

    C.16

    D.20


    正确答案:A
    解析:在程序中先将表达式中的宏替换掉,则输出语句中的表达式为(a++)*(b++),而a++的值为3,b++的值为4。因此最后的值为3*4=12。所以,4个选项中选项A符合题意。