/*程序的功能是:输出斐波那契数列前n项(n为偶数)。*/ #include <stdio.h> int main() { int i,n ; int a1=1,a2=1; scanf(“%d”,&n); printf("%d %d ", a1,a2); for (i = 1; i<n/2; i++ ) { a1= ; a2=a1+a2; printf("%d %d ", a1,a2); } return 0; }

题目

/*程序的功能是:输出斐波那契数列前n项(n为偶数)。*/ #include <stdio.h> int main() { int i,n ; int a1=1,a2=1; scanf(“%d”,&n); printf("%d %d ", a1,a2); for (i = 1; i<n/2; i++ ) { a1= ; a2=a1+a2; printf("%d %d ", a1,a2); } return 0; }


相似考题
更多“/*程序的功能是:输出斐波那契数列前n项(n为偶数)。*/ #include <stdio.h> int main() { int i,n ; int a1=1,a2=1; scanf(“%d”,&n); printf("%d %d ", a1,a2); for (i = 1; i<n/2; i++ ) { a1= ; a2=a1+a2; printf("%d %d ", a1,a2); } return 0; }”相关问题
  • 第1题:

    下列给定程序中,函数fun()的功能是:根据整型形参n,计算如下公式的值。

    A1=1,A2=1/(5+A1),A3=1/(5+A2),…,An=1/(5+A(n-1))

    例如,若n=l0,则应输出0.192582。

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

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

    试题程序:

    include <conio.h>

    include <stdio.h>

    float fun(int n)

    {

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

    int A=1;

    int i;

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

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

    A=1.0/(5+A);

    return A;

    }

    main()

    {

    int n;

    clrscr();

    printf("\nPlease enter n:");

    scanf("%d",&n);

    printf("A%d=%lf\n”,n,fun(n));

    }


    正确答案:(1)错误:int A=1; 正确:float A=1 (2) 错误:for(i=l;i=n;i++) 正确:for(i=2;i=n;i++)
    (1)错误:int A=1; 正确:float A=1 (2) 错误:for(i=l;i=n;i++) 正确:for(i=2;i=n;i++) 解析:错误1:A为实型数,应定义为float类型。错误2:由题意,AI=1,从A2开始,An=l/(5+A(n-1)),所以循环应从 2开始。

  • 第2题:

    下列给定程序中,函数fun()的功能是:根据整型形参n,计算如下公式的值。

    A1=1,A2=1/(1+A1),A3=1/(1+A2),…,An=(1/(1+A(n-1))

    例如,若p=10,则应输出0.617977。

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

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

    试题程序:

    include <conio.h>

    include <stdio.h>

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

    iht fun(iht n)

    { float A=l;inti;

    /**************foudn********************/

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

    A=1.0/(i+A);

    return A;

    }

    main ()

    { int n;

    clrscr ();

    printf("\nPlease enter n: ");

    $canf ("%d", &n);

    printf ("A%d=%lf\n", n, fun (n));

    }


    正确答案:(1)错误:int fun(int n) 正确:float fun(int n) (2)错误:for(i=2;in;i++) 正确:for(i=2;i=n;i++)
    (1)错误:int fun(int n) 正确:float fun(int n) (2)错误:for(i=2;in;i++) 正确:for(i=2;i=n;i++) 解析:该题中fun()函数的作用是计算数列前n项的和,而数列的组成方式是:第n项的分母是功口第n-1项的值,分子为 1,如果循环累加按for(i=2;in;i++)执行的话,当我们输入n=2的时候会是什么结果?循环会怎么执行呢?循环不能执行,但数学思路绝对正确,这就矛盾了,所以循环条件应该是for(i=2;in;i++)。

  • 第3题:

    执行以下程序的输出结果是【 】。include main()[ inti, n[4]={1};for(i= 1 ;i<=3 ;i++){

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

    include <stdio.h>

    main()

    [ int i, n[4]={1};

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

    { n[i]=n[i-1]*2+1; printf("%d",n[i]); }


    正确答案:3 715
    3 715 解析:本题考查的知识点是:for循环。本题主函数中的for循环从1递增到3,所以将循环3次。循环体中,n[i]=n[i-1]*2+1;语句使数组n从第2个元素开始,后一个元素等于前一个元素的2倍加1;print("%d",n[i]);输出刚计算出的数组n的元素。故结果应该是1*2+1=3、3*2+1:7、7*2+1=15。即输出结果为3 715。

  • 第4题:

    以下程序的输出结果是()。include main(){int i; for(i=1;i<5;i++) {if(i%2) printf("*

    以下程序的输出结果是( )。 #include <stdio.h> main() { int i; for(i=1;i<5;i++) { if(i%2) printf("*"); else continue; printf("#"); } printf("$\n");

    A.*#*#*#$

    B.#*#*#*$

    C.*#*#$

    D.#*#*$


    正确答案:C
    解析:程序中当i不能整除2时输出*,然后输出#,能够整除2时将结束本次循环,进入到下一次循环。当循环结束后,输出$。

  • 第5题:

    有以下程序int f(int n){ if(n==1 return 1; else return f(n-1)+1;}main(){ int i,j=0; for(i=1;i<3;i++) j+=f(i); printf("%d\n",j);}程序运行后的输出结果是A.4 B.3 C.2 D.1


    正确答案:B
    在main函数中,对f(1)和f(2)的值进行了累加。
    f(1)=1
    f(2)=f(1)+1=2
    最后,j的值为1+2=3。

  • 第6题:

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

  • 第7题:

    以下程序的输出结果是()。includevoid reverse(int a [],int n){int i,t; for(i=0;i

    以下程序的输出结果是( )。 #include <stdio.h> void reverse(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 b[10]={1,2,3,4,5,6,7,8,9,10};int i,s=0; reverse(b,8); for(i=6;i<10;i++)s+=b[i]; printf("%d\n",s); }

    A.22

    B.10

    C.34

    D.30


    正确答案:A
    解析:在main函数中,调用reverse函数将b数组中的前8个成员进行互置,执行完毕后,b数组中的成员为{8,7,6,5,4,3,2,1,9,10},然后再执行for循环结构,将b[6],b[7],…,b[9]的值相加,结果为22。

  • 第8题:

    使用VC6打开考生文件夹下的工程RevProj10。此工程包含一个源程序文件RevMain10.cpp。在该文件中,函数fun的功能是:计算出数组x中的最小值与次最小值,并分别将其与x[0]、x[1]交换。

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

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

    源程序文件RevMain10.cpp中的程序清单如下:

    //RevMain10.cpp

    include <iostream>

    using namespace std;

    define N 30

    int fun(int *x, int n);

    int main ()

    {

    int h[N]={4,7, 6, 5, 1, 7,3, 8,0,2,3};

    int i;

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

    cout<<h [i] << " " ;

    cout <<"/n";

    fun(h, 11);

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

    cout<<h [i]<<" ";

    cout<<' \n';

    return 0;

    }

    int fun(int *x, int n)

    {

    int i,t;

    int a1=0, a2=0,min1=32767,min2=32676;

    /* * * * *FOUND * * * * */

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

    {

    if (x [i]<min1)

    {

    min2=min1;

    a2=a1;

    min1=x [i];

    a1=i;

    }

    else if (x [i] <min2)

    {

    min2=x [i];

    a2=i;

    }

    }

    /* * * * *FOUND * * * * */

    t=x[0];x[a1]=x[0];x[a1]=t;

    /* * * * *FOUND * * * * */

    t=x[1] ;x[a2]=x[1];x[a2]=t;

    }


    正确答案:

  • 第9题:

    有以下程序

    int f(int n)

    { if(n==1)return 1;

    else return f(n-1)+1;}

    main()

    { int i,j=0;

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

    printf("%d\n",j);}

    程序运行后的输出结果是

    A.4

    B.3

    C.2

    D.1


    正确答案:B
    解析:在main函数中,对f(1)和f(2)的值进行了累加。
    f(1)=1
    f(2)=f(1)+1=2
    最后,j的值为1+2=3

  • 第10题:

    有以下程序 int f(int n) { if (n==l) return 1; else return f(n-1)+1; } main () { int i,j=0; for(i=i;i<3;i++) j+=f(i); printf {"%d\n", j ); } 程序运行后的输出结果是

    A.4

    B.3

    C.2

    D.1


    正确答案:B
    解析:本题考查的知识点是递归函数.通过分析不难写出,f()函数的数学表达式为:f(n)=1n=1;f(n)=f(n-1)+1n不等于1;在主函数中for循环执行了两次函数调用f(i)。第一次:i为1,调用f(1)得到返回值1,并把它加到i中,i的值为1。第二次i为2,调用f(n),根据递归公式可知“f(2)=f(1)+1”,得到返回值2并把它加到i中,j的值为3。所以最后输出的j的值为3,所以4个选项中B正确。

  • 第11题:

    有以下程序: int f(int n) { if(n==1)retuxn 1; else return f(n-1)+1; } main() { int i, j=0; for(i=1; i<3; i++)j+=f(i); printf("% d\n", j); } 程序运行后的输出结果是______。

    A.4

    B.3

    C.2

    D.1


    正确答案:B
    解析:本题考查函数的递归调用。本题中的函数f是递归函数,主函数中语句j+=f(i)共执行了两次,首次执行时j=j+f(i)=0+f(1)=f(1)=1;第二次执行时j=j+f(2)=1+f(2)。其中f(2)=f(1)+1-1+1=2,因此j=1+f(2)=1+2=3,即printf语句输出结果为3。

  • 第12题:

    下面程序输出的结果是( )。 include using namespace std; int test(int n1

    下面程序输出的结果是( )。 #include<iostream> using namespace std; int test(int n1,int n2) {return n1 +n2;} float test (int f1,float f2){return f1-f2;} float test(float x,float y){return(x+y)/2;} float test(float x,int y){return(x+y)*2;} void main(){ int a1=10; float a2=2.5f; cout<<test(a1,a2); }

    A.12.5

    B.7.5

    C.6.25

    D.25


    正确答案:B
    解析:此处为函数的重载,第一个参数为int,第二个参数为float,故执行第二个函数。

  • 第13题:

    假如整数数列中的数不重复,并存放在数组中。下列给定的程序中,函数fun()的功能是:删除数列中值为X的元素。 N中存放的是数列中元素的个数。

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

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

    试题程序:

    include<stdio.h>

    define N 20

    fun (int *a,int n,int x)

    {int p=0,i;

    a[n]=x;

    while (x!=a[p])

    p=p+1;

    if(p==n) return -1;

    else

    {for (i=p;i<n;i++)

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

    a[i+1]=a[i];

    return n-1;

    }

    }

    main()

    {int w[N]={-3,0,1,5,7,99,10,15,30,90},

    x,n,i;

    n=10;

    printf("The original data :\n");

    for (i=0;i<n;i++) printf("%5d",w[i]);

    printf("\nInput x (to delete ): ");

    scanf("%d",&x);

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

    n=fun(w,n,x);

    if (n==-1) printf("***No be found!

    ***\n\n");

    else

    {printf("The data after deleted:\n");

    for (i=0;i<n;i++) printf("%5d",

    w[i]);printf("\n\n");

    }

    }


    正确答案:错误:a[i+1]=a[i]; 正确:a[i]=a[i+1];
    错误:a[i+1]=a[i]; 正确:a[i]=a[i+1]; 解析:上机改错题有一个优势,就是我们可以执行该程序,根据错误的提示再一步一步实现改错的目的,我们先不看程序是什么意思,甚至不用看它在求什么。按Ctrl+F9快捷键,然后看看屏幕提示。另外,审题时我们必须要注意“不要改动main()函数,不得增行或减行,也不得更改程序结构”,这样;对我们来说,只要读懂题意,对程序执行部分:
    {int p=0,i;
    a[n]=x;
    while (x!=a[p])
    p=p+1;
    if (p==n) return -1;
    else
    { for (i=p;in;i++)
    a[i+1]=a[i];
    return n-1;
    }
    逐步分析,再应用平时的常识加以区分,琢磨,相信答案不攻自破,这种考题,按Ctrl+F9快捷键后,屏幕一般都不会提示错误,否则就显得太儿科了一点,所以,我们并不需要着急去找错误,而是把程序读懂。

  • 第14题:

    有以下程序 int f(int n) { if(n==1)return 1; else return f(n-1)+1;} main() { int i,j=0; for(i=1;i<3;i++)j+=f(i); printf("%d\n",j);} 程序运行后的输出结果是

    A.4

    B.3

    C.2

    D.1


    正确答案:B
    解析:在main函数中,对f(1)和f(2)的值进行了累加。f(1)=1f(2)=f(1)+1=2最后,j的值为1+2=3

  • 第15题:

    以下程序运行后的输出结果是()。includevoid reverse(int a[],int n){int i,t;for(i=0;

    以下程序运行后的输出结果是( )。 #include<stdio.h> void reverse(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 b[10]={10,9,8,7,6,5,4,3,2,1};int i,s=0; reverse(b,10); for(i=0;i<3;i++)s+=b[i]; printf("%d\n",s); }

    A.27

    B.6

    C.25

    D.30


    正确答案:B
    解析:本题考查函数调用时的参数传递。函数reverse将数组b进行了逆置,此时b[10]={10,9,8,7,6,5,4,3,2,1),后面for语句的功能是将b中的后3个数累加,并将结果放在s中,最后将s输出,结果s=1+2+3=6。

  • 第16题:

    有以下程序:includeintf(intn)} if(n==1)return 1;else return f(n-1)+1;}main(){int

    有以下程序: #include <stdio.h> intf(intn) } if(n==1) return 1; else return f(n-1)+1; } main() { int i,j=0; for(i=1; i<3; i++) j+=f(i); printf("%d\n",j); } 程序运行后的输出结果是( )。

    A.4

    B.3

    C.2

    D.1


    正确答案:B
    解析:在main函数中,j的值是f(1)和f(2)的值相加的结果。f(1)=1,f(2)=f(1)+1=2,j的值为1+2=3。

  • 第17题:

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

  • 第18题:

    有以下程序

    #include <stdio.h>

    void func(int n)

    { int i;

    for(i=0;i<=n;i++) printf(”*”);

    printf(”#”).

    }

    main( )

    { func(3); printf(”???? ”); func(4); printf(”\n”); }

    程序运行后的输出结果是

    A)****#????***#

    B)***# ????*** *#

    C)**#????*****#

    D)****#????*****#


    正确答案:D
    【答案】D
    【知识点】函数调用中形参与实参的关系
    【解析】第一次调用实参为3,所以形参变量n为3,打印四个*号后打印一个#号。然后在主函数中打印四个?。再次调用func函数,实参值为4,所以形参n的值为4,按照循环,打印五个*号后结束循环,再打印一个#号。

  • 第19题:

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

  • 第20题:

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

  • 第21题:

    有以下程序:include main(){ int i,n=0;for(i=2;i<5;i++){do {if(i%3) continue;n++;

    有以下程序: #include <stdio.h> main() { int i,n=0; for(i=2;i<5;i++) { do { if(i%3) continue; n++; } while(! i); n++; } printf("n=%d\n",n); } 程序执行后的输出结果是( )。

    A.n=5

    B.n=2

    C.n=3

    D.n=4


    正确答案:D
    解析:for循环中,当i=2时,i%3为真,结束本次while循环,!i为假,执行n++,n为1;当i=3时,i%3=0,执行n++,n为2,!i为假,执行n++,n为3;当i=4时,i%3为真,结束本次while循环,!i为假,执行n++,n为4;当i=5时,for循环结束。这时输出n=4。

  • 第22题:

    读程序:includef(int b[],int n){ int i,r;r=1;for(i=0;i<=n;i++)r=r*b[i];return r;}

    读程序: #include <stdio.h> f(int b[],int n) { int i,r; r=1; for(i=0;i<=n;i++) r=r*b[i]; return r; } main() { int x,a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d\n",x); } 上面程序的输出结果是( )。

    A.720

    B.120

    C.24

    D.6


    正确答案:B
    解析:本题考查函数的调用。函数f的功能是将b[]小的第1到n+1个数组元素的值进行相乘运算,然后返回其结果。由于实参3传给形参n,所以f的返回值为x=2*3*4=5=120。

  • 第23题:

    有以下程序 int f(int n) { if(n==1) return 1; else return f(n-1)+1; } main() { int i,j=0; for(i=1;i<5;i++) j+=f(i); printf("%d\n",j); } 程序运行后的输出结果是( )

    A.15

    B.10

    C.6

    D.3


    正确答案:B

  • 第24题:

    有以下程序: int f(int n) { if (n==1) return 1; else return f(n-1)+1; } main() { int i,j=0; for(i=i;i<3;i++) j+=f(i); printf("%d\n",j); } 程序运行后的输出结果是( )。

    A.4

    B.3

    C.2

    D.1


    正确答案:B
    解析:通过分析不难写出,f()函数的数学表达式为:
      f(n)=1  n=l;
      f(n)=f(-1)+1  n≠1;
      在主函数中for循环执行了两次函数调用f(i)。第一次:i为1,调用f(1)得到返回值1,并把它加到j中,j的值为1。第二次i为2,调用f(n),根据递归公式可知f(2)=f(1)+1,得到返回值2并把它加到j中,j的值为3。所以最后输出,i的值为3。