更多“以下程序的输出的结果是()。 int x=3; main( ) int i; for(i=1;i<x;i++)incre( );incre( ) staic int x=1; x*=x+1; printf(" %d", x);A、25B、26C、27D、28”相关问题
  • 第1题:

    有以下程序: #include<stdio.h> int fun {static int x=1; x+=1;return X; } main {int i,S=1; for(i=1;i<=S;i++)s+=fun; printf("%d\n",s); } 程序运行后的输出结果是( )。

    A.11

    B.21

    C.6

    D.120


    正确答案:B
    本题考查静态变量,C语言中静态变量的生存期是从程序的开始到结束。本题中静态变量x,随着每次进入循环不断增长5次,返回的值分别为2、3、4、5、6。所以S=1+2+3+4+5+6=21,选B。

  • 第2题:

    以下程序的输出的结果是( )。int x=3;main(){ int i;for(i=1;i<x;i++)incre();}incre(){ staic int x=1; x*=x+1; printf(" %d", x);}

    A.33

    B.22

    C.26

    D.25


    正确答案:C
    解析:本题首先定义一个全局变量x并赋初值为3,主函数中使用这个全局变量控制循环次数,循环执行了2次,调用两次incre()函数。第一次调用incre(),定义一个静态变量x并赋初值1,然后执行“x*=x+1”,使x的值变为2:第二次调用incre()函数时,静态变量将保留上—饮退出时的值即2,执行语句“x*=x+1”后,x的值变成6,输出x的值为6。所以,4个选项中C为所选。

  • 第3题:

    有以下程序: void fun(int *a,int i,int i) { int t; if(i<j) { t==a[i];a[i]=a[j];a[i]=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()中用了一个if语句,当数组下标i小于数组下标j时,交换数组元素a[i]和a[j]的值,并使i值加1,j值减1。其功能就是把数组a中从下标i到j的元素首尾互换。主函数中定义一个数组x,该数组有4个元素,接着调用fun(a,O,3),其中将a数组的第一个元素的下标0和最后一个元素的下标3传给了函数fun(),故执行完该函数后,数组a中的元素首尾互换,因此最后依次输出的数组a中值为8、1、6和2,所以,4个选项中选项C符合题意。

  • 第4题:

    请选出以下程序的输出结果includemain(){ int a[]={1,2,3,4},i;int x=0;for(i=0;i<4;i

    请选出以下程序的输出结果 #include<stdio.h> main() { int a[]={1,2,3,4},i; int x=0; for(i=0;i<4;i++) { sub(a,x);printf("%d",x);} printf("\n");} sub(s,y) int*s,y; { static int t=3; y=s[t];t--; }

    A.1 2 3 4

    B.4 3 2 1

    C.0

    D.4444


    正确答案:C
    解析:若指针s指向数组a,则s[t]可以引用数组a中下标为t的元素。注意:通过数组的首地址引用数组元素。

  • 第5题:

    以下程序运行后的输出结果是( )。 include main() {char ch[]="abcd",x[4][4];int i; f

    以下程序运行后的输出结果是( )。 include<string.h> main() {char ch[]="abcd",x[4][4];int i; for(i=0;i<4;i++)strcpy(x[i],ch); for(i=0;i<4;i++)printf("%s",&x[i][i]); printf("\n"); }


    正确答案:abcdabcdabcdabcdbcdabcdabcdcdabcdd
    abcdabcdabcdabcdbcdabcdabcdcdabcdd

  • 第6题:

    有以下程序: int fa(int x) { return x*x;) int fb(int x) { return x*x*x;} int f(int (*f1)().int (*f2)(),int x) { return f2(x)-f1(x); } main() { int i; i=f(fa,fb,2);printf("%d\n",i); } 程序运行后的输出结果是( )。

    A.-4

    B.1

    C.4

    D.8


    正确答案:C
    解析:函数f()有3个形式参数f1、f2和x,其中f1、f2是指向函数的指针变量。在main()函数中执行了函数调用“f(fa,fb,2)”,从而使f()的形式参数f1指向了fa,形式参数f2指向了fb,把实参2传给了形参变量x。函数f()中的return语句相当于“fb(2)-fa(2)” (fb(2)的返叫值为2*2*2=8,fa(2)返回值为2*2=4)即(8-4),值为4。函数f()执行后把返回值4赋给了i,输出i的值是4。所以4个选项中C正确。

  • 第7题:

    以下程序的输出的结果是 int x=3; main() { int i; for (i=1;i<x;i++) incre(); } incre() { staic int x=1; x*=x+1; printf(" %d",x); }

    A.3 3

    B.22

    C.26

    D.25


    正确答案:C
    解析:本题首先定义一个全局变量x并赋初值为3,主函数中使用这个全局变量控制循环次数,循环执行了2次,调用两次tncre()函数。第一次调用incre(),定义一个静态变量x并赋初值1,然后执行“x*=x+1”,使x的值变为2;第二次调用incre()函数时,静态变量将保留上一次退出时的值即2,执行语句“x*=x+1”后,x的值变成6,输出x的值为6。所以,4个选项中C为所选。

  • 第8题:

    有以下程序: main( ) {int X,i; for(i=1;i<=50;i++) {x=i; if(X%2=O) if(x%3=O) if(X%7=0) printf("%d,i)"; } } 输出结果是( )。

    A.28

    B.27

    C.42

    D.41


    正确答案:C
    只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择c选巩。

  • 第9题:

    有以下程序: #include<stdio.h> int fun( ) {static int x=1; X*=2;return X; main( ) int i,s=1; for(i=1;i<=2;i++)s=fun( ); printf{¨%d\n",s); } 程序运行后的输出结果是( )。

    A.0

    B.1

    C.4

    D.8


    正确答案:C
    本题考查了static的用法。当static用于局部变量中,成为静态局部变量。静态局部变量有两个用法,记忆功能和全局生存期。当static用于全局变量,主要作用是限制此全局变量被其他的文件调用。当static用于类中的成员,表示这个成员是属于这个类,但是不属于类中任意特定对象。所以本题答案为C。

  • 第10题:

    以下程序的输出的结果是()。includeint x=3:void main(){void fun();int i;for(i=1;

    以下程序的输出的结果是( )。 #include<iostream.h> int x=3: void main() { void fun(); int i; for(i=1;i<x;i++) fun(); } void fun() { static int x=1; x*=x+1; cout<<x<<" "; }

    A.3,3

    B.2,2

    C.2,6

    D.2,5


    正确答案:C

  • 第11题:

    有以下程序: void fun(int *a,int i,int j) { int t; if(i<j) { t=a[i];a[i]=a[j];a[j]=t; i++; j--; fun(a,ij); } } 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.1 2 6 8

    B.8 6 2 1

    C.8 1 6 2

    D.8 6 1 2


    正确答案:C
    解析:函数fun()中用了—个if语句,当数组下标i小于数组下标j时,交换数组元素a[i]和a[j]的值,并使i值加1,j值减1。其功能就是把数组a中从下标i到j的元素首尾互换。主函数中定义一个数组,在定义该数组的时候缺省了定义长度,定义的同时将其初始化赋值,所以该数组的长度为初始化该数组时的元素的个数即4,接着调用fun(a,0,3),其中将a数组的第一个元素的下标0和最后一个元素的下标3传给了函数fun(),故执行完该函数后,数组a中的元素首尾互换,因此最后依次输出的数组a中值为8,1,6和2,所以,4个选项中选项C符合题意。

  • 第12题:

    单选题
    以下程序的输出的结果是()。 int x=3; main( ) int i; for(i=1;i<x;i++)incre( );incre( ) staic int x=1; x*=x+1; printf(" %d", x);
    A

    25

    B

    26

    C

    27

    D

    28


    正确答案: A
    解析: 本题首先定义一个全局变量x并赋初值为3,主函数中使用这个全局变量控制循环次数,循环执行了2次,调用两次incre()函数。第一次调用incre(),定义一个静态变量x并赋初值1,然后执行“x*=x+1”,使x的值变为2:第二次调用incre()函数时,静态变量将保留上―饮退出时的值即2,执行语句“x*=x+1”后,x的值变成6,输出x的值为6。所以,4个选项中C为所选。

  • 第13题:

    有以下程序: main { int x,i; for(i=l;i<=50;i++) { x=i: if(x%2=0) if(x%3=0) if(X%7=0) printf(”%d,i)”; } } 输出结果是( )。

    A.28

    B.27

    C.42

    D.4l


    正确答案:C
    只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择C选项。

  • 第14题:

    下列程序的运行结果是______。

    define POWER(x) ((x)*(x))

    main ()

    { int i=1;

    printf("%d,%d",POWER(i++),i);

    }


    正确答案:11
    1,1 解析:POWER(i++)中先引用i的值1,再将i的值加1,POWER(i++)=1*1=1。

  • 第15题:

    以下程序的输出结果是【 】。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。

  • 第16题:

    以下程序的输出结果是#include <stdio.h>int fun(int x){ static int m=0; return(m *=x);}main(){ int s,i; for(i=l;i<=3;i++) s=fun(i); printf("%d\n",s);}


    正确答案:10
    本题考查静态局部变量的使用。静态局部变量用static进行声明,该变量的内存存储空间在整个程序的运行期间都不释放,进行编译时,只对静态局部变量赋初值一次,以后每次调用函数时,不再重新赋初值,而只是保留上次函数调用结束时的值。题目中的程序包括两个部分,一个是fun函数,另一个是main函数。main函数给出了变量s的初始值,s=0。for语句是对fun函数进行调用,将结果与s进行相加,并将和赋给s。仔细分析for语句的结构可知,该语句要循环运行3次。函数fun的实参即for语句的循环变量。三次调用的实参数值分别为1、2、3。fun函数的功能是完成m+=x操作,其中m为静态局部变量,初始值为0。第一次调用时,i=1,对于fun函数来说,也就是x=1,m=0,进行m+=x操作后,m=1,将m值返回,在main函数中执行s+=fun(i)语句,得到s=1。第二次调用时,i=2,fun函数中x=2,注意,此时m=1,为上次调用该函数的结果,而不是0,进行m+=x操作后,得到m=3,将该结果返回,s=4。第三次调用时,i=3,x=3,m=3,进行m+=x操作后,得到m=6,将该结果返回得到s=10。到此for语句结束,执行printf语句,输出结果10。

  • 第17题:

    以下程序的输出结果是______。 int x=3; main() { int i; for(i=1; i<x; i++) incre(); } incre() { static int x=1; x*=x+1; printf(" % d", x); }

    A.3 3

    B.2 2

    C.2 6

    D.2 5


    正确答案:C
    解析:C语言规定如果全局变量与局部变量同名,则在局部变量的作用域内全局变量不起作用。程序开头定义的变量x为全局变量,函数incre中定义的变量x是局部静态变量,存放在静态存储区,incre调用结束后不释放x占据的存储单元。main函数中使用的x是全局变量x=3,所以main函数中调用函数incre两次。调用过程如下。第1次调用:x=x*(x+1)=1×(1+1)=2,printf函数输出2;第2次调用:x=x*(x+1)=2×(2+1)=6,printf函数输出6。

  • 第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 int x=3;void main(){void incre();int i;for (

    以下程序的输出的结果是( )。#include <iostream.h>int x=3;void main(){ void incre(); int i; for (i=1;i<x;i++) incre();}Void incre(){ static int x=1; x*=x+1; cout<<x<<"";}

    A.3 3

    B.2 2

    C.2 6

    D.2 5


    正确答案:C

  • 第20题:

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

    A.1313

    B.2234

    C.3234

    D.1234


    正确答案:C
    本题考查了宏定义与局部变量的区别,宏定义的作用范围为整个程序,而变量的作用范围只在定义它的函数体的部分,因此,主函数中定义的i与fun中的i互不相干。

  • 第21题:

    有以下程序: #include<stdio.h> int fun( ) {static int x=1; X*=2: return x; } main( ) {int i,S=1; for(i=1;i<=3;i++)S*=fun( ); printf("%d\n",s); } 程序运行后的输出结果是( )。

    A.0

    B.10

    C.30

    D.64


    正确答案:D
    函数fun是2的次方的运算,而s*=fun,所以答案为64。

  • 第22题:

    阅读下列程序,则运行结果为 #include "stdio.h" fun() { staic int x=5; x++; return x;} main() { int i,x; for(i=0;i<3;i++) x=fun(); printf("%d\n",x);}

    A.5

    B.6

    C.7

    D.8


    正确答案:D
    解析:在整个程序运行期间,静态局部变量在内存的静态存储区中占据着永久的存储单元,即使退出函数以后,下次再进入该函数时,静态局部变量仍使用原来的存储单元,静态局部变量的初值是在编译的时候赋予的,在程序执行期间不再赋予初值。本题由于连续三次调用函数fun(),三次对静态变量x进行操作,x的值应依次为6,7,8。

  • 第23题:

    (34)有以下程序

    #include <stdio.h>

    int fun()

    { static int x=1;

    x*=2;

    return x;

    }

    main()

    { int i,s=1;

    for(i=1;i<=3;i++) s*=fun();

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

    }

    程序运行后的输出结果是

    A)0

    B)10

    C)30

    D)64


    正确答案:D