更多“单选题语句int*p=k;定义了指针p,与这个语句等效的语句序列是(  )。A int*p;p=k;B int*p;p=k;C int*p;*p=k;D int*p;*p=k”相关问题
  • 第1题:

    以下程序段完全正确的是( )。

    A.int*P;scanf("%d",&p);

    B.int*P;scanf("%d",p);

    C.int k,*p=&k;scanf("%d",p);

    D.int k,*p;*p=&k;scanf("%d¨,p);


    正确答案:C
    A中P是指针,没有初始化,且取P的地址即类型为指向地址的地址,与输出参数类型不符。B中指针P没有初始化,且P所指变量值不明。D*p是整型变量,&k是整型变量的地址。所以选C。

  • 第2题:

    下面函数返回数组中最大元素的下标,数组中元素个数为t,将程序补充完整。

    int findmax(int s[],int t) {

    int k,p;

    for(p=0,k=p;p<t;p++) {

    if 【 】

    k=p;

    }

    return k;

    }


    正确答案:(s[p]>s[k])
    (s[p]>s[k]) 解析:分析程序其他部分,k存放最大元素的下标。

  • 第3题:

    请选出正确的程序段A.int*p; scanf("%d",p); …B.int*s,k; *s=100; …C.int *s,k; char*p,c; s=&am

    请选出正确的程序段

    A.int*p; scanf("%d",p); …

    B.int*s,k; *s=100; …

    C.int *s,k; char*p,c; s=&k; p=&c; *p='a'; …

    D.int *s,k; char *p,e; s=&k; p=&c; s=p; *s=1; …


    正确答案:C
    解析:本题的选项A)和B)犯了一个同样的错误,即指针变量p定义后并没有指向具体的变量。也就是说,p中没有确定的地址值,它的值是不可预见的,所指向的单元也是不可预见的,因此不能进行赋值操作。另外,在选项D)中,s是int型指针变量,p是char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量p的值赋给整型指针变量s。

  • 第4题:

    请选出正确的程序段______。

    A.int*p

    B.int*s,k;scanf(""%d"",p); *s=100;… ……

    C.int*s,k;

    D.int*s,k;char*p,c; char*p,e;s=&k;p=&c; p=&c;*p='a'; s=p;…… *s=1;……


    正确答案:C
    解析:本题的A和B犯了一个同样的错误,即指针变量p定义后并没有指向具体的变量,因此不能进行赋值操作。另外,在选项D中,s是int指针变量,p是char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量p的值赋给整型指针变量s。

  • 第5题:

    主程序调用findmax函数求出数组中最大元素在数组中的下标,( )中需填写的内容是。 #include<stdio.h> findmax(int*s,int t,int*k) { int p; for(p=0,*k=p;p<t;p++)if(s[p]>s[*k])( );} main() { int a[10],i,k; for(i=0;i<10;i++)scanf("%d",&a[i]); findmax(a,10,&k); printf("%d%d\n" ,k,a[k]);}

    A.k=p

    B.*k=p

    C.k=p-s

    D.*k=p-s


    正确答案:B
    解析:数组元素可以通过数组首地址和下标的方式来引用,数组元素的下标是从0开始的,也可以将数组首地址赋给一个指针变量,通过指针和下标的方式来引用数组元素。注意:通过数组的首地址引用数组元素。

  • 第6题:

    设p1和p2是指向一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是

    A.k=*p1+*p2

    B.p2=k;

    C.p1=p2;

    D.k=*p1*(*p2);


    正确答案:B
    解析:本题主要考查了一维数组指针的赋值和用指针引用数组元素进行运算。选项B)中p2为指向int型变量的指针,而k为int型变量,不能将int型变量直接赋值给指向int型变量的指针,所以选项B)错误。

  • 第7题:

    下列程序段没有错误的是( )。

    A.int*p;cin>>*p;

    B.int*s,k;*s=100

    C.int *s ,k; char *p ,c; s=&k; p=&c; *p='a'; *s=1;

    D.int *s,k; char *p,c; s=&k; p=&c; s=p;


    正确答案:C
    解析:指针变量一定要让它指向某个内存单元才能给它赋值、参加运算等,选项A和选项B都是因为没有先让指针指向某个内存单元;选项D把不同数据类型的指针变量相互赋值是错误的。

  • 第8题:

    以下程序段完全正确的是( )。

    A.int*p;scanf(”%d”,&p);

    B.int*p;scanf(”%”,p);

    C.int k,*p=&k;scanf(”%d”,p);

    D.int k,*p;*p=&k;scanf(”%d”,p);


    正确答案:C
    解析:A中p是指针,没有初始化,且取p的地址即类型为指向地址的地址,与输出参数类型不符。B中指针p没有初始化,且p所指变量值不明。D*p是整型变量,&k是整型变量的地址。所以选C。

  • 第9题:

    以下程序段完全正确的是( )。 A.int*P;scanf("%d",&p);B.int*P;scanf("%d",p);SX

    以下程序段完全正确的是( )。

    A.int*P;scanf("%d",&p);

    B.int*P;scanf("%d",p);

    C.int k,*p=&k;scanf("%d",p);

    D.int k,*p;*p=&k;scanf("%d¨,p);


    正确答案:C
    A中P是指针,没有初始化,且取P的地址即类型为指向地址的地址,与输出参数类型不符。B中指针P没有初始化,且P所指变量值不明。D*p是整型变量,&k是整型变量的地址。所以选C。

  • 第10题:

    请选出下面正确的程序段( )。

    A.int *s; scanf("%d",s); ┆

    B.int *s,k; *s=100; ┆

    C.int *s,k; char *p, c; s=&k; p=&c; *p='a'; ┆

    D.int *s,k; char *p, c; s=&k; p=&c; s=p; *s=1; ┆


    正确答案:C
    解析:本题的选项A)和B)犯了一个同样的错误,即指针变量s定义后并没有指向具体的变量。也就是说,s中没有确定的地址值,它的值是不可预见的,所指向的单元也是不可预见的,因此不能进行赋值操作。另外,在选项D)中,s是int型指针变量,p是char型指针变量,指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量p的值赋给整型指针变量s。

  • 第11题:

    若有语句:int x,*p=&x;则与该语句等价的语句是()

    • A、intx,*p;*p=&x;
    • B、int x,*p;p=&x;
    • C、int x,*p;*p=x;
    • D、int x,*p;p=x

    正确答案:B

  • 第12题:

    单选题
    有以下程序:#include void fun(int *s,int t,int *k){ int p; for(p=0,*k=p;p  if(s[p]>s[*k])*k=p;}main(){ int a[10]={11,12,13,14,15,16,20,18,19,10},k; fun(a,10,&k); printf("%d,%d",k,a[k]);}程序运行后的输出结果是(  )。
    A

    6,20

    B

    10,9

    C

    7,20

    D

    10,10


    正确答案: A
    解析:
    调用函数fun,将数组的地址、数组长度、变量k的地址传入函数。for函数实现查找数组中最大值,将其下标值存入变量k标志的内存单元。输出k=6,a[6]=20。答案选择A选项。

  • 第13题:

    语句int*p=&k;定义了指针p,与这个语句等效的语句序列是

    A.int*p;p=&k;

    B.int*p;p=k;

    C.int*p;*p=&k;

    D.int*p;*p=k;


    正确答案:A
    解析:本题考查的知识点是:指针的赋值。题目中的语句int*p=&k;有两个作用:首先,定义了一个int型指针p;然后,将变量k的地址&k赋给刚定义的指针p。所以等效的语句序列为:int*p;p=&k;,应该选择A。

  • 第14题:

    语句int*p=&Ak;定义了指针p,与这个语句等效的语句序列是( )。

    A.int*p;p=&k;

    B.int*p;p=k;

    C.int*p;*p=&k;

    D.int*p;*p=k;


    正确答案:A

  • 第15题:

    语句int*p=&k;定义了指针p,与这个语句等效的语句序列是A.int*p;p=&k;B.int*p;k=k;C.int*p;*p=&am

    语句int*p=&k;定义了指针p,与这个语句等效的语句序列是

    A.int*p;p=&k;

    B.int*p;k=k;

    C.int*p;*p=&k;

    D.int*p;*p=k;


    正确答案:A

  • 第16题:

    有定义语句:int*p[4],以下选项中与此语句等价的是( )。

    A.int p[4];

    B.int**p;

    C.int*(p[4]);

    D.int(*p)[4];


    正确答案:C

  • 第17题:

    设pl和p2是指向一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是( )。

    A.k=*pl+*p2

    B.p2=k;

    C.pl=p2;

    D.k=*pl*(*p2.;


    正确答案:B
    本题主要考查了一维数组指针的赋值和用指针引用数组元素进行运算。选项B)中p2为指向int型变量的指针,而k为int型变量,不能将int型变量直接赋值给指向int型变量的指针,所以选项B)错误,应该为p2=&k。

  • 第18题:

    以下正确的程序段是______。

    A.int*p; scanf("%d",p);

    B.int *s,k *s=100;

    C.int*s,k; char*p,c; s=&k; p=&c; *p='a';

    D.int*s,k; char*p,c; s=&k; p=&c; s=p; *s=1;


    正确答案:C

  • 第19题:

    已知类X的定义如下,为了实现将对象成员k的值修改为678,下面的哪条语句是正确的 ______。 class X{ private: int k; public: K(int n){k=n;} set(int n){k=m;} }; void fun(){ X a(10),*p=&a; ______ }

    A.p->set(678);

    B.X(678):

    C.p->k=678;

    D.p.set(678);


    正确答案:A

  • 第20题:

    对于下面程序,对p调用正确的是( )。 class A{ public:fun(int i){cout<<i<<endl;} }; main(){ A a; int k=0; void(A::*p)(int); p=A::fun; }

    A.a.p(k);

    B.*a.p(k)

    C.a.*p(k)

    D.a::*p(k)


    正确答案:C
    解析:使用类函数指针格式是:对象名.*指针名>=(实参表)>

  • 第21题:

    有定义语句:“int*p[4];”,以下选项中与此语句等价的是( )。 A.int p[4];B.int**P;SXB

    有定义语句:“int*p[4];”,以下选项中与此语句等价的是( )。

    A.int p[4];

    B.int**P;

    C.int*(p[4]);

    D.int(*p)[4];


    正确答案:D
    本题int*p[4]的作用是声明一个指针数组,每个元素都是int*型指针。

  • 第22题:

    设p1和p2均为指向int型的指针变量,k为int型变量,下列不正确的赋值语句是(C)。

    A.k=*p1+*p2

    B.k=*p1*(*p2)

    C.p2=k

    D.p1=p2


    正确答案:C

  • 第23题:

    int*p1,*p2,intk,则不能正确执行的语句是()。

    • A、k=*p1+*p2
    • B、p2=k
    • C、p1=p2
    • D、k=(*p1)*(*p2);

    正确答案:B