单选题有以下程序:#include void fun(int a[],int n){ int i; for(i=0;i {  if(i % 3==0)   a[i]-=n;  else   a[i]+=n; }}main(){ int c[5]={6,7,8,9,10},i; fun(c,5); for(i=0;i printf("");}程序运行后的输出结果是(  )。A 1,12,13,4,15,B 10,9,8,7,6,C 1,7,13,9,15,D 10,12,8,4,6,

题目
单选题
有以下程序:#include void fun(int a[],int n){ int i; for(i=0;i {  if(i % 3==0)   a[i]-=n;  else   a[i]+=n; }}main(){ int c[5]={6,7,8,9,10},i; fun(c,5); for(i=0;i printf("");}程序运行后的输出结果是(  )。
A

1,12,13,4,15,

B

10,9,8,7,6,

C

1,7,13,9,15,

D

10,12,8,4,6,


相似考题
更多“有以下程序:#include void fun(int a[],int n){ int i; for(i=0;i {  ”相关问题
  • 第1题:

    有以下程序includeint i=0;void fun(){{ Static int i=1 Std::cont<

    有以下程序 #include<iostream,h> int i=0; void fun() { { Static int i=1 Std::cont<<i++<<','; } Std::cout<<i<<','; } int main() { fun();fun(); return 0; } 程序执行后的输出结果是( )。

    A.1,2,1,2,

    B.1,2,2,3,

    C.2,0,3,0,

    D.1,0,2,0,


    正确答案:D

  • 第2题:

    以下程序的输出结果是【 】。include int fun(int x) {static int t=0; return(t+=x); }

    以下程序的输出结果是【 】。

    include <stdio.h>

    int fun(int x)

    { static int t=0;

    return(t+=x);

    }

    main()

    int s,i;

    for(i=1 ;i<=5;i++) s=fun(i);

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


    正确答案:15
    15 解析:static类型的变量是静态变量,本题中的静态变量t为静态局部变量。静态局部变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用时的值。本题在多次调用fun函数的过程中,只在第一次调用时t的初值为0,以后每次调用函数时不再重新赋初值,而只是保留上次函数调用结束时的值,所以本程序的作用相当于将1到5数字进行累加,故输出结果为15。

  • 第3题:

    有以下程序:include void fun(iht * a,int i,int j){int t;if(i < j) {t=a[i];a[i] =

    有以下程序:#include <stdio, h>void fun(iht * a,int i,int j){ int t; if(i < j) { t=a[i];a[i] =a[j] ;a[j]=t; i++;j--; fun(a,i,j);main ( ) int x[ ]: {2,6,1,8} ,i; fun(x,0,3); for( i=0;i <4;i ++ ) printf( "%2d" ,x[i] ); printf(" \n");

    A.1268

    B.8621

    C.8162

    D.8612


    正确答案:C
    解析:语句fun(x,0、3);中将数组名x作为实参,即把数组x的首地址传送给形参(指针a),使数组x与形参指针s共占同一段内存单元,在调用函数期间,如果形参数组x的值发生了改变,实参指针a的值也就改变了。程序中fun函数是递归调用函数,其运行过程是:第1次调用fun时,a=x,i=0,j=3,ij成立,a[0]与a[3]交换,a数组中的数变为{8,6,1,2},执行i++;j--;继续调用fun,此时i,j分别为1,2,ij成立,a[1]与a[2]交换,a数组中的数变为{8,1,6,2},执行i++j--;继续调用fun,此时i,j分别为2,1,ij不成立,递归调用结束。当返回主函数时,x数组中的数据就为{8,1,6,2}。

  • 第4题:

    有以下程序 include void fun(int a[],int n) { int i,t; for(i=0;

    有以下程序 #include <stdio.h> void fun(int a[],int n) { int i,t; for(i=0;i<n/2;i++) {t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t;} } main() {int k[10]={1,2,3,4,5,6,7,8,9,10},i; fun(k,5); for(i=2;i<8;i++) printf("%d",k[i]); printf("\n"); } 程序的运行结果是______。

    A.345678

    B.876543

    C.1098765

    D.321678


    正确答案:D
    解析:在主函数中,定义了一维数组k,并通过调用fun函数将形参数组a指向实参数组k所在的存储单元,这样,a和 k共用同一存储单元,所以对数组a的元素值的改变相当于对相应数组k的元素值的改变。在fun函数中,通过for循环对数组元素a[0]与a[4]、a[1]与a[3]的值分别作了交换,也即相当于主函数中k[0]与k[4]、k[1]与k[3]的值分别作了交换,此时k中各元素的值为5,4,3,2,1,6,7,8,9,10,故输出k[2]到k[7]的值为321678。

  • 第5题:

    有以下程序 include int fun(int (*s)[4],int n,int k) {int m,i;

    有以下程序 #include <stdio.h> int fun(int (*s)[4],int n,int k) {int m,i; m=s[0][kl; for(i=1;i<n;i++) if(s[i][k]>m) m=s[i][k]; return m; } main() { int a[4][4]={{1,2,3,4},{11,12,13,14}, {21,22,23,24}, {31,32,33,34}}; printf("%d\n",fun(a,4,0)); } 程序的运行结果是______。

    A.4

    B.34

    C.31

    D.32


    正确答案:C
    解析:在主函数中,定义并初始化了4行4列的二维数组a,并通过调用fun函数,将fun函数中指向一维数组的指针变量s指向了二维数组a的首地址,使得指针变量s与数组a共用同一存储单元。在fun函数中,通过for循环,求得了数组a第0列中最大的值,并赋给m返回主函数。由于数组a第0列的值分别为1、11、21、31,故其最大值是31。

  • 第6题:

    有以下程序,程序执行后,输出结果是【】include void fun(int*A) {a[0]=a[1];} main() {i

    有以下程序,程序执行后,输出结果是【 】

    include<stdio.h>

    void fun(int*A)

    { a[0]=a[1];}

    main()

    { int a[10]={10,9,8,7,6,5,4,3,2,1,},i;

    for(i=2;i>1=0;i-) fun(&a[i]);

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

    printf("\n");

    }


    正确答案:7777654321
    7777654321 解析:本题主要考查函数的调用,第—次调用把数组元素a[2]的地址赋给a,此时a[1]即是原数组的a[3]等于7,再执行赋值语句a[0]=a[1],则a[0]和a[1]中的值都是7,然后再把这个值返回给a[2]同样地第二次调用的时候函数返回值也是7,第三次调用返回值也是7,因此数组的前4个元素,即对a[0]、a[1]、a[2]和a[3]的值都为7,当执行第二个for循环时输出数组中所有元素的值7777654321。

  • 第7题:

    以下程序的输出是【】。 include using namespace std; fun(intm) { static int n=1; n=m

    以下程序的输出是【 】。

    include<iostream>

    using namespace std;

    fun(intm)

    {

    static int n=1;

    n=m*n;

    return(n);

    }

    void main()

    {

    int i;

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

    }


    正确答案:126
    126 解析:局部静态变量在离开作用域之后,并没有被销毁,而是仍然驻留在内存当中,直到程序结束。第一次调用 fun 函数时n的值等于1,第二次调用 fun 函数时n的值等于2,第三次调用 fun 函数时n的值等于6,每次调用 fun 函数时,保留上次调用时n的值不变。

  • 第8题:

    有以下程序:include using namespace std;void fun(int i,int j){ cout<<(i+j)<

    有以下程序: #include <iostream> using namespace std; void fun(int i,int j) { cout<<(i+j)<<end1; } void fun(int i) { cout<<i++<<end1; } int main() { int a=1; fun(A) ; return 0; } 该程序执行后的输出结果是( )。

    A.1

    B.2

    C.3

    D.4


    正确答案:A
    解析:本题考核函数重载这个知识点。函数fun有两种实现:第1种实现中,有两个int型形参,第2个实现中,是1个int型形参。由于这两种实现方式中形参的个数不同,形成了函数的重载。在主函数中,由于传递给函数fun()的实参为1个整型变量a,所以调用函数fun()的第2中实现,输出1。

  • 第9题:

    有以下程序:include int fun(int x[], int n){ static int sum =0,i;for(i=0;i

    有以下程序: #include <stdio.h> int fun(int x[], int n) { static int sum =0,i; for(i=0;i<n;i ++ )sum + =x[i]; return sum;{ int a[] ={1,2,3,4,5},b[]={6,7,8,9},s=0; s = fun(a,5) + fun(b,4) ;printf( "%d \n",s);程序执行后的输出结果是( )。

    A.45

    B.50

    C.60

    D.55


    正确答案:C
    解析:静态变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。在main函数中调用fun(a,5),执行for循环得到sum=0+a[0]+a[1]+a[2]+a[3]+a[4]=15;然后调用fun(b,4),因为sum为静态变量,再次调用时sum保留上次函数调用结束时的值,所以sum:15+b[0]+b[1]+b[2]+b[3]=45;返回sum的值,main函数中输出的s=15+45=60。

  • 第10题:

    有以下程序: #include #define N 4 void fun(int a[ ][N],int b[ ]) { int i; for(i=0;i main( ) { int i,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<=3;j++) { if(j%2==0)continue;x++;} x++; } printf("x=%d\n",x); } 程序的运行结果是( )。

    A.x=4

    B.x=6

    C.x=8

    D.x=12


    答案:C 
    解析:第一次循环:i=0,执行x++后x=1,执行内层循环j=0,由于j%2!=0时才执行x++,即只有j取1和3时,执行x++,此时x=1+1+1=3,跳出内层循环,执行下一条x++,x=4,第二次循环:x=1时,重复上述循环,共执行两次循环,故x最终结果是4*2=8。 

  • 第11题:

    有以下程序include int i = 0;void fun( ){ {static int i = 1;std::cout<

    有以下程序 #include <iostream> int i = 0; void fun( ) { { static int i = 1; std::cout<<i++<<','; } std::cout<<i<<','; } int main() { fun(); fun(); return 0; } 程序执行后的输出结果是

    A.1,2,1,2,

    B.1,2,2,3,

    C.2,0,3,0,

    D.1,0,2,0,


    正确答案:D
    解析:本题考核变量的作用域、生存周期和存储类别(自动、静态、存储器、外部)。题中即定义全局变量i,又在函数fun内部定义了局部静态变量i,当进入函数fun里面的大括号时,局部静态变量i有效,所以输出1,然后局部静态变量i加1,出了里面的大括号后,全局变量i有效,所以输出0。同理,第二次调用fun后,输出2和0。

  • 第12题:

    单选题
    有以下程序:#include void fun(int a[],int n){ int i,t; for(i=0;i {  t=a[i];  a[i]=a[n-1-i];  a[n-1-i]=t; }}main(){ int k[10]={1,2,3,4,5,6,7,8,9,10},i; fun(k,5); for(i=2;i printf("");}程序运行的结果是(  )。
    A

    345678

    B

    876543

    C

    1098765

    D

    321678


    正确答案: C
    解析:
    在main()函数中定义了一个有10个元素的数组k,并且赋初值为{1,2,3,4,5,6,7,8,9,10}。执行函数fun(k,5),把k的首地址赋给形参a,把5赋给形参n。在fun()函数中,for循环执行了2次:第一次,i的值为0,循环体中将a[0]与a[4]的值互换;第二次,i值为1,这次是将a[1]与a[3]的值互换。所以,fun()函数执行完后,数组k中的内容为{5,4,3,2,1,6,7,8,9,10}。接下来,循环输出a[2]~a[7]的值,故输出结果是321678。答案选择D选项。

  • 第13题:

    有以下程序: include int i=0;void fun(){{static iht i=1; std::cout<

    有以下程序: # include <iostream> int i=0; void fun() {{static iht i=1; std::cout<<i++<<','; } std:: cout<<i<<','; } int main() { fun(); fun(); return 0; }程序执行后的输出结果是______。

    A.1,2,1,2,

    B.1,2,2,3,

    C.2,0,3,0,

    D.1,0,2,0,


    正确答案:D
    解析:程序中,static声明了一个局部静态变量,在程序运行期间一直存在,第二次调用函数改变了该值。全局变量一直未改变。

  • 第14题:

    有以下程序:include define N 20fun(int a[] ,int n,int m){int i,j;for(i=m;i> :n;i

    有以下程序: #include <stdio.h> #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.] = 11,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
    解析:本题函数fun的作用是将指定的数组元素(下标从n~m)向后移一位。调用函数fun(a,2,9)将a[2]到a[9]的各元素依次向后移一位,最后a数组中各元素的值分别为1,2,3,3,4,5,6,7,8,9,10,程序输出数组的前5个元素:12334。

  • 第15题:

    有以下程序 include void fun(int a, int b) {int t; t=a; a=b;

    有以下程序 #include<stdio.h> void fun(int a, int b) {int t; t=a; a=b; } int c[10]={1,2,3,4,5,6,7,8,9,0},i; for(i=0;i<10;i+=2) fun(c[i],c[i+1]); for(i=0;i<10;i++) printf("%d,",c[i]); printf("\n"); } 程序的运行结果是______。

    A.1,2,3,4,5,6.7,8,9,0,

    B.2,1.4.3.6,5.8,7,0,9,

    C.0,9,8,7,6,5,4,3,2,1,

    D.0,1,2,3,4,5,6,7,8,9,


    正确答案:A
    解析:本题中c[i],c[i+1]的值是实参,a,b是形参。C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。所以函数run中对a,b值的交换不影响主函数中c数组的值,故输出的c数组的值为c数组初始化时的值。

  • 第16题:

    有以下程序 include define N 4 void fun(int a[][N],int b[]) { int

    有以下程序 #include <stdio.h> #define N 4 void fun(int a[][N],int b[]) { int i; for(i=0;i<N;i++) b[i]=a[i][i]; } main() {int x[][N]={{1,2,3},{4},{5,6,7,8},{9,10} },Y[N],i; fun(x,y); for(i=0;i<N;i++) printf("%d,",y[i]); printf("\n"); } 程序的运行结果是______。

    A.1,2,3,4,

    B.1,0,7,0,

    C.1,4,5,9,

    D.3,4,8,10,


    正确答案:B
    解析:在主函数中,定义并初始化了4行4列的二维数组x。对于二维数组元素的赋值,可以只对部分元素赋初值,未赋初值的元素自动取0。x数组元素赋初值后各元素为:

    fun函数的作用是将二维数组a中主对角线元素赋给数组b,由于数组a与数组x共用同一存储单元,也即将数组x中主对角线元素赋给了数组b。又因为数组b与数组y共用同一存储单元,所以主函数中通过语句“printf("%d,"y[i]);”输出的即为数组b中的值,所以程序运行结果为“1,0,7,0,”。

  • 第17题:

    有下列程序: include void fun(int * s,int n1,int n2) { int i,j,

    有下列程序: #include <stdio.h> void fun(int * s,int n1,int n2) { int i,j,t; i=n1;j=n2; while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;} } main() { int a[10]={1,2,3,4,5,6,7,8,9,0},k; fun(a,0,3); fun(a,4,9);fun(a,0,9); for(k=0;k<10;k++)printf("%d",a[k]);printf("\n"); } 程序的运行结果是( )。

    A.987654321

    B.4321098765

    C.5678901234

    D.987651234


    正确答案:C
    解析:从题目的主函数入手,定义了一个一维数组并赋韧值,接着调用函数fun(),fun()函数的功能为使数组中的元素逆序,当调用 fun(a,0,3),将实参传递给形参实现数组a中a[0]-a[3]这4个元素逆序;同理调用fun(a,4,9)是将上步排列好的a数组中a[4]-a[9]这6个元素逆序;调用fun(a,0,9)是将数组中a[0]-a[9]这10个元素在逆序,再用printf()函数输出结果为5678901234,故选项C)正确。

  • 第18题:

    有以下程序:includedefine N 8void fun(int*x,int i){*x=*(x+i)+1;}main(){int a[N]=

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

    A.1 3 1 3

    B.3 2 3 4

    C.4 2 3 4

    D.1 2 3 4


    正确答案:C
    解析:函数fun(int*x,int i)的功能是把数组元素x[i]的值加1赋给x[0]。所以在主函数中执行fun(a,2)后,数组元数a[0]的值等于4。然后在for循环语句中,输出数组a中的前4个元素的值,分别是4,2,3,4。

  • 第19题:

    以下程序的输出结果是#include <conio.h>#include <stdio.h>#define M 100void fun(int m, int *a, int *n){ int i,j=0; for(i=1;i<=m;i++) if(i%7==0||i%11==0) a[j++]=i; *n=j;}main(){ int aa[M],n,k; clrscr(); fun(100,aa,&n); for(k=0;k<n;k++) if((k+1)%20==0)printf("\n"); else printf("%d",aa[k]); printf("\n"); }


    正确答案:77
    在本题中,程序首先定义一个宏M,然后定义一个fun函数,函数带有三个形参,分别是一个整型形参m和两个整型指针形参a、n。在函数体中,首先定义两整型变量i和j,并给j赋初值为0,然后执行循环,循环体中首先是一个条件判断语句,如果结果为真,则说明变量i能同时被7和11整除,并将变量i保存到数组中,循环结束后,将数组中元素的个数通过指针变量n进行返回。通过分析可以知道,fun函数的作用是求取1到m中能同时被7和11整除的整数,并将结果保存到数组a中。
    在主函数中,首先定义了两个整型变量和一个整型数组aa,然后调用clrscr()函数对文本模式窗口进行清除操作。接着调用fun函数,根据上面我们对fun函数的分析,要计算1~100之间能同时被7和11整除的整数,很显然,这样的数只有77一个,那么此时数组aa中只有一个元素为77,而n的值是1。
    接着执行for循环,从程序中不难看出循环的作用是将数组aa中的元素按一定的规则输出,其规则为每行最多只能输出20个值。结合上面的分析,数组aa中只有一个元素为77,因此,本题程序的最终输出结果为77。

  • 第20题:

    以下程序的执行结果是()。includeint fun(int b[],int n){int i,r=1;for(i=0;i

    以下程序的执行结果是( )。 #include<iostream.h> int fun(int b[],int n) { int i,r=1; for(i=0;i<n;i++) r=r*b[i]; } void main() { int x,a[]={1,2,3,4,5,6,7,8}; x=fun(a,3); cout<<x<<endl; }

    A.5

    B.6

    C.7

    D.8


    正确答案:B

  • 第21题:

    下面程序的运行结果是include < iostream.h >int fun ( int a[ ],int n){int result=1;for(int

    下面程序的运行结果是 #include < iostream.h > int fun ( int a[ ],int n) { int result=1; for(int i=1;i<n;i++) result=result*a[i]; return result; } void main( ) { int a[3]={3,4,5}; cout << fun(a,

    A.12

    B.15

    C.20

    D.60


    正确答案:C
    解析:for循环执行2次,所以第一次for循环为result=1*a[l]=4,第二次for循环为result=4*a[2]=20。

  • 第22题:

    有以下程序: include void fun(char(*p)[6]) { int i; for(i=0;i<4;i++)printf("%c&

    有以下程序: #include void fun(char(*p)[6]) { int i; for(i=0;i<4;i++)printf("%c",p[i][i]); printf("\n"); } main( ) { char s[6][6]={"ABCDE","abcde","12345","FGHIJ","fghij","54321"}; fun(s); } 程序的运行结果是( )。

    A.Aa1F

    B.Ab3I

    C.ABCD

    D.fghij


    答案:B
    解析:函数fun的功能是输出s[i][i],二维数组的对角线元素,所以程序会输出s[0][0]、s[1][1]、s[2][2]、s[3][3],即Ab3I。

  • 第23题:

    假定a=3,下列程序的运行结果是()。includeint fun(int n);void main(){cout<<"Pleas

    假定a=3,下列程序的运行结果是( )。 #include<iostream.h> int fun(int n); void main() { cout<<"Please input a number:"; int a,result=0; cin>>a; result=fun(a); cout<<result<<end1; } int fun(int n) { int p=1,result=0; for(int i=1;i<=n;i++) { p*=i; result +=p; } return result; }

    A.4

    B.8

    C.9

    D.20


    正确答案:C
    解析:由程序main主函数入手,调用fun函数获得返回值result输出。题目中假定a=3,即调用语句fun(a)中的输入参数为a,进入 fun函数,在for循环中当i小于等于n,即输入参数3时,循环3次执行“p*=i;result+=p;”语句。即执行3次p=p*i,result=result+p, result的结果为9。返回的fun函数结果为9,即“coutresultend1;”输出9。

  • 第24题:

    单选题
    有以下程序:#include void fun(int n){ int i; if((i=n/10)!=0)  fun(i); putchar(n%10+'0');}main(){ fun(256);}程序运行后的输出结果是(  )。
    A

    256

    B

    652

    C

    2560

    D

    52


    正确答案: C
    解析:
    程序的执行过程为:调用函数fun(256),i=25,即i!=0,if条件成立,调用fun(25),i=2,即i!=0,if条件成立,调用fun(2),i=0,if条件不成立,输出字符'2',返回fun(25),输出字符'5',返回fun(256),输出字符'6',函数调用结束。答案选择A选项。