有以下程序#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);

题目

有以下程序

#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);


相似考题
更多“有以下程序#include &lt;stdio.h&gt;main( ){ int n,*p=NULL;*p=&amp;n;printf("Input n:") ”相关问题
  • 第1题:

    有以下程序 include void fun(char **p) { ++p; printf("%s\n",*p);

    有以下程序 #include <stdio.h> void fun(char **p) { ++p; printf("%s\n",*p); } main() { char *a[]={"Moming","Afternoon","Evening","Night"}; fun(a); } 程序的运行结果是

    A.Afternoon

    B.fternoon

    C.Morning

    D.orning


    正确答案:A
    解析:本题主函数中定义了一个指针数组a,可以将它看成一个以字符指针为元素的一维数组。和—般的一维数组名能赋给同类型指针变量一样,该字符指针数组也可以赋给指向字符指针的指针(即字符型二级指针),所以数组名a可以用作函数fun()的实参。

  • 第2题:

    有以下程序include<stdio.h>int*f(int*p,int*q);main( ){int m=1,n=2,*r=&m;r=f(r,&am

    有以下程序

    include<stdio.h>

    int*f(int*p,int*q);

    main( )

    {int m=1,n=2,*r=&m;

    r=f(r,&n);printf(”%d\n”,*r);

    }

    int-f(int*P,int*q)

    (return(*p>*q)?p:q;)

    程序运行后的输出结果是______。


    正确答案:2
    2 解析:函数f的返回值的类型是int*,作用是返回两个int*型指针所指变量中值大的那个指针的。本题中定义了一个int*型指针r并置初值&m,即指针r指向m。r=f(r,&n),由于m的值小于n值,所以f函数返回值为&n,所以输出为2,即n值。

  • 第3题:

    有以下程序include.main(){char*p="abcde\ofghjik\0";printf("%d\n",strlen(p));} 程

    有以下程序 #include.<string.h> main() { char *p="abcde\ofghjik\0"; printf("%d\n",strlen(p)); } 程序运行后的输出结果是

    A.12

    B.15

    C.6

    D.5


    正确答案:D
    解析:本题首先定义了一个字符型指针变量p,并用一个宇符串给它赋值,然后调用printf()函数输出p所指向的字符串的长度。字符串的结束标记为“\0”,其长度为“\0”前的字符个数,故长度为5。所以4个选项中D正确。

  • 第4题:

    有以下程序includevoid f(int *p,int *q);main(){ int m=1,n=2,*r=&m;f(r, &n

    有以下程序 #include<stdio.h> void f(int *p,int *q); main() { int m=1,n=2,*r=&m; f(r, &n); printf("%d,%d",m,n); } void f(int*p,int*q) {p=p+1; *q=*q+1;) 程序运行后的输出结果是______。

    A.1,3

    B.2,3

    C.1,4

    D.1,2


    正确答案:A
    解析:本题主要考查函数实参和形参之间的传递,C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只能由实参传绐形参,而不能由形参传回来给实参。f(r&n)把n的地址传递给q,通过地址传递的函数可以有返回值,因此,n的值为q的返回值3,又因为p是形参变量没有返回值,所以m的值没有改变,因此,选项A是正确的。

  • 第5题:

    有以下程序 include include int fun(int n) {int *

    有以下程序 #include <stdio.h> #include <stdlib.h> int fun(int n) {int *p; p=(int*)malloc(sizeof(int)); *p=n; return *p; } { int a; a=fun(10); printf("%d\n",a+fun(10)); } 程序的运行结果是______。

    A.0

    B.10

    C.20

    D.出错


    正确答案:C
    解析:malloc(sizeof(int))的作用是开辟一个长度为sizeof(int)存储空间,并通过强制类型转换(int*)将此存储空间的地址赋给了—个整型的指针变量p。然后执行语句“*p=n”,使得*p的值为10,并通过返回此值,在主函数中输出a+10的值,即输出20。