参考答案和解析
B
更多“下面程序段的运行结果是()。 int m[]={5,8,7,6,9,2},i=1; do{ m[i]+=2; } while(m[++i]>5); for(i=0;i<6;i++) printf("%d ",m[i]);”相关问题
  • 第1题:

    有以下程序:#define N 20fun(int a[],int n,int m){ int i; for(i=m;i>n;i--)a[i+1]=a[i]; return m;}void main(){ int i,a[N]={1,2,3,4,5,6,7,8,9,10}; fun(a,0,N/2); for(i=0;i<5;i++)printf("%d",a[i]);}程序运行后的输出结果是( )。A.10234 B.12344 C.12334 D.12234


    正确答案:D
    函数的功能是将某个间隔内的数据向后移动一位,m=5,将a[5]赋给a[6],a[4]赋给a[5],……;a[1]赋给a[2],最后i--,i=0,不满足i>0,退出循环,所以a[0],a[1]的值不变。

  • 第2题:

    以下程序的运行结果是 int k=0; void fun(int m) {m+=k;k+=m;printf("m=%d k=%d",m,k++);} main() {int i=4; fun(i++); printf("i=%d k=%d\n",i,k); }

    A.m=4 k=5 i=5 k=5

    B.m=4 k=4 i=5 k=5

    C.m=4 k=4 i=4 k=5

    D.m=4 k=5 i=4 k=5


    正确答案:B
    解析: 由于在main()函数中,变量i=4,所以就调用fun(4),则输出“m=4k=4”。然后变量k增1等于5,变量i增1等于5,所以main()函数的“pdntf("i=%d k=%d\ n",i,k);”语句输出“i=5 k=5”。

  • 第3题:

    以下程序运行后的输出结果【 】。

    struct NODE

    {int k;

    struct NODE *link;

    };

    main()

    {structNODEm[5],*p=m,*q=m+4;

    int i=0;

    while(p!=q){

    p->k=++i;p++;

    q->k=i++;q-;

    }

    q->k=i;

    for(i=0;i<5;i++)printf("%d",m[i].k);

    printf("\n");

    }


    正确答案:13431
    13431 解析:程序执行过程如下:
    p=m,q=m+4,条件9!=q成立,执行p->k=++i;,由于是“前加”,所以m[0].k=1,执行p++后p=m+1;执行q->k=i++;,由于是“后加”,所以m[4].k=1,然后使得i加上1,即i=2,q-后,q=m+3: p=m+1,q=m+3,条件p!=q成立,执行p->k=++i;,由于是“前加”,所以i=3,m[0].k=3,执行p++后p=m+2:执行 p->k=++i;,由于是“后加”,所以m[4].k=3,i=4,q-后,q=m+2; p=m+2,q=m+2,条件p!=q不成立,则执行p->k=i;即m[2].k-4;故输出的值为13431。

  • 第4题:

    下列程序的输出结果是 #include"stdio.h" #define N 3 #define M 3 void fun(int a[M][N]) { printf("%d\n",*(a[1]+2));} main() { int a[M][N]; int i,j; for(i=0;i<M;i++) for(j=0;j<N;j++) a[i][j]=i+j-(i-j); fun(a);}

    A.3

    B.4

    C.5

    D.6


    正确答案:B
    解析:若有以下定义:inta[3][4],i,j;且当0=i3,0=j4,则可以有以下几种方式来引用数组中的第i行,第j列的元素:a[i][j],*(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。

  • 第5题:

    有以下程序 #define N 20 fun(int a[],int n,int m) { int i,j; for(i=m;i>=n;i--) a[i+1]=a[i]; } main() { int i,a[N]={1,2,3,4,5,6,7,8,9,10}; fun(a,2,9); for(i=0;i<5;i++) printf("%d",a[i]); } 程序运行后的输出结果是——。

    A.10234

    B.12344

    C.12334

    D.12234


    正确答案:C

  • 第6题:

    有以下程序: # define N 20 fun(int a[], int n, int m) { int i, j; for(i=m; i>=n; i--)a[i+1]=a[i]; } main() { int i, a[N]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; fun(a, 2, 9); for(i=0; i<5; i++)printf("% d", a[i]); } 程序运行后的输出结果是______。

    A.10234

    B.12344

    C.12334

    D.12234


    正确答案:C
    解析:由于用了宏定义a[10]~a[19]均为0。函数fun的功能是把从a[n]到a[m]中的元素依次赋给后面的一个元素。调用了fun(a, 2, 9)以后,a[N]={1, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10}。

  • 第7题:

    有以下程序 prt(int *m,int n) {int i; for(i=0;i<n;i++)m[i]++; } main() { int a[]={1,2,3,4,5},i; prt(a,5); for(i=0;i<5;i++) printf("%d,",a[i]); } 程序运行后的输出结果是

    A.1,2,3,4,5,

    B.2,3,4,5,6,

    C.3,4,5,6,7,

    D.2,3,4,5,1,


    正确答案:B
    解析:函数ptr(*m,n)中,参数m传递的是一个地址,所以可以改变主函数中数组a的各元素值,函数ptr(*m,n)的功能是将数组的各元素都自加1,所以,最后数组a中的各元素为2,3,4,5,6。

  • 第8题:

    下列程序的执行结果是______。 print(int*b,int m) { int i; for(i=0;i<m;i++) {*b=i; b++; } printf("%d\n",*--B) ; } main() { int a[5]=}1,2,3,4,5}; print(a,5);}

    A.5

    B.4

    C.3

    D.2


    正确答案:B
    解析:函数print中形参b指向数组a的首地址,for循环将0~4依次赋给元素a[0]~a[4],指针b指向数组后的地址,输出函数先将指针b自减,指向元素a[4],输出为4。

  • 第9题:

    下列程序的输出结果是 #include"stdio.h" #define N3 #define M3 void fun(int a[M][N]) { printf("%d\n",*(a[1]+2));} main() { int a[M][N]; int i,j; for(i=0;i<M;i++) for(j=0;j<N;j++) a[i][j]=i+j-(i-j); fun(a);}

    A.3

    B.4

    C.5

    D.6


    正确答案:B
    解析: 若有以下定义:int a[3][4],i,j;且当 0=i3,0=j4,则可以有以下几种方式来引用数组中的第i行,第j列的元素:
    a[a][j],*(a[i]+j),*(*(a+i)+j),(*(a+i)[j],*(&a [0][0]+4*i+j)”。

  • 第10题:

    有以下程序prt (int *m, int n){ int i; for (i=0; i<n; i++) m [i]++;}main (){ int a[]={1,2,3,4,5},i; prt{a, 5); for [i=0;i<5;i++) printf ("%d ",a[i]);} 程序运行后输出结果是

    A.1,2,3,4,5,

    B.2,3,4,5,6,

    C.3,4,5,6,7,

    D.2,3,4,5,1


    正确答案:B
    解析:本题考查的是数组名作函数的参数。数组名实际上是一个指向该数组首地址的指针常量,所以数组名作函数的参数和用同类型的指针作参数没有区别.题目首先定义了一个函数,该函数通过一个for循环将指针m到m+n-1所指内存中的数据自增1,所以主函数中执行了prt(a,5);语句后,数组a中的所有元素被自增1。所以,4个选项中选项B符合题意。

  • 第11题:

    下述程序的输出结果是( )。 #define N 20 void fun(int a[],int n,int m) { int i,j; for(i=m;i>n;i--)a[i+1]=a[i]; } main( ) { int i,a[N]={1,2,3,4,5,6,7,8,9,10}; fun(a,2,9); for(i=0;i<5;i++)printf("%d",a[i]); }

    A.10234

    B.12344

    C.12334

    D.12234


    正确答案:B
    函数fun的功能是从数组a中依次将当前值赋给一个元素,所以当函数fun(a,2,9)执行后,数组a[]={1,2,3,4,4,5,6,7,8,9,10)。

  • 第12题:

    有以下程序

    #include<stdio.h>

    main()

    {

    int i,j,m=55;

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

    for(j=3;j<=i;j++) m=m%j;

    printf(“%d”,m);

    }

    程序的运行结果是( )。

    A.0

    B.1

    C.2

    D.3


    正确答案:B

  • 第13题:

    有以下程序

    #include <stdio.h>

    main()

    { int i,j,m=55;

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

    for(j=3;j<=i;j++)m=m%j;

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

    }

    程序的运行结果是

    A.0

    B.1

    C.2

    D.3


    正确答案:B
    解析:本题考查循环语句的嵌套以及条件的判断问题。在程序中,内层循环判断条件为"j<=i",而j的初值为3,故当i的值为1和2时,内层循环体都不会被执行。只有当i和j都等于3时才会执行一次。m的值为55对3取模,计算结果为1。

  • 第14题:

    该程序运行的结果是( )。

    #include

    #include

    #define M 100

    void fun(int m, int *a, int *n)

    { int i,j=0;

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

    if(i%7==0||i==0)

    a[j++]=i;

    *n=j;}

    main()

    { int aa[M],n,k;

    clrscr();

    fun(10,aa,&n);

    for(k=0;k

    if((k+1) ==0)printf("\n");

    else printf("M",aa[k]);

    printf("\n");}


    正确答案:
    7

  • 第15题:

    下列程序执行后的输出结果是______。 main() { int m[][3]={1,4,7,2,5,8,3,6,9}; int i,k=2; for(i=0;i<3;i++) {printf("%d",m[k][i]);} }

    A.456

    B.258

    C.369

    D.789


    正确答案:C
    解析:根据二维数组的定义得出:m[0][0]=1,m[0][1]=4,m[0][2]=7,m[1][0]=2,m[1][1]=5,m[1][2]=8,m[2][0]=3,m[2][1]=6,m[2][2]=9,所以本题的输出是第3行的值m[2][0],m[2][1],m[2][2],即369。

  • 第16题:

    有以下程序 #define N 20 fun(int a[],int n,:Int m) { int i,i; for(i=m; i>n; i--) a[i+1);a[i]; } main() { int i,a[N]={1,2,3,4,5,6,7,8,9,10}; fuu(a,2,9); for(i=0; i<5; i++) printf("%d",a[i]); } 程序运行后的输出结果是

    A.10234

    B.12344

    C.12334

    D.12234


    正确答案:C
    解析:数组名可以作为实参传送,由于数组名本身是一个地址值,因此,在函数中对形参数组元素的修改也会相应改变实参数组的元素.在本题中,函数fun()通过一个for循环,将形参数组a中下标为n到m之间的元素向后移动一位,a[n]元素的值不变。所以主函数调用fun(a,2,9);之后,数组a的内容变成{1,2,3,3,4,5,5,6,7,8,9,10},最后通过for循环输出数组前5个元素为12334。选项C符合题意。

  • 第17题:

    有以下程序: main() { int m[][3]={1, 4, 7, 2, 5, 8, 3, 6, 9); int i, j, k=2; for(i=0; i<3; i++) { printf("% d", m[k][i]); } } 执行后输出结果是______。

    A.456

    B.258

    C.369

    D.789


    正确答案:C
    解析:数组m初始化后结果为:m[0][0]=1、m[0][1]=4、m[0][2]=7、m[1][0]=2、m[1][1]=5、m[1][2]=8、m[2][0]=3、m[2][1]=6、m[2][2]=9。for循环语句的作用是输出数组元素m[2][0]、m[2][1]和m[2][2],所以输出结果为:369。

  • 第18题:

    有以下程序 include main() { int i,j,m=55; for(i=1;i<=3;i++)

    有以下程序 #include <stdio.h> main() { int i,j,m=55; for(i=1;i<=3;i++) for(j=3;j<=i;j++) m=m%j; printf("%d\n",m); } 程序的运行结果是

    A.0

    B.1

    C.2

    D.3


    正确答案:B

  • 第19题:

    有以下程序:include prt(int * m,int n)int i;for(i =0;i

    有以下程序:#include <stdio.h>prt(int * m,int n) int i; for(i =0;i<n;i ++ ) m[i] ++;main( )} int a[ ] = { 1,2,3,4,5} ,i; prt(a,5); for(i =0;i<5;i ++ ) printf( "% d," ,a[i] );}程序运行后的输出结果是( )。

    A.1,2,3,4,5,

    B.2,3,4,5,6,

    C.3,4,5,6,7,

    D.2,3,4,5,1


    正确答案:B
    解析:prt(a,5);用数组名a作函数实参,不是把a数组的值传递给形参m,而是将数组a的首地址传递给指针变量m,使指针变量m指向数组a的首地址,这样他们就占用同一段内存单元。当改变了指针变量所指向的存储单元中的内容,也就改变了数组a中的元素。函数pit的作用是将指针变量m所指向的存储单元中的各元素值加1,也就是数组a中各元素的值加l,所以输出结果为:2,3,4,5,6,

  • 第20题:

    有以下程序 include main() { int i=5; do { if(i%3==1)

    有以下程序 #include <stdio.h> main() { int i=5; do { if(i%3==1) if(i%5==2) { printf"*%d",i); break; } i++; } while(i!=0); printf("\n"); } 程序的运行结果是______。

    A.*7

    B.*3*5

    C.*5

    D.*2*6


    正确答案:A
    解析:do-while语句的特点是先执行循环体,然后判断循环条件是否成立,当循环条件的值为0时循环结束。break的特点;当break出现在循环体中,则在执行break后,跳出本层循环体。本题执行过程如下:
    i=5:不满足条件i%3=1,执行i++,此叫i=6;
    i=6:不满足条件i%3=1,执行i++,此时i=7;
    i=7:满足条件i%3=1,执行内嵌if,判断条件i%5=2,满足,输出“*7”,执行break,跳出do循坏体,执行“printf("\n");”,结束。

  • 第21题:

    有以下程序prt(int *m,int n){ int i; for(i=0;i<n;i++) m[i]++;}main(){ int a[]={1,2,3,4,5},i; prt(a,5); for(i=0;i<5;i++) printf("%d,",a[i]);}程序运行后的输出结果是A.1,2,3,4,5, B.3,4,5,6,7,C.2,3,4,5,6, D.2,3,4,5,1,


    正确答案:C
    用数组名作为函数实参时,不是把数组的值传递给形参,而是把实参数组的起始地址传递给形参数组,这样两个数组就共同占用同一段内存单元。本题通过“prt(a,5);”将数组a的首地址传递给了指针变量m,使指针变量m指向数组a的首地址,那么,对指针变量所指向的存储单元的内容的改变就是对数组a中的元素的改变。题中函数prt的作用是将指针变量m所指向的存储单元中的元素值各加上1,故数组a中的值也随之变化,所以。输出的数组元素的值为2,3,4,5,6,。

  • 第22题:

    有以下程序: #include<stdio.h> main( ) {int i,j,m=1; for(i=1;i<3;i++) {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=3


    正确答案:A
    本题考查了多重for循环。当(i*j)>3时,跳出循环,本题中i=1,j=3,i*J后值为3,所以执行下边语句:m*=i+j,也可写成m=m*i+j,这时要注意优先级,所以m的值为6。

  • 第23题:

    以下程序的输出结果是( )。 void prt(int*m.int n) {int i; for(i=0;i<n;i++)m[i]++;) main { int a[]={1,2,3,4,5),i; prt(a,5); for(i=0;i<5;i++) printf("%d,",a[i]);)

    A.1,2,3,4,5

    B.2,3,4,5,6

    C.3,4,5,6,7

    D.2,3,4,5,1


    正确答案:B
    函数调用时,prt函数的作用是为使m数组中的数自增l,因此数组下标从0开始,每个元素都自加l。

  • 第24题:

    以下程序段的输出结果是() int a[7]={9,15,7,-3,0,11,15},m,n,i;for(m=n=0,i=1;i<7;i++) if(a[i]>a[m])m=i; elseif(a[i]printf("%d,%d/n",m,n)

    • A、15,-3
    • B、6,3
    • C、1,3
    • D、2,4

    正确答案:C