niusouti.com
参考答案和解析
正确答案:B
更多“已知:int n=10;那么下列语句中错误的是()。A.int*p=new long[n];B.int p[n];C.int*p=new long(n); ”相关问题
  • 第1题:

    有以下程序: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

  • 第2题:

    已知n是一个int型变量,下列语句中错误的是( )。

    A.long*p=new long[n];

    B.long p[n];

    C.long*p=new long(n);

    D.long p[10];


    正确答案:B
    解析:此题考查的是数组、指针及关键字new。说明一维数组的一般形式是:数组类型数组名[数组长度];其中数组长度必须是整型常量或常量表达式。选项B)中,n是一个变量,不能做数组的长度,故选项B)错误;其他选项均正确。

  • 第3题:

    下列函数原型声明中,错误的是

    A.int function(int m,int n);

    B.int function(int,int);

    C.int function(int m=3,int n);

    D.int function(int&m,int&n);


    正确答案:C
    解析:在函数原型中指定默认参数值时,如果函数中有多个参数,则默认参数应从右至左定义,否则就是无效的,故本题选C。

  • 第4题:

    若有以下函数首部: int fun(double x[10],int *n) 则下面针对此函数的函数声明语句中正确的是( )。

    A.int fun(double x, int *n);

    B.int fun(double, int);

    C.int fun(double *x, int n);

    D.int fun(double*, int*);


    正确答案:D
    解析:本题中的fun函数有两个参数,一个类型是double型一维数组,另—个是int型指针。而在C语言中,一维数组用作函数参数和该数组元素的指针类型是等价的。所以本题的正确答案是选项D。

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

    下列定义数组的语句中,正确的是( )。

    A.int N=10; int x[N];

    B.#define N 10 int x[N];

    C.int x[0..10];

    D.int x[];


    正确答案:B

  • 第7题:

    若有以下函数首部:

    int fun(double x[10],int*n)

    则下面针对此函数的函数声明语句中正确的是( )。

    A.int fun(double,int);

    B.int fun(double木,int*);

    C.int mn(double*x,int n);

    D.int fun(double x,intint*n)


    正确答案:B
    函数声明的一般形式为:“类型说明符被调函数名(类型形参,类型形参,……);”或“类型说明符被调函数名(类型,类型,……);”由于函数首部为intfun(doublex[10],int*n),因此B选项正确。

  • 第8题:

    下列选项中,能正确定义数组的语句是( )。

    A.int num[0..2008];

    B.int num [];

    C.int N=2008; int num[N];

    D.#define N 2008; int num[N];


    正确答案:D
    通过define进行宏定义,将N赋值为2008,然后定义一个数组,整型长度为2008,所以本题答案为D。

  • 第9题:

    已知:intn=10;那么下列语句中错误的是

    A.int*p=new long[n];

    B.int p[n];

    C.int*p=new long(n);

    D.int p[10];


    正确答案:B
    解析:本题考核指针、数组和new运算符。运算符new用于动态申请存储空间,它的操作数为某种数据类型且可以带有初值表达式或元素个数,若带初值,则其表达式为:指针>=new类型>(初值);如C选项所示,若带有元素个数,则其语法格式为:《指针》=new类型>[元素个数>],如A选项所示。数组定义中数组大小必须为常量,而B选项中的n为一变量所以是错误的。

  • 第10题:

    下列定义数组的语句中,正确的是( )。

    A.int N=10;int x[N]:

    B.#define N l0 ; int x[N];

    C.int x[0..10];

    D.int x[];


    正确答案:D
    选项A、B中n为变量,C语言中不允许动态定义数组维数,即维数不能是变量。选项C无此语法。

  • 第11题:

    下列程序的输出结果是

    class Father{

    int m.n;

    Father(int a,int B)

    { m=a;

    n=b

    }

    void show ( ){

    System.out.println("m and n:"+m+" "+n);

    }

    }

    class Son extends Father{

    int p;

    Son (int a,int b,int C)

    { super(a,B) ;

    p=c;

    }

    void show(){supur.show( );

    System.out.println("p:"+p);

    }

    }

    class Test {

    public static void main (String args[ ])

    { Son s:new Son(6,7,8);

    s.show( );

    }

    }

    A.m and n:6 8 p:7

    B.m andn:6 7 p:8

    C.m and n:7 8 p:6

    D.m and n:8 7 p:6


    正确答案:B
    解析:如果你希望访问一个覆盖方法的超类版本,可以通过super来做到这一点,本题中show()的超类版本在子类版本内被调用。

  • 第12题:

    下列有关指针的用法中错误的是( )。

    A.int i;int *p=&i;

    B.int i;int *p;i=*p;

    C.int *p;p=0;

    D.int i=5;int *p;p=&i;


    正确答案:B
    解析:“inti;”语句定义了一个整型变量i。“int*p”定义了一个整型指针p。选项A)中的“int*p=&i;”是定义整型指针变量p,并指向整型i的地址。选项B)中“i=*p”语句是将p指向的变量赋值给i,而指针p没有初始化,所以选项B)错误。选项C)中“p=0;”表示p指向0的地址。选项D)中“&i”为取i的地址,并赋值给p。

  • 第13题:

    下列语句中错误的是( )。

    A.int a[][]=new int[2][];

    B.int a[][]=new int[][];

    C.int a[][]=new int[2][3];

    D.int[][] a=new int[3][2];


    正确答案:B
    解析:在Java中,定义二维数组的形式不是唯一的,既可以像选项C、D那样,在使用new运算符为数组分配内存空间时指出每一维的容量;又可以像选项A那样,在为数组分配内存空间时只指定第一维(最左边)的容量。

  • 第14题:

    已知:int n=10; 在下列定义引用的语句中,正确的是( )。

    A.int &x=n;

    B.int x=&n;

    C.int &x;

    D.int &x=&n;


    正确答案:A
    解析:引用是个别名,建立引用后,引用即作为目标的别名而使用,对引用的改动实际上就是对目标的改动。要求引用的声明语句要同时包括变量的数据类型、引用操作符“&”、引用名、赋值符号和目标名。引用在声明时必须进行初始化,一旦初始化,便不能作为其他变量的引用而使用。

  • 第15题:

    下面的语句中错误的是

    A.int a=5;int x[a] ;

    B.const int a=5;int x[a] ;

    C.int n=5;int * p=new int[a] ;

    D.const int n=5;int * p=new int[a] ;


    正确答案:A
    解析:在C++中定义数组时,数组的范围参数在静态定义时必须是一个常数,而在动态分配内存定义时可以是常数,也可以是一个赋了值的参数。故选项A) 是错误的定义方法。

  • 第16题:

    在下面语句中,其含义为“p为指向含n个元素的一维数组的指针变量”的定义语句是 ( )

    A.int p [n]

    B.int * p( );

    C.int * p(n);

    D.int( * p)[n]


    正确答案:D

  • 第17题:

    若有以下函数首部 int fun(double x[lO],int *n) 则下面针对此函数的函数声明语句中正确的是______。

    A.int fun(double x, int *n);

    B.int fun(double, int);

    C.int fun(double *x, int n);

    D.iht fun(double*,int*);


    正确答案:D
    解析:函数声明可以照写已定义的函数的首部,再加一个号就成为了对函数的声明,在函数声明中也可以不写形参名,而只写形参的类型,但要保证与函数首部写法上的—致,即函数类型、函数名、参数个数、参数类型和参数顺序相同。字符数组可用指针来表示,所以选顶D正确。

  • 第18题:

    下列选项中,能正确定义数组的语句是( )。

    A.int num[0..2008];

    B.int lllllll[];

    C.int N:2008:

    D.define N 2008int num[N1;int num[N];


    正确答案:D
    C语言不允许定义动态数组,定义数组的大小必须为常量表达式。A选项错误,C语言中数组没有此类型的定义方法;B选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定初值的个数;c选项错误,N为变量,不能用来定义数组大小。因此D选项正确。

  • 第19题:

    已知n是一个int型变量,下列语句中错误的是( )。

    A.long*p=new long[n];

    B.long p[n];

    C.long*p=newl ong(n);

    D.long p[10];


    正确答案:B
    解析: 此题考查的是数组、指针及关键字new。说明一维数组的一般形式是:数组类型数组名[数度];其中数组长度必须是整型常量或常量表达式。选项B)中,n是一个变量,不能做数组的长度,故选项B)错误;其他选项均正确。

  • 第20题:

    下面的语句中错误的是( )。

    A.int a=5;int x[a];

    B.const int a=5;int x[a];

    C.int n=5;int *p=new int[n];

    D.const int n=5;int *p=new int[a];


    正确答案:A

  • 第21题:

    已知:int n=10;那么下列语句中错误的是

    A.int*p=new long[n];

    B.int p[n];

    C.int*p=new long(n);

    D.int p[10];


    正确答案:B
    解析:本题考核指针、数组和new运算符。运算符new用于动态申请存储空间,它的操作数为某种数据类型且可以带有初值表达式或元素个数,若带初值,则其表达式为:指针>=new类型>(初值),如C选项所示,若带有元素个数,则其语法格式为:指针>=new类型>[元素个数>],如A选项所示。数组定义中数组大小必须为常量,而B选项中的n为一变量所以是错误的。

  • 第22题:

    已知:int n=1;在下面定义引用的语句中,正确的是( )。

    A.int x=&n;

    B.int &x =n;

    C.int &x;

    D.int &x=&n;


    正确答案:B
    解析:引用实际上就是别名,它与被引用变量拥有同一个地址空间。选项A) 中&m表示m的地址,而x是一个整型变量,在C++中不能从地址值隐式转换为整型值,故选项A) 是错的。选项B) 中其操作实际上就是为m赋于一个别名x,因此选项B)是对的。选项C) 中引用必须要用被引用的对象,即引用必须要初始化:选项D) 中x是一个整型引用,而其被引用的对象却是m的地址,存在着与选项A) 类似的错误,因此选项D) 也是错的。

  • 第23题:

    有定义语句:“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*型指针。

  • 第24题:

    以下n变量赋值必须进行强制类型转换的是( )。

    A.int n;n=100+10;

    B.int n;n=100F+10;

    C.int n;short m=10;n=100+m;

    D.int n;short m=10;char s=2;n=s+m;


    正确答案:B