参考答案和解析
正确答案:A
更多“设有说明语句:int k=1,m=2;double d=7.3;,以下表达式中错误的是()。A、k=m=kB、k++C、k%(int)dD、dmk”相关问题
  • 第1题:

    有以下程序 fun(int x,int y) { static int m=0,i=2; i+=m+1; m=i+x+y; return m; } main() { int j=1,m=1,k; k=fun(j,m); printf("%d,",k); k=fun(j,m); printf("%d\n",k); } 执行后的输出结果是______。

    A.5,5

    B.5,11

    C.11,11

    D.11,5


    正确答案:B
    解析:将j和m的值带入函数fun中,第—次调用完fun()后,m和i的值分别为5和3且要保留,并在第二次调用时使用,这是因为两者都是局部静态变量。所以最后的结果是5和11。

  • 第2题:

    有下列程序:

    fun(int x,int y)

    {statlc int m=0,i=2;

    i+=m+1;m=i+X+y;return m;

    }

    main()

    {int j=1,m=1,k;

    k=fun(j,m);printf("%d,",k);

    k=fun(j,m);printf("%d\n",k);

    }

    执行后的输出结果是( )。

    A.5,5

    B.5,11

    C.11,11

    D.11,5


    正确答案:B
    解析:子函数fun(int x,int y),将变量m和i声明为局部静态变量,因此第1次调用主函数后,局部静态变量m和i的值为5和3,第1次函数调用结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为5和3,即在执行“i+=m=1”时,i的值为9,因此最终m的值为11。

  • 第3题:

    以下程序的运行结果是______。 include fun(int a,int b) { int m=0,i=2; i+=m+1; m

    以下程序的运行结果是______。

    include<iostrearn.b>

    fun(int a,int b)

    {

    int m=0,i=2;

    i+=m+1;

    m=i+a+b;

    return m;

    }

    void main()

    {int k=4,m=1,p;

    p=fun(k,m);cout<<p<<end1;

    }


    正确答案:8
    8

  • 第4题:

    设有以下程序: include using namespace std; int main() {inta,b,k:4,m=6,*p1=&k

    设有以下程序:

    include<iostream>

    using namespace std;

    int main()

    {

    int a,b,k:4,m=6,*p1=&k,*p2=&m;

    a=p1==&m;

    b=(*p1)/(*p2)+7;

    cout<<a<<b<<end1;

    return 0;

    }

    执行该程序后,a的值为【 】,b的值为【 】。


    正确答案:0 7
    0 7 解析:本题考核的知识点是有关指针的运算。程序中定义了两个指针变量p1和p2,并通过赋初值让它们分别指向了变量k和m。语句“a=p1==&m;”中先执行关系运算符“p1==&m”,显然是0(假),然后把0赋值给a。接着执行语句“b=(*p1)/(*p2)+7”,此处*p1的值就是k的值4,*p2的值就是m的值6,即把“4/6+7”的结果赋给b,b的值为7。

  • 第5题:

    下列正确的变量声明是( )

    A.int m;n;k;

    B.unsigned int m,n,k;

    C.double int m,n,k;

    D.int m,n,k


    正确答案:B

  • 第6题:

    设有如下定义语句: int m[]={2,4,6,8,10},*k=m; 以下选项中,表达式的值为6的是( )。

    A.*(k+2)

    B.k+2

    C.*k+2

    D.*k+=2


    正确答案:A
    本题考查数组和指针,*k指针是指向rn数组的首地址,所以要使表达武的值为6,只需要指针指向第m[2],所以答案选择A。-

  • 第7题:

    以下程序的运行结果是【 】。

    include<iostream.h>

    func(int a,int b)

    {

    statlC int m=0,i=2;

    i+=m+1;

    m=i+a+b;

    return m;

    }

    void main()

    {int k=4,m=1,p;

    p=func(k,m);cout<<p<<”,”;

    p=func(k,m);cout<<p<<endl;

    }


    正确答案:817
    8,17

  • 第8题:

    有下列程序: fun(int x,int y) { static int m=0,i=2; i+=++m;m=i+x+y;return m; } main { int j=1,m=1,k; k=fun(j,m);printf("%d,",k); k=fun(j, m);printf(”%d\n”,k); } 执行后的输出结果是( )。

    A.5.5

    B.5,11

    C.11,11

    D.11,5


    正确答案:B
    变量m和i声明为局部静态变量,因此第1次调用fun函数后,局部静态变量m和i的值为5和3,第l次调用结束时,它们的值不变,第2次调用时,m和i的初始值分别为5和3,在执行“i+=m+1”后,i的值为9,因此,最终m的值为11。

  • 第9题:

    设有说明语句int k,i=5,j=10;则表达式k=(++i)*(j--)的值是 ( )

    A.50

    B.60

    C.45

    D.55


    正确答案:B
    本题考查自加和自减运算符的运用。表达式++i的值为6,j——的值为10,故 k=6×10=60。

  • 第10题:

    设有定义:intk=0;以下选项的四个表达式值相同的是()

    • A、a=++k
    • B、a=k++
    • C、a=k+=1
    • D、a=k+1

    正确答案:A,C,D

  • 第11题:

    单选题
    设有说明语句:int k=1,m=2;double d=7.3;,以下表达式中错误的是()。
    A

    k>=m=k

    B

    k++

    C

    k%(int)d

    D

    d>m>k


    正确答案: B
    解析: 暂无解析

  • 第12题:

    单选题
    有以下程序#include int fun(int x,int y){ static int m=0,i=2; i+=m+1; m=i+x+y; return m;}main(){ int j=1,m=1,k; k=fun(j,m); printf(%d,,k); k=fun(j,m); printf(%d,k);}执行后的输出结果是(  )。
    A

    5,11

    B

    5,5

    C

    11,11

    D

    11,5


    正确答案: B
    解析:
    fun函数中m和i是静态变量,退出函数以后,下次再进入该函数时,m和i仍然保持上一次的数值。第一次调用fun(j,m)时,i=2+0+1=3,m=3+1+1=5,返回5;第二次调用fun(j,m)时,i=3+5+1=9,m=9+1+1=11,返回11。答案选择A选项。

  • 第13题:

    设有定义:int k=1,m=2;float f=7;则下列选项中错误的表达式是( )。

    A.k=k>=k

    B.-k++

    C.k%int(f)

    D.k>=f>=m


    正确答案:C
    解析:在C语言中,求余运算符“%”两边的运算对象都应为整型数据,所以需要对变量f进行强制类型转换,正确的写法为k%(int)f。在C语言中,逻辑运算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算优先次序是:!(逻辑“非”)、算术运算符、关系运算符、&&(逻辑“与”)、‖(逻辑“或”)、赋值运算符。根据运算符的优先级与结合性,对于选项A),先计算k>=k的值(为真,即1),再用1对k进行赋值。对于选取项 B,先计算k++的值,再对其取负数。对于选项D),先计算k>=f的值(为假,即0),再用0与m进行比较,故最终结果为0。

  • 第14题:

    有以下程序:include<stdio.h>main( ) { int a,b,k,m,*pl,*p2; k=1,m=8; p1=&k,p2=&a

    有以下程序:

    include<stdio.h>

    main( )

    { int a,b,k,m,*pl,*p2;

    k=1,m=8;

    p1=&k,p2=&m;

    a=/*pl-m;b=*p1+*p2+6;

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

    }

    编译时编译器提示错误信息,你认为出错的语句是( )。

    A.a=/*pl-m;

    B.b=*p1+*p2+6;

    C.k=1,m=8;

    D.pl=&k,p2-&m;


    正确答案:A

    本题考查指针,pl=&k表示P指向k的地址,则*p=k,依次类推,在对指针进行赋值时没有错误。a=/*p+m赋值,在c语言中"/*"表示的注释,所以答案选择A。

  • 第15题:

    将下面的语句段(A) 补充完整,使其和语句段(B) 在功能上完全等价。

    (a) double s=0.0;

    【 】;

    int k=0;

    do{

    s+=d;

    k++;

    d=1.0/(k*k+1);

    }while(【 】);

    (b) double s=1.0;

    for(int k=1;k<=10;k++) s+=1.0/(k*(k+1));


    正确答案:d=1.0 k=10
    d=1.0 k=10 解析:本题考核while循环与for循环之间的转换。只要把握住循环的起始条件、结束条件和变量控制,就易解这种类型的题目。

  • 第16题:

    设有定义:int k=1,m=2;float f=7;则以下选项中错误的表达式是( )。

    A.k=k>=k

    B.-k++

    C.k%int(f)

    D.k>=f>=m


    正确答案:C
    解析:强制类型转换的一般形式为:(类型名)(表达式),而选项C)中没有给类型名加括号,所以选项C)错误。

  • 第17题:

    设有定义:intk=1,m=2;noat f=7;则下列选项中错误的表达式是( )。

    A.k=k>=k

    B.-k++

    C.k%int(f)

    D.k>=f>=m


    正确答案:C
    解析:在C语言中,求余运算符“%”两边的运算对象都应为整型数据,所以需要对变量f进行强制类型转换,正确的写法为k%(int)f。在C语言中,逻辑运算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算优先次序是:!(逻辑“非”)、算术运算符、关系运算符、&&(逻辑“与”)、‖(逻辑“或”)、赋值运算符。根据运算符的优先级与结合性,对于选项A),先计算k>=k的值(为真,即1),再用1对k进行赋值。对于选取项B),先计算k什的值,再对其取负数。对于选项D),先计算k>=f的值(为假,即0),再用0与m进行比较,故最终结果为0。

  • 第18题:

    有以下程序include <stcli0.h>main( ){ int a,b,k,m,*p1,*p2; k=1,m=8; p1=&k,p2=&am

    有以下程序

    #include <stcli0.h>

    main( )

    { int a,b,k,m,*p1,*p2;

    k=1,m=8;

    p1=&k,p2=&m;

    a=/*p1 -m; b=*p1+*p2+6;

    printf(”%d ”,a); printf(”%d\n”b);

    }

    编译时编译器提示错误信息,你认为出错的语句是

    A) a=/*p1- m;

    B)b=*p1+*p2+6;

    C)k=1,m=8;

    D)p1=&k, p2=&m;


    正确答案:D
    【答案】D
    【知识点】C语言书写规范
    【解析】D中语句应为p1=&k,p2=&m;中间的逗号应变成分号。

  • 第19题:

    以下程序的输出结果是______。includemain(){int k=4,m=1,p; p=func(k,m); printf("%d,

    以下程序的输出结果是______。 #include<stdio.h> main() { int k=4,m=1,p; p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d\n",p); } func(a,b) int a,b; { static int m=0,i=2; i+=m+1;m=i+a+b;return(m); }

    A.8,17

    B.8,16

    C.8,20

    D.8,8


    正确答案:A

  • 第20题:

    有以下程序: include<stdio.h> main( ) { int a,b,k,m,*pl,*p2; k=1,m=8; p1=&

    有以下程序: #include<stdio.h> main( ) { int a,b,k,m,*pl,*p2; k=1,m=8; p1=&k,p2=&m; a=/*pl-m;b=*p1+*p2+6; printf("%d",a);printf("%d\n",b); } 编译时编译器提示错误信息,你认为出错的语句是( )。

    A.a=/*pl-m;

    B.b=*p1+*p2+6;

    C.k=1,m=8;

    D.pl=&k,p2-&m;


    正确答案:A
    本题考查指针,pl=&k表示P指向k的地址,则*p=k,依次类推,在对指针进行赋值时没有错误。a=/*p+m赋值,在c语言中"/*"表示的注释,所以答案选择A。

  • 第21题:

    设有定义:intk=1,m=2;floatf=7;,则以下选项中错误的表达式是()

    • A、k=k+=k
    • B、-k++
    • C、k%int(f)
    • D、f=k%m

    正确答案:C

  • 第22题:

    有以下程序 fun(int x,int y) { static int m=0,i=2; i+=m+1; m=i+x+y; return m; } main() { int j=1,m=1,k; k=fun(j,m); printf("%d,",k); k=fun(j,m); printf("%d/n",k); } 执行后的输出结果是()

    • A、5,5
    • B、5,11
    • C、11,11
    • D、11,5

    正确答案:B

  • 第23题:

    单选题
    设有如下定义语句:int m[ ]={2,4,6,8},*k=m;以下选项中,表达式的值为6的是(  )。
    A

    *(k+2)

    B

    k+2

    C

    *k+2

    D

    *k+=2


    正确答案: B
    解析:
    本题中k指向数组m的首地址。*(k+2)先将指针后移两个元素,即为m[2]的地址,然后取出m[2]的值6。B项错误,k+2是m[2]的地址;C项错误,*k表示m[0]的值,然后再加上2,所以为4;D项错误,表示给m[0]的值加2,也为4。答案选择A选项。