更多“单选题若有定义语句:int m[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是(  )。A m[--i]B m[2*2]C m[m[0]]D m[m[i]]”相关问题
  • 第1题:

    阅读下面程序: include int fun2(int m) { if(m%3==0) return 1; else return 0; }

    阅读下面程序:

    include <iostream.h>

    int fun2(int m)

    {

    if(m%3==0)

    return 1;

    else

    return 0;

    }

    void fun1(int m, int &s)

    {

    int i;

    for (i=1; i<m; i++)

    if(fun2(i))

    S=S*i;

    }

    void main()

    {

    int n=9, s=2;

    fun1(n, s);

    cout<<s<<end1;

    }

    该程序的运行结果是【 】。


    正确答案:36
    36

  • 第2题:

    若有定义语句“intm[]={5,4,3,2,1),i=4;”则下列对m数组元素的引用中错误的是( )。A.m[--i]SXB

    若有定义语句“intm[]={5,4,3,2,1),i=4;”则下列对m数组元素的引用中错误的是( )。

    A.m[--i]

    B.m[2*2]

    C.m[m[o]]

    D.m[m[i]]


    正确答案:C
    C。【解析】数组的下标是从零开始的。一维数组的一般定义方式为数型说明符数组名[常置表达式],其中“[]”中的内容可以是整型数量,也可以是整型表达式。选项C中,m[0]=5,m[m[o]]=m[5],数组下标越界。

  • 第3题:

    下列给定程序中,函数fun()的功能是:给一维数组a输入任意4个整数,并按如下的规律输出。例如输入1,2,3,4,程序运行后输出以下方阵:

    4 1 2 3

    3 4 1 2

    2 3 4 1

    1 2 3 4

    请改正程序中的错误,使它能得出正确的结果。

    注意;不要改动main 函数,不得增行或删行,也不得更改程序的结构。

    试题程序;

    include <stdio.h>

    define M 4

    /*******************************/

    void fun(int a)

    {int i,j,k,m;

    printf("Enter 4 number: ");

    for (i=0; i<M; i++) scanf ("%d", &a [i] );

    printf ("\n\n The result : \n\n ");

    for (i=M; i>0; i--)

    { k=a [M-1];

    for (j=M-1; j>0; j--)

    /**********************************/

    a[j]=a[j+1];

    a[0]=k;

    for (m=0 ;m<M; m++ ) printf ("%d ", a [m]);

    printf ("\n ");

    }

    }

    main ()

    {int a [M];

    fun(a); printf("\n\n ");

    }


    正确答案:(1)错误:void fun (int a) 正确:int fim (int *a (2)错误:a[j]=a[j+1]; 正确:a[j]=a[j-1];
    (1)错误:void fun (int a) 正确:int fim (int *a (2)错误:a[j]=a[j+1]; 正确:a[j]=a[j-1]; 解析:其实,该题中题目信息已经告诉我们按“如下规律”,这就需要去认真分析矩阵的“规律”了,在第1列中,数列以4开始递减,直至1,在该数列中,行和列都是递减循环排列,所以题目在循环的时候有循环条件for(i=M;i>0;i--)和 for (j=M-1;j>0;j--),当然每次循环结束后在列中的赋值语句应该是a[j]=a[j-1];。

  • 第4题:

    以下函数模板max()的功能是返回数组a中最大元素的值。请将横线处缺失部分补充完整。

    template<typename T>T max(T a[],int n)

    {

    T m=a[0]

    for(int i=1;i<n;i++)

    if(a[i]>m)______;

    return m;

    }


    正确答案:m=a[i]
    m=a[i] 解析:此题考查的是函数模板、if语句、for循环等知识点。函数模板max()的功能是返回数组a中最大元素的值,所以当a[i]是最大值时,应将a[i]的值赋值给m。

  • 第5题:

    以下程序中,函数 sumColumM的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。

    define M 2

    define N 4

    void SumColumMin(int a[M][N],int *sum)

    { int i,j,k,s=0;

    for(i=0;i〈N;i++)

    { k=0;

    for(j=1;j<M;j++)

    if(a[k][i]>a[j][i])k=j;

    s+=【 】;

    }

    【 】 =s;

    }

    main( )

    { int x[M][N]={3,2,5,1,4,1,8,3},s;

    SumColumMin(【 】);

    printf("%d\n",s);

    }


    正确答案:a[k][i] *sum x[M][N]&s
    a[k][i] *sum x[M][N],&s 解析:本题中if(a[k][I] >a [j] [I]) k=j;把一列中值较小的一个元素的索引存储到k中,所以[18]填[k] [i],[19]填返回值,右值为整型,所以应该填。sum,SnmColumMin(  )函数第一个参数为数组a[M][N],第二个参数为一个整型指针,所以[20]填x[M][N],&s。

  • 第6题:

    以下程序的运行结果是【 】。

    include<iostream.h>

    func(int a,int b)

    {

    statlC int m=0,i=2;

    i+=m+1;

    m=i+a+b;

    return m;

    }

    void main()

    {int k=4,m=1,p;

    p=func(k,m);cout<<p<<”,”;

    p=func(k,m);cout<<p<<endl;

    }


    正确答案:817
    8,17

  • 第7题:

    下列给定程序中,函数fun()的功能是:输出M行N列整数方阵,然后求两条对角线上的各元素之和,返回此和数。

    请改正程序中的错误,使它能得出正确的结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.

    试题程序:

    include <conio.h>

    include <stdio.h>

    define M 5

    /**********************************/

    iht fun(int n, int xx[ ][ ])

    { int i, j, sum=0;

    printf("\nThe %d x %d matrix:\n",M,M);

    for(i=0;i<M;i++)

    { for (j=0; j<M; j++)

    /**********************************/

    printf("%4f",xx[i][j]);

    printf("\n");

    }

    for(i=0;i<n;i++)

    sum+=xx[i][i]+xx[i][n-i-1];

    return(sum);

    }

    main ()

    { int aa[M][M]={{1,2,3,4,5},{4,3,2,1,0},

    {6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};

    clrscr();

    printf("\nThe sum of all elements on 2

    diagnals is %d",fun(M, aa));

    }


    正确答案:(1)错误: int fun(iht nintxx[][]) 正确: int ltm(iht mint r.x[][M]) (2)错误: printf("%4ff'xx[i]fj]); 正确: printf("%4d"xx[i][j]);
    (1)错误: int fun(iht n,intxx[][]) 正确: int ltm(iht mint r.x[][M]) (2)错误: printf("%4f,f',xx[i]fj]); 正确: printf("%4d",xx[i][j]); 解析:该题错误比较隐蔽,一般的C语言上机考试很少涉及printf顺数中的错误,在这里,我们只要明白“d”和“f”的区别就OK了。格式字符d表示:以带符号的十进制形式输出整数(正整数不输出符号);格式字符f表示;以小数形式输出单、双精度,隐含输出6位小数。

  • 第8题:

    有以下程序

    #include <stdio.h>

    Main()

    { int i,j,m=1;

    For{i=i;i<3;1++}

    ( For(j=3;j>0;j--)

    {iF(i+j>3)Break;

    m*=i*j;

    }

    }

    PrintF(“m=%d\n”,m)

    }

    程序运行后的输出结果是

    A.m=6

    B.m=2

    C.m=4

    D.m=5


    正确答案:A
    解析:第一次循环i=1,j=3和j=2时都能执行m*=i*j,此时得到m的值为6;然后进行第二次循环i=2,j=3时会执行break语句,内部循环直接结束,此时i再加1,也会导致退出外部循环,所以最终结果m的值为6。

  • 第9题:

    设数组a[0..n-l,O..m-l] (n>l,m>l)中的元素以行为主序存放,每个元素占用1个 存储单元,则数组元素a[ij](0<i<n,0<j<m)的存储位置相对于数组空间首地址的偏移量为(35)。

    A.j*m+i

    B.i*m+j

    C.j*n+i

    D.i*n+i


    正确答案:B
    本题考查程序语言基础知识。对于元素a[ij]按行存储方式下,其前面共有i行(行下标为0至行下标为i-l)、每行m个元素,合计i*m个元素。数组a中行下标为i的元素有a[i,0],a[i,l]....a[i,j-1],a[i,j]....a[i,m-1],显然在该序列中,a[ij]之前有j个元素,因此,数组元素a[i.i](0in,0jm)之前共有i*m+j个元素,由于每个占用1个存储单元,故该元素的存储位置相对于数组空间首地址的偏移量为i*m+j。

  • 第10题:

    设数组a[0..n-1,0..m-1](n>1,m>1)中的元素以行为主序存放,每个元素占用4个存储单元,则数组元素a[i,j](0≤i
    A.(j*m+i)*4
    B.(i*m+j)*4
    C.(j*n+i)*4
    D.(i*n+j)*4

    答案:B
    解析:
    【解析】由于a[i,j](0≤i

  • 第11题:

    写出程序的运行结果。 #include main( ) { int i=0,j=0,k=0,m; for ( m=0;m<4;m++ ) switch ( m ) { case 0:i=m++; case 1:j=m++; case 2:k=m++; case 3:m++; } printf ("/n%d,%d,%d,%d",i,j,k,m); } 该程序的执行结果是()。

    • A、0,1,2,5
    • B、0,1,2,4
    • C、0,1,1,3
    • D、0,1,2,3

    正确答案:A

  • 第12题:

    若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为()。(设a[0][0]位于数组的第一个位置上)

    • A、i*m+j
    • B、j*m+i
    • C、i*m+j-1
    • D、i*m+j+1

    正确答案:A

  • 第13题:

    给定程序MODllC中函数fun的功能是:输出M行M列整数方阵,然后求两条对角线上各元素之和,返回此和数。

    inClude<coMo.h>

    inClude<stdio.h>

    dehne M 5

    /************fOUnd************/

    int fun(int n,int xx[][])

    {int i,j,sum=0;

    printf("\n The%dx%d matrix:\n"M,M);

    for(i=0;i<M;i++)

    { for(j=0;j<M;j++)

    /************found************/

    printf("%f",xx[i][j]);

    printf("\n");

    }

    for(i=0;i<n;i++)

    sum+=xx[i][i]+XX[i][[n-i-1];

    return(sum);

    }

    main( )

    {int aa[M][M]={{1,2,3,4,5),{4,3,2,1,0),

    {6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};

    clrscr( );

    printf("\n The sum Of all elements On 2 diagnals is %d."fun(M,aa));

    }


    正确答案:int fun(int nint xx[][]) 改为 int fun(int nint xx[][M)) printf("%fxx[i][j]); 改为 printf("%d"xx[i][j]);
    int fun(int n,int xx[][]) 改为 int fun(int n,int xx[][M)) printf("%f,xx[i][j]); 改为 printf("%d,"xx[i][j]); 解析:二维数组作为函数形参时,二维长度不可缺省,只能省略一维的长度。在格式输出函数中,血型数据输出时对应的控制符是%d.

  • 第14题:

    若二维数组a有m列,且设a[0][0]位于数组的第一个位置上,则计算任一元素a[i][j]在数组中的位置的式子为( )

    A.i*m+j

    B.j*m+i

    C.i*m+j-1

    D.i*m+j+1


    正确答案:D

  • 第15题:

    阅读以下说明和C++程序,将应填(n)处的字句写在对应栏内。

    [说明]

    设计一程序,输入10个整数到一个数组中,调整这10个数在数组中的位置,使得其中最小的一个数成为数组的首元素,最大的一个数成为数组的末元素。

    [C++程序]

    include <iostream.h>

    define SIZE 10

    void main ( )

    {

    int data [SIZE];

    int m;

    cout<<"请输入"<<SIZE<<"个整数:";

    for ( m=0;m<SIZE; m++ ) (1);

    int j=0,k=0;

    for ( int i=1;i<SIZE; i++ )

    if ((2)) j=i;

    else if ( data[i]<data[k] ) (3);

    if (j>0 ) {

    int d=data[0];

    (4);

    data[k]=d;

    }

    if ( k<SIZE-1 )

    {

    int d=data [SIZE- 1 ];

    data[SIZE- 1 ]=data[j];

    (5);

    }

    cout<<end1<<" 排序后: ";

    for ( m=0;m<SIZE; m++ ) cout<<data[m]<<" " ;

    }


    正确答案:(1)n>>data [m] (2) data[i]>data[j] (3) k=i (4) data[0]=data[k] (5) data[j]=d
    (1)n>>data [m] (2) data[i]>data[j] (3) k=i (4) data[0]=data[k] (5) data[j]=d

  • 第16题:

    以下程序的功能是调用函数fun计算m=1-2+3-4+…+9-10,并输出结果,请填空。int fun( int n){ int m=0,f=1,i; for(i=1;i<=n;i++) { m+=i*f; f=-f; } return m;}main{ printf("m=%d\\n",); }


    正确答案:fun(10)
    在本题中,题目给出了程序的功能是调用函数fun计算m=1-2+3-4+…+9-10,并输出结果。
    在程序中,首先定义了fun函数,该函数带有一个整型变量的形参,在函数体中,定义三个整型变量m、f和i,变量m用来存放计算的结果,变量i作为循环变量,变量f用来控制数据的正负。程序运行for循环。
    当循环变量i=1时,m=0+1*1=1,然后将变量f变为-1。
    当循环变量i=2时,m=1+2*(-1),然后将变量f变为1。
    当循环变量i=3时,m=1+2*(-1)+3*1,然后将变量f变为-1。以此类推,直到循环结束,可以实现m=1-2+3-4+…+9-10。最后通过return语句返回m的结果。
    在主函数中,只有一条输出语句,本题的空就是输出语句的输出表达式,从题目的要求可以知道,此空是调用fun计算m=1-2+3-4+…+9-10,从上面对fun的分析可以,形参n就是要计算数的最大数。因此,此空需要填写的内容为fun(10)。

  • 第17题:

    若有定义语句:int m[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是______。

    A.m[-i]

    B.m[2*2]

    C.m[m[0]]

    D.m[m[i]]


    正确答案:C
    解析:一维数组的定义方式为:类型说明符 数组名[常量表达式]。其中“常量表达式”表示元素的个数,即数组长度。元素的下标从0开始,最大下标是元素个数减一。本题定义了一个由5个元素(m[0[到m[4])组成的数组。选项A表示对m[3]的引用;选项B表示对m[4]的引用;由于m[0]的值为5,所以选项C表示m[5],但由于m数组元素的最大下标为4,所以本引用下标越界;由于m[i]即m[4]的值为1,所以选项D表示对m[1]的引用。

  • 第18题:

    若有说明int m[3][4]={3,9,7,8.5},(*q)[4];和赋值语句q=m;,则对数组元素m[i][j](其中0<=i<3,0<=j<4)值的正确引用为( )。

    A.(q+i)[j]

    B.*q[i][j]

    C.*(*q[i]+j)

    D.*(*(q+i)+j)


    正确答案:D
    解析:*(q+i)指向第i行首地址,*(*(q+i)+j)代表第i行第j个元素。

  • 第19题:

    若有定义语句:int m[]={1,2,3,4,5},i=4;,则下面对m 数组元素的引用中错误的是A.m[++i] B.m[1*2] C.m[m[0]] D.m[m[--i]]


    正确答案:A
    本题考查一维数组的引用。一维数组表示为数组名[下标],下标可以是整型常量或整型表达式,题目中给出的四个选项,在格式上都是正确的。A选项中,首先进行++i运算,运算的结果为5,而该数组初始化后有效取值范围为m[0]~m[4],m[5]不存在,引用错误。B选项引用的是m[2]中的数值3。C选项先计算m[0]中的数据,得到1,随后计算m[1]中的数值,可得2。D选项先计算m[--i],得到m[3]中的数据4,随后计算m[4]中的数值,可得5。

  • 第20题:

    有以下程序: int m=1; void fun(int *n) { static int m=2; *n*=m-1; m+=2; } main() { int i; for(i=1;i<4;i++) { fun(&m); printf("%d",m); } } 程序的输出结果是( )

    A.1317

    B.2630

    C.1315

    D.1111


    正确答案:C

  • 第21题:

    若有说明int m[3][4]={3,9,7,8.5},(*q)[4];和赋值语句q=m;,则对数组元素m[i][j](其中O<=i<3,0<=j<4)值的正确引用为( )。

    A)(q i)[j]

    B)*q[il][j]

    C)*(*q[i] j)

    D)*(*(q i) j)


    正确答案:D

  • 第22题:

    若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为(假设a[0][0]位于数组的第一个位置上)( )

    A.i*m+j
    B.j*m+i
    C.i*m+j-1
    D.i*m+j+1

    答案:A
    解析:

  • 第23题:

    若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式是()(假设a[0][0]位于数组的第一个位置上。)

    • A、i*m+j
    • B、j*m+i
    • C、i*m+j-1
    • D、i*m+j+1

    正确答案:D