参考答案和解析
正确答案:B
解析:因n=0,故!n为真,执行语句x-=1得x=x-1=2-1=1;条件!m和!x不成立,所以x=1,正确答案为1。
更多“有以下程序:main(){int n=0,m=l,x=2;if(!n) x-=l:if(!m) x-=2;if(!x) x-=3;printf (" %d\n",x);} ”相关问题
  • 第1题:

    有以下程序 include typedef struct { int num;double s; }REC; void funl(REC *x) { x

    有以下程序 include<stdio.h> typedef struct { int num;double s; }REC; void funl(REC *x) { x->num=23;x->s=88.5; } void main() { REC a={16,90.0}; fun1(&A); printf("%d\n",a.num); } 程序运行后的输出结果是( )。


    正确答案:23
    23

  • 第2题:

    有以下程序 main() { int m=3 n=4,X; X=-m++; x=x+8/++n; printf("%d\n",x); } 程序运行后的输出结果是

    A.3

    B.5

    C.-1

    D.-2


    正确答案:D
    解析:本题考核的知识点是运算符的优先级。主函数中首先定义了整型变量m、n和x,并给m和n赋初值为3和4,接着执行两条赋值语句,第一条x=-m++等价于x=-(m++),其值即为-3,第二条x=x+8/++n等价于X=X+8/(++n),即为x=-3+8/5=-2,因此最后输出x的值为-2。所以,4个选项中选项D符合题意。

  • 第3题:

    若执行下面程序时从键盘上输入5, main() { int x; scanf("%d",&x); if(x++>5)printf("%d\n",x); else printf("%d\n",x-); } 则输出是_______。

    A.7

    B.6

    C.5

    D.4


    正确答案:B
    解析:根据C语言的语法,x++是使用x之后,再将x的值加1,在if语句中,x的值为5,条件不成立,执行else后面的语句,因为x的值已经加1,为6,所以打印结果为6。

  • 第4题:

    以下程序的输出结果是( )。 include main()fint x=0; sub(&x,16,2); printf("%d\n",

    以下程序的输出结果是( )。

    include<stdio.h>

    main()

    fint x=0;

    sub(&x,16,2);

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

    }

    sub(int*a,int n,int k)

    {if(k<=n) sub(a,n/2,2*k);

    *a+=k;

    }


    正确答案:14
    14 解析:本题考查递归函数的调用。在主函数中调用sub(&x,16,2)函数,此时n=16,k=2,if语句的控制的条件k=n成立,所以执行下面的语句,调用sub(x,8,4),此时n=8,k=4,if语句的控制条件k=n成立,所以执行下面的语句,调用sub(x,4,8),此时n=4,k=8,if语句控制的条件k=n不成立,因此,最后得x=2+4+8=14。

  • 第5题:

    有以下程序

    #include <stdi0.h>

    imf(im x); .

    main()

    { int n=1,m; ‘

    m=f(f(f(n)));printf(”%d\n”,m);

    l

    intf(int x)

    { returnx*2;l

    程序运行后的输出结果是( )。

    A.8

    B.2

    C.4

    D.1


    正确答案:A
    第一次调用m=f(f(f(1))),第二次为m=f(f(2)),第三次为m=f(4),即返回值为8,选项A)正确。

  • 第6题:

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

  • 第7题:

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

    A.1

    B.2

    C.4

    D.8


    正确答案:D
    本题考查函数返回值作参数,最初n=1,f(n)=f(1)=2,将f(n)的结果代入第二个f(n)中,即f(f(n))=f(2)=4,所以f(f(f(f(n))))=f(4)=8。

  • 第8题:

    有以下程序:

    include<stdio.h>

    int f(int x):

    main

    {int n=1,m;

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

    }

    int f(int x)

    {return x*2;)

    程序运行后的输出结果是( )。

    A.1

    B.2

    C.4

    D.8


    正确答案:D

    本题考查函数返回值作参数,最初n=1,f(n)=f(1)=2,将f(n)的结果代入第二个f(n)中,即f(f(n))=f(2)=4,所以f(f(f(f(n))))=f(4)=8。

  • 第9题:

    有以下程序: include main( ){ int m =3,n =4,x; x= -m++; x=x+8/++n; prinff(" % d

    有以下程序: #include <stdio. h > main( ) { int m =3,n =4,x; x= -m++; x=x+8/++n; prinff(" % d \n" ,x); } 程序运行后的输出结果是( )。

    A.3

    B.5

    C.-1

    D.-2


    正确答案:D
    解析:程序中x=-m++执行后x=-3,执行x=x+8/++n相当于执行x=-3+8/5,即n先增加1,再代入表达式运算,结果为-2。

  • 第10题:

    设X~N(μ,δ2),X将转化为标准正态分布,转化公式Z=()。

    • A、(x-μ)/δ2
    • B、(x-μ)/δ
    • C、(x+μ)/δ
    • D、(x-δ)/μ

    正确答案:B

  • 第11题:

    在AgNO3溶液中加入稍过量KI溶液,得到溶胶的胶团结构可表示为()。

    • A、[(AgI)m•nI-•(n-x)•K+]x-•xK+
    • B、[(AgI)m•nNO3-•(n-x)K+]x-•xK+
    • C、[(AgI)m•nAg+•(n-x)I-]x-•xK+
    • D、[(AgI)m•nAg+•(n-x)NO3-]x+•xNO3-

    正确答案:A

  • 第12题:

    单选题
    下列程序执行后的输出结果是() main( ) { int x='f'; printf(""%c /n"",'A'+(x-'a'+1)); }
    A

    G

    B

    H

    C

    i

    D

    J


    正确答案: C
    解析: 暂无解析

  • 第13题:

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

    【说明】

    Fibonacci数列A={1,1,2,2,5,8,…)有如下性质:

    a0=a1=1

    ai=ai-1+ai-2,i>1

    对于给定的n,另外有一个由n个元素组成的数列xn,该数列中各元素的值为:

    xi=ai/ai+1,i=0,1,…,n

    现要求对xn中的元素按升序进行排序,然后以分数形式输出排序后的xn。例如n=5时,排序前的xn={1/1,1/2,2/3,3/5,5/8},排序后的xn={1/2,3/5,5/8,2/3,1/1}。程序中函数make()首先生成排序前的xn,然后调用函数sort()进行排序,最后输出所求结果。

    【程序】

    include <stdio.h>

    include <stdlib.h>

    include <malloc.h>

    struct fact

    {

    long m,n;

    };

    void sort(int n,struct fact *p)

    {

    int a;

    long s,t,u,v;

    struct fact *q,*end;

    for(end=p+(n-1),a=1;a;end--)

    for(a=0,q=p;q<end;p++)

    {

    s=q->m;

    t=q->n;

    u=(q+1)->m;

    v=(q+1)->n;

    if( (1) )

    {

    q->m=u;

    (2)

    (3)

    (q+1)->n=t;

    a=1;

    }

    }

    }

    void make(int n)

    {

    int i;

    long a,b,c;

    struct fact *x,*y;

    x=(struct fact *)malloc(sizeof(struct fact)*n);

    x->m=1:

    x->n=1;

    for(a=1,b=1,i=2;i<=n;i++)

    {

    (4)

    a=b;

    b=c;

    (x+(i-1))->m=a;

    (x+(i-1))->n=b;

    }

    (5)

    printf("x%d={%1d/%1d",n,x->m,x->n);

    for(y=x+1;y<x+n;y++)

    printf(",%1d/%1d",y->m,y->n);

    printf("}\n");

    free(x);

    }

    void main()

    {

    int n;

    printf("input n:");

    scanf("%d",&n);

    make(n);

    }


    正确答案:(1)s*v>=t*u (2)q->n=v; (3)(q+1)->m=s; (4)c=a+b; (5)sort(nx);
    (1)s*v>=t*u (2)q->n=v; (3)(q+1)->m=s; (4)c=a+b; (5)sort(n,x); 解析:本题考查在C语言中实现对数列的排序。
    题目要求我们对xn中的元素按升序进行排序,然后以分数形式输出排序后的xn,程序中函数make()用来生成排序前的xn,而使用函数sort()进行排序。在生成排序前的xn以前,我们应该仔细理解题目中给出的生成规则。
    首先,我们来看函数sort(),此函数的功能是排序。在函数体中我们可以看到它是用双重循环来实现对数列元素排序的,从整个函数我们可以分析出它排序的方法是从数列中找出一个最大的数存放到数列的最后面,在下次循环时,再从剩下的部分找出其最大的数存放到剩下部分的最后面,这样直到整个数列排好序。
    第(1)空是一个条件判断语句的条件,在第二重循环下面,根据上面的分析,该循环的作用是在数列中找出最大的数,那么,这个条件判断语句应该是判断相临两个数的大小,再结合程序中的内容,此空的答案应该是s*v>=t*u。
    第(2)空和第(3)空是条件判断语句结果为真的情况下执行的语句,如果条件为真,则说明前面的数要大于后面的数。而根据上面的分析,要将较大:的数放到后面位置,以方便下次和再后面的数比较,因此,这两个空的作用是要实现对两个数位置的交换,答案应该分别为q->n=v和(q+1)->m=s。
    接着,我们来看函数make(),它的功能是用来生成排序前的xn,在生成数列时,我们应该注意Fibonacci数列的性质,它的每一项等于前两项的和。在函数体中,我们可以发现第一个循环体就是用来生成排序前的zn的。第(4)空就在循环体内,我们仔细看代码,就可以发现变量c没有初值,但后面又把变量c的值赋给了变量b,因此,第(4)空应该是给变量c赋初值,但应该给它一个什么样的初值呢?结合Fibonacci数列的性质 ai=ai-1+ai-2,我们很容易知道变量c存放的就是ai的值。因此,此空答案为c=a+b。
    第(5)空是在循环体下面,上面我们已经说到,循环体生成了排序前的xn,根据题目的要求,应该要调用函数sort()进行排序了,因此,此空答案为sort(n,x)。

  • 第14题:

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

  • 第15题:

    两次运行下列的程序,如果从键盘上分别输入3和1,则输出结果是( )。main(){ int x; scanf("%d",&x); if(x++>2)printf("%d",x); else printf("%d\n",x-);}

    A.4和2

    B.4和1

    C.4和0

    D.3和1


    正确答案:A
    解析:本题考查ifelse语句。首先scanf函数通过键盘读入x的值.当x=3时,第一个if语句,先判断条件,取x的值3和2比较,然后将x的值加1,发现条件成立,执行下列的printf语句,输出x的值4。当x=1时,第一个if语句,先判断条件,取x的值1和2比较,然后将x的值加1(x的值变为2),发现条件不成立,执行下列的else语句,先输出x的值2,再将x的值减1。

  • 第16题:

    有以下程序: main() { int m=3, n=4, x; x=-m++; x=x+8/++n; printf("% d\n", x); } 程序运行后的输出结果是______。

    A.3

    B.5

    C.-1

    D.-216


    正确答案:D
    解析:本题主要考查++执行的次序。执行过x=-m++;后,x=-3,m=4;执行x=x+8/++n;时8/++n=1;因此最后x=-216。

  • 第17题:

    有以下程序:

    fun(int x)

    { int P;

    if(x==0||x==l) return(3);

    p=x-fun(x-2);

    return p;

    }

    main

    {printf("%d\n",fun(7));}

    程序执行后的输出结果是( )。

    A.A.7

    B.3

    C.2

    D.0


    正确答案:C
    在函数fun(intx)中,有个if语句判断,如果参数x等于0或1时,返回值,否则进入下面的p=x-fun(x-2)递归函数。当在主函势中调用fun(7)时,其过程为:“fun(7)=7-fun(5)=7-(5一fun(3))=7-(5-(3-fun(1)))=7-(5-(3—3))=7-5=2”,所以最后的输出结果为2。

  • 第18题:

    下面的程序输出结果是______。 main() { int x=3; while(!(--x)) printf("%d\n",x-=2); }

    A.不执行循环体

    B.1

    C.0

    D.是死循环


    正确答案:A

  • 第19题:

    下列程序执行后的输出结果是______。 main () {int x='f'; printf("%c \n",'A'+(x-'a'+l)); }

    A.G

    B.H

    C.I

    D.J


    正确答案:A

  • 第20题:

    阅读程序: main( ) {int x; scanf("%d',& x); if (x- -<5)printf("%d\n",x); else printf("%d\、n",x+ +); } 程序运行后,如果从键盘上输入5,则输出结果是 ( )

    A.3

    B.4

    C.5

    D.6


    正确答案:B

  • 第21题:

    下面的程序 main( ) { int x=3; do{printf("%d\n",x-=2);} while(!(- -x)); }

    A.输出的是1

    B.输出的是1和-2

    C.输出的是3和0

    D.是死循环


    正确答案:B

  • 第22题:

    下列程序执行后的输出结果是() main( ) { int x='f'; printf(""%c /n"",'A'+(x-'a'+1)); }

    • A、G
    • B、H
    • C、i
    • D、J

    正确答案:A

  • 第23题:

    单选题
    有以下程序:#include int f(int x); main(){ int n=1,m;  m=f(f(f(n))); printf(%d,m); }int f(int x) { return x*2;} 程序运行后的输出结果是(  )。
    A

    4

    B

    2

    C

    8

    D

    1


    正确答案: D
    解析:
    考查函数嵌套调用,第一次调用的是最内层的f(n),即f(1)返回值2。第二次调用中间的f(f(n)),即f(2)返回值4。最后调用最外层的f(f(f(n))),即f(4)返回值8,最后打印输出。答案选择C选项。