以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是()。 main() { int *p,*q, a,b; p =&a; printf ("input a:"); scanf ("%d", *p); … }A.*p表示的是指针变量p的地址B.*p表示的是变量a的值,而不是变量a的地址C.*p表示的是指针变量p的值D.*p只能用来说明p是一个指针变量

题目

以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是()。 main() { int *p,*q, a,b; p =&a; printf ("input a:"); scanf ("%d", *p); … }

A.*p表示的是指针变量p的地址

B.*p表示的是变量a的值,而不是变量a的地址

C.*p表示的是指针变量p的值

D.*p只能用来说明p是一个指针变量


相似考题
更多“以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是()。 main() { int *p,*q, a,b; p =&a; printf ("input a:"); 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题:

    有以下程序: includemain(){char*p,*q; p=(char *)malloc(sizeof(char)* 20);q=p; sca

    有以下程序: # include<stdio.h> main() { char*p,*q; p=(char *)malloc(sizeof(char)* 20);q=p; scanf("%s %s",p,q);printf("%s %s\n",p,q); } 若从键盘输入;abc def<回车>,则输出结果是 ______。

    A.def def

    B.abc def

    C.abe d

    D.d d


    正确答案:A
    解析:本题考查%s控制符在scanf函数中的应用。scanf函数中%s控制符的作用是将键盘输入的字符串送到内存,输入的字符串从第一个非空格字符算起,遇到空格或回车就认为是输入结束。本题中执行语句scanf("%s%s",p,q)时,从键盘输入abc def回车>后,指针变量p指向字符串"abc\0",q指向字符串"def\0",但是由于p和q指向同一个存储单元,所以存储单元中存放的是"def\0",printf函数的输出结果为def def。

  • 第4题:

    以下程序中调用cin函数给变量a输人数值的方法是错误的,其错误原因是includevoid ma

    以下程序中调用cin函数给变量a输人数值的方法是错误的,其错误原因是 #include<iostream.h> void main() { int*p,*q,a,b; p=&a; cout<<”input a:”; cin>>p; }

    A.*p表示的是指针变量p的地址

    B.p表示的是变量a的地址,而不是变量a的值

    C.*p表示的是指针变量p的值

    D.*p只能用来说明p是一个指针变量


    正确答案:B
    解析:p表示的是变量a的地址,定义后*p表示的是变量a的值。

  • 第5题:

    有以下程序#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
    在C语言中存在直接存取和间接存取两种访问内存数据的方法。前者利用变量名隐式地访问内存:首先定义变量,然后由编译系统完成从变量名到内存地址的映射工作,用户通过变量名访问内存空间,变量地址对用户完全透明。后者则通过指针显式地访问内存:用户直接使用变量的地址,或者将变量的地址值储存于特殊的变量中,然后通过此特殊的变量获取地址值访问内存。
    为了更好地使用指针变量,C语言提供了获取变量地址和通过地址访问变量的运算符“&”和“*”。
    (1)取地址运算符“&”的使用格式为:&变量名,如&a表示变量a在内存中的地址。本运算符实现从变量到地址的转化。
    (2)指针运算符“*”的使用格式为:*指针变量名,如*p表示指针变量p所指向的变量的值。本运算符实现从地址到变量的转化。
    在本题中,程序的作用已经给出,下面分别分析各选项中的语句。在选项A中,定义了一个整型变量n和一个整型指针变量p,并使其指向一个空,即不指向任何变量,该语句是正确的语句;在选项B中,由于*p表示值,而&n表示地址,它们之间进行赋值操作明显是错误的;在选项C中,由于p是指针变量,没有&p表示方法,因此错误;在D选项中,输出的是p指针所指向的地址,而不是p指针所指向的变量值,不符合题目的要求。

  • 第6题:

    有以下程序include main(){ char *p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf

    有以下程序 #include <stdlib.h> main() { char *p,*q; p=(char*)malloc(sizeof(char)*20); q=p; scanf("%s %s",p,q); printf("%s %s\n",p,q); } 若从键盘输入:abc def<回车>, 则输出结果是

    A.def def

    B.abc del

    C.abc d

    D.d d


    正确答案:A
    解析:本题考查的知识点是字符型指针变量、malloc()函数的使用。本题首先定义两个字符型指针变量p和q,通过malloc()函数申请20个字符的存储空间,并把它的首地址赋给p,在把p的值赋给q,p和q指向同一个存储区。在scanf()语句中读取字符串到p和q指向的字符串,先把“abc”读取到p指向的存储区中,第一个空格是结束标记,第二个空格是分隔符,再把“def”存放到q指向的存储区,把原先的内容覆盖。所以p和q指向的存储区中内容是“def”,所以最后输出的def,clef.所以4个选项中A正确。

  • 第7题:

    以下程序中调用cin函数给变量a输入数值的方法是错误的,其错误原是()。includevoid m

    以下程序中调用cin函数给变量a输入数值的方法是错误的,其错误原是( )。 #include<iostream.h> void main() {int*p,*q,a,b; p=&a; eout<<"input a:"; cin>>p; }

    A.*p表示的是指针变量p的地址

    B.p表示的是变量a的地址,而不是变量a的值

    C.*p表示的是指针变量p的值

    D.*p只能用来说明p是一个指针变量


    正确答案:B
    解析: p表示的是变量a的地址,定义后*p表示的是变量a的值。

  • 第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题:

    以下程序中调用cin函数给变量a输入数值的方法是错误的,其错误原因是( )。 #include<iostream.h> void main {int * P,* q,a,b; P=&a: eout<<”input a:”; cin>>P:

    A.* P表示的是指针变量P的地址

    B.P表示的是变量a的地址,而不是变量a的值

    C.*P表示的是指针变量P的值

    D.*P只能用来说明P是一个指针变量


    正确答案:B
    P表示的是变量a的地址,定义后*P表示的是变量a的值。

  • 第10题:

    以下程序调用scanf函数给变量a输入数值的方法是错误的,其错误原因是()。includemain(){

    以下程序调用scanf函数给变量a输入数值的方法是错误的,其错误原因是( )。 #include <stdio.h> main() { int *p,*q,a,b; p=&a; printf("input a:"); scanf("%d",*p); }

    A.*p表示的是指针变量p的地址

    B.*p表示的是变量a的值,而不是变量a的地址

    C.*p表示的是指针变量p的值

    D.*p只能用来说明p是一个指针变量


    正确答案:B
    解析:本题经过定义语句和赋值后,p表示的是变量a的地址,*p表示的是变量a的值。

  • 第11题:

    以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误的原因是()。    main( )  { int *p,*q,a,b;     p=&a;     printf(“input a:”);     scanf(“%d”,*p);     ……  }

    • A、*p表示的是指针变量p的地址
    • B、*p表示的是变量a的值,而不是变量a的地址
    • C、*p表示的是指针变量p的值
    • D、*p只能用来说明p是一个指针变量

    正确答案:B

  • 第12题:

    单选题
    以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误的原因是()。    main( )  { int *p,*q,a,b;     p=&a;     printf(“input a:”);     scanf(“%d”,*p);     ……  }
    A

    *p表示的是指针变量p的地址

    B

    *p表示的是变量a的值,而不是变量a的地址

    C

    *p表示的是指针变量p的值

    D

    *p只能用来说明p是一个指针变量


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

  • 第13题:

    以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是

    main()

    { int *p,*q,a,b;

    p=&a;

    printf("input a:");

    scanf("%d",*p); }

    A.*p表示的是指针变量p的地址

    B.*p表示的是变量a的值,而不是变量a的地址

    C.*p表示的是指针变量p的值

    D.*p只能用来说明p是一个指针变量


    正确答案:B
    解析:考查格式输入语句scanf的使用。本题经过定义语句和赋值后,p表示的是变量a的地址,*p表示的是变量a的值。

  • 第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题:

    以下程序中调用cin函数给变量a输入数值的方法是错误的,其错误原因是includevoid ma

    以下程序中调用cin函数给变量a输入数值的方法是错误的,其错误原因是 #include<iostream.h> void main( ) { int * p, * q, a, b; p=&a; cout < < "input a:"; cin >> p;

    A.* p表示的是指针变量p的地址

    B.p表示的是变量a的地址,而不是变量a的值

    C.* p表示的是指针变量p的值

    D.* p只能用来说明p是一个指针变量


    正确答案:B
    解析:p表示的是变量a的地址,定义后 * p表示的是变量a的值。

  • 第17题:

    有以下程序includemain(){ char*p,*q;p=(char *)malloc(sizeof(char)*20);q=p;scanf(

    有以下程序 #include<stdlib.h> main() { char*p,*q; p=(char *)malloc(sizeof(char)*20);q=p; scanf(“%s%s”,p,q);printf(“%s%s\n”,p,q); } 若从键盘输入:abc def<回车>,则输出结果是

    A.def def

    B.abc def

    C.abc d

    D.d d


    正确答案:A
    解析:本题首先定义两个字符型指针变量p和q,通过malloc()函数申请 20个字符的存储空间,并把它的首地址赋给p,再把p的值赋给q,p和q指向同一个存储区。在scanf()语句中读取字符串到p和q指向的字符串,先把“abc”读取到P指向的存储区中,第一个空格是结束标记,第二个空格是分隔符,再把“def”存放到q指向的存储区,把原先的内容覆盖。所以p和q指向的存储区中内容是“def”,所以最后输出为def,def。

  • 第18题:

    以下程序中调用cin函数给变量a输入数值的方法是错误的,其错误的原因是( )。 #include(iostream.h) voidmain( ) {int*P,*q,a,b; p=&a; cout<<"inputa:"; cin>>P; }

    A.*P表示的是指针变量P的地址

    B.P表示的是变量a的地址,而不是变量a的值

    C.*P表示的是指针变量p的值

    D.*P只能用来说明P是一个指针变量


    正确答案:B
    B。【解析】p表示的是变量a的地址,定义后*P表示的是变量a的值。

  • 第19题:

    以下scanf函数调用语句中对结构体变量成员的不正确引用是 struct pupil { char name[20]; int age int sex; } pup[5],*p; p=pup;

    A.scanf("%s",pup[0].name);

    B.scanf("%d",&pup[0].age);

    C.scanf("%dT",&(p->sex));

    D.scanf("%d",p->age);


    正确答案:D
    解析:可用结构体变量名.数据成员名或者结构体指针->数据成员名两种方法来引用。注意:结构体类型的变量、数组和指针变量的定义。

  • 第20题:

    有以下程序: include main( ) { char *p ,* q; p=(char * )malloc(sizeof(char

    有以下程序: #include<stdlib.h> main( ) { char *p ,* q; p=(char * )malloc(sizeof(char) * 20);q=p; scanf("%s%s",p,q); printf("%s%s\n",p,q); } 若从键盘输入:abc def<回车>,则输出结果是

    A.def def

    B.abc def

    C.abc d

    D.d d


    正确答案:A

  • 第21题:

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

  • 第22题:

    以下scanf函数调用语句中对结构体变量成员的不正确引用的是()。  struct node{      char name[20];      int age;      int sex; }student[5],*p;  p=student; 

    • A、scanf(“%s”,student[0].name);
    • B、scanf(“%d”,&student[0].age);
    • C、scanf(“%d”,&(p->sex));
    • D、scanf(“%d”,p->age);

    正确答案:D

  • 第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题:

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

    正确答案: A
    解析:
    B项的正确写法应为“p=&n;”,将变量n的地址赋给指针p;C项的正确写法应为“scanf("%d",p);”;D项的正确写法应为“printf("%d",*p);”。答案选择A选项。