更多“单选题以下程序中关于指针输入格式正确的是(  )。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);”相关问题
  • 第1题:

    有以下程序 include main() { int n,*p=NULL; *p=&n; printf("

    有以下程序 #include <stdio.h> main() { int n,*p=NULL; *p=&n; printf("Input n:");scanf("%d",&p);printf("output n:");printf("%d\n",p); } 该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是

    A.int n,*p=NULL;

    B.*p=&n;

    C.scanf("%d",&p)

    D.printf("%d\n",p);


    正确答案:A
    解析:指针变量在定义时需要加星号,而在赋值时则不用,故选项B)错误。本题中,scanf()函数和printf()函数都是要对指针变量p指向的地址处的数据进行访问,不是变量本身。选项C)中多了取地址运算符,选项D)中少了指针运算符。

  • 第2题:

    有以下程序:inlucdemain()D)2 3 3{int n,*P=NULL;*p=&n;printf("input n:");scanf("%d

    有以下程序: #inlucde<stdio.h> main()D)2 3 3 {int n,*P=NULL; *p=&n; printf("input n:");scanf("%d",&p);printf("output n:");printf("%d\n",p); } 该程序试图通过指针P为变量n读入数据并输出,但程序有多处错误,以下语句正确的是( )。

    A.int n,*P=NULL;

    B.*P=&n;

    C.scanf(“%d",&p)

    D.printf("%d\n",p);


    正确答案:A

  • 第3题:

    若有说明:int *p,m=5,n;,以下正确的程序段是

    A.p=&n;scanf("%d",&p);

    B.p=&n;scanf("%d",*p)

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

    D.p=&n;*p=m;


    正确答案:D
    解析:&是求址运算符,"*"是指变量说明符。选项A)、B)应改为scanf("%d",p);选项C)中指针变量p未指向一确定的内存单元,不能为其赋值,并且这样做很危险,建议不使用。

  • 第4题:

    语句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。

  • 第5题:

    语句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

  • 第6题:

    语句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

  • 第7题:

    若有说明:int*p,m=5,n;,以下正确的程序段是( )。

    A.p=&m; scanf("%d",&p)

    B.p=&n; scanf("%d",&p)

    C.scsnf("%d",&p) p=&n;

    D.p=&n; p=&m;


    正确答案:D
    解析:p为指针型变量,在输入函数的地址列表中不用&,当给指针变量赋值时是取变量的地址赋给指针变量,&为取地址运算符,因此只有选项D正确。

  • 第8题:

    若有说明:int * p,m=51; n;,以下正确的程序段是( )

    A.p=&m; scanf("%d",&p)

    B.p=&n; scanf("%d",&P)

    C.scanf("%d",&p) p=&n;

    D.p=&n; p=&m;


    正确答案:D

  • 第9题:

    以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空:includefind

    以下程序调用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-s

    C.k=p-s

    D.*k=p


    正确答案:D
    解析:k是—个指针,它的值是—个地址,要通过它为主函数的变量改变数据,必须使用*p,边样就可以把—个下标数赋给p指针指向的那个内存单元,所以横线处应填入*k=p。

  • 第10题:

    主程序调用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开始的,也可以将数组首地址赋给一个指针变量,通过指针和下标的方式来引用数组元素。 通过数组的首地址引用数组元素。

  • 第11题:

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

    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。

  • 第12题:

    若有说明:int*p,a=1,b;以下正确的程序段是()

    • A、p=&b;scanf("%d",&p);
    • B、scanf("%d",&b);*p=b;
    • C、p=&b;scanf("%d",*p);
    • D、p=&b;*p=a;

    正确答案:D

  • 第13题:

    主程序调用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("

    A.k=p

    B.*k=p

    C.k=p-s

    D.*k=p-s


    正确答案:B

  • 第14题:

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

    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。

  • 第15题:

    下列程序的输出结果是()。includevoid main(){int b[6]={2,4,6,8,10,12};int*p--b,**q=

    下列程序的输出结果是( )。 #include<stdio.h> void main() { int b[6]={2,4,6,8,10,12}; int*p--b,**q=&p; printf("%d",*(p++)); printf("%d",**q); }

    A.*p=&a;scanf("%1f",p);

    B.*p=&a;scanf("%f",p);

    C.p=&a;scanf("%1f",*p);

    D.p=&a;scanf("%1f",p);


    正确答案:D
    解析: double*p,a;语句表示定义了一个指向双精度型的指针变量p和双精度型变量a,而语句p=&a表示将变量a的地址赋给指针变量p;scanf("%1f",p)表示用键盘输入的数赋给指针变量p所指向的地址单元中。scanf()函数要求在输入double型数据,格式控制符必须用%1f(或%1e)。否则,数据不能正确输入。所以选项D)为正确答案。

  • 第16题:

    若说明int *p,n;则通过语句scanf能够正确读入数据的程序段是

    A.p=&n;scanf("%d",&p);

    B.p=&n;scanf("%d",*p);

    C.scanf("%d",n);

    D.p=&n;scanf("%d",p);


    正确答案:D

  • 第17题:

    请选出正确的程序段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。

  • 第18题:

    请选出正确的程序段______。

    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。

  • 第19题:

    主程序调用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开始的,也可以将数组首地址赋给一个指针变量,通过指针和下标的方式来引用数组元素。注意:通过数组的首地址引用数组元素。

  • 第20题:

    以下正确的程序段是______。

    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

  • 第21题:

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

    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。

  • 第22题:

    以下程序段完全正确的是( )。 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。

  • 第23题:

    对于以下程序,   main( )  { int a[5],*p;    int k;    for(k=0,p=a;k<5;k++,p++)     scanf(“%d”,p);    for(;k>0;k--)     printf(“%d”,*(--p));  }  若输入为:1 2 3 4 5(注:表示回车),则输出结果是多少?


    正确答案:输出结果是54321

  • 第24题:

    单选题
    以下程序中关于指针输入格式正确的是(  )。
    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);


    正确答案: D
    解析:
    A项错误,指针p未初始化,且scanf中p的格式不对;B项,指针p未初始化;C项正确,首先将k的地址赋值给p,然后通过p从键盘读入数据给k赋值;D项错误,scanf中p的格式不对。答案选择C选项。