更多“以下程序的输出结果是______。main(){int a=3;printf("%d\n",(a+=a-+a*a) )}A.-6B.1C.2D.-12 ”相关问题
  • 第1题:

    以下程序的输出结果是 ______。 main() int a=3; printf("%d\n",(a+=a=a=a*a) ; }

    A.-6

    B.1

    C.2

    D.-12


    正确答案:D
    解析:赋值运算符的结合方向是自右至左,所以表达式a+=a-=a*a先运算最右边的a*a得9,再运算a=a-9,即a=3-9,所以此时a的值由3变成了-6,最后运算a=a+(-6),即a=(-6)+(-6)=-12。

  • 第2题:

    以下程序的输出结果是main(){ int a=0; a+=(a=8); printf("%d\n",a);}


    正确答案:16
    a+=(a=8)可以写成a=a+(a=8)的形式,括号的优先级高于“+”,而“+”的优先级又高于“=”,所以先执行括号内的运算,将a赋值为8,然后执行+运算。

  • 第3题:

    以下程序的输出结果是( )。 include fun() {static int a=0; a+=3;printf("%d",A); } ma

    以下程序的输出结果是( )。 include<stdio.h> fun() {static int a=0; a+=3;printf("%d",A); } main() {int cc; for(cc=1;cc<5;cc++)fun(); printf("\n"); }


    正确答案:3 6 9 12
    3 6 9 12 解析:本题考查最基本的for循环。for(cc=1;cc5;cc++)规定循环次数为4次,每次a+=3,即每次a的值增加3,但因为fun函数中变量a为static类型,所以每次调用完子函数之后,变量a所做的改变都要保存。

  • 第4题:

    以下程序的输出结果是main(){ int x=0; sub(&x,8,1); printf("%d\n",x);}sub(int *a,int n,int k){ if(k<=n) sub(a,n/2,2*k); *a+=k;}


    正确答案:7
    本题属于递归调用。主函数中调用sub函数流程如下:
    sub(*x,8,1)-sub(*x,4,2)-sub(*x,2,4)-x=x+k=4,然后是4+2=6,最后是 6+1=7 
    由此可知,输出结果为7。

  • 第5题:

    以下程序的输出结果是______。 main() {int a=3; printf("%d\n",(a+=a-=a*a)); }

    A.-6

    B.1

    C.2

    D.-12


    正确答案:D
    解析:赋值运算符的结合方向是自右至左,所以表达式a+=a-=a*a先运算最右边的a*a得9,再运算a=a-9,即a=3-9,所以此时a的值由3变成了-6,最后运算a=a+(-6),即a=(-6)+(-6)=-12。