要求以下程序的功能是计算: s=1 + 1/2 + 1/3 + ... + 1/10, 但运行后输出结果错误,导致错误结果的程序行是 int main (void){ int n; float s; s=1.0; for(n=10; n>1; n--) s=s+1/n; printf("%6.4fn",s); return 0; }A.int n; float s;B.for(n=10; n>1; n--) s=s+1/n;C.s=s+1/n;D.s=1.0;

题目

要求以下程序的功能是计算: s=1 + 1/2 + 1/3 + ... + 1/10, 但运行后输出结果错误,导致错误结果的程序行是 int main (void){ int n; float s; s=1.0; for(n=10; n>1; n--) s=s+1/n; printf("%6.4fn",s); return 0; }

A.int n; float s;

B.for(n=10; n>1; n--) s=s+1/n;

C.s=s+1/n;

D.s=1.0;


相似考题
更多“要求以下程序的功能是计算: s=1 + 1/2 + 1/3 + ... + 1/10, 但运行后输出结果错误,导致错误结果的程序行是 int main (void){ int n; float s; s=1.0; for(n=10; n>1; n--) s=s+1/n; printf("%6.4fn",s); return 0; }”相关问题
  • 第1题:

    有以下程序:includedstdio.h>int f(int n); main( ){int a=3,s; s=f(a);s=s+f(a);printf(&qu

    有以下程序:

    includedstdio.h>

    int f(int n);

    main( )

    {int a=3,s;

    s=f(a);s=s+f(a);printf("%dkn",s);

    }

    int f(int n)

    {static int a=1;

    n+=a++;

    return n;

    }

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

    A.7

    B.8

    C.9

    D.10


    正确答案:C

    本题考查函数的调用。当执行s=f(a)时,进入fun函数,n=n+(a++),n的值为3,a的值为1,a++的意思是先用a的值,再将a加1为2,所以n的结果为4,也就是主函数中f(a)的结果为4;返回主函数,执行s=s+f(a),s为4,再次调用函数,此时n仍为3,a的值刚才已经自加2,所以计算后n的值为5,a自加l为3。返回主函数,f(a)的结果为5,所以s=4+5=9。

  • 第2题:

    要求以下程序的功能是计算main () { int n; float s; S=1.0; for (n=10; n>1; n--) s=S+1/n; printf("%6.4f\n",S); } 程序运行后输出结果错误,导致错误结果的程序行是

    A.s=1.0;

    B.for(n=10;n>1;n--)

    C.s=s+1/n;

    D.prind("%6.4f\n",s);


    正确答案:C
    解析:程序中由于n为整型,所以1/n的结果始终为0,故程序最后输出的结果为0,其结果错误,原因为在表达式1/n中1和n均为整型,所以应该将1改为1.0,这样表达式1.0/n的值不为0,为该数学表达式的值,因此我们可以知道导致程序运行后输出结果错误的行为s=s+1/n;,所以,4个选项中选项C符合题意。

  • 第3题:

    以下程序的输出结果是includelong fun(int n){ long s;if(n==1||1n==2) s=2;else s

    以下程序的输出结果是 #include<iostream.h> long fun(int n) { long s; if(n==1 | | 1n==2) s=2; else s=n-fun(n-1) ; return s; } void main( ) {cout < < fun(3) ;}

    A.1

    B.2

    C.3

    D.4


    正确答案:A
    解析:题中fun函数进行了递归调用,第1次调用:fun(3) n=3 s=3-fun(2) ,第二次调用时: fun(2) n=2 s=2,返回第一次调用后,s=3-2=1。

  • 第4题:

    下面程序的运行结果是[]。include int f(int a[],int n){ if(n>1)return a[0]+f(a+1,n-1

    下面程序的运行结果是[ ]。

    include <stdio.h>

    int f(int a[],int n)

    { if(n>1)

    return a[0]+f(a+1,n-1);

    else

    return a[0];

    }

    main()

    {int aa[10]={12,3,4,5,6,7,8,9,10},s;

    s=f (aa+2,4); printf("%d\n",s); }


    正确答案:18
    18 解析:实参中aa+2是指将数组元素3的地址传递绐形参a,应当注意—点,用数纽名作函数实参时,不是把数组的值传给形参,而是把实参数组的地址传绐形参数组,两个数组共用一段内存单元。所以a[]={3,4,5,6,7,8,9,10),n=4,a[0]=3。形参中a+1表示数组元素4的地址传递绐形参a,所以a[0]+f(a+1,n-1)=3+f(a+1)),3),此时a[]={4,5,6,7,8,9,10),n=3,a[0]=4。n=3同样满足n>1的条件a[0]+f(a+1,n-1)=4+f(a+1,2)此时a[]={5,67,8,9,10},n=2, a[0]=5。n=2同样满足n>1的条件a[0]+f(a+1,n-1)=5+f(a+1,2)此时a[]={6,7,8,9,10},n=1,a[0]=6。n=1不再满足条件返回a[0]=6, 6+5+4+3=18,所以最后的结果为18。

  • 第5题:

    以下程序的输出结果是 include long fun(int n) {long s;if(n=1||n=2)s=2; else s=

    以下程序的输出结果是 #include<iostream.h> long fun(int n) { long s; if(n=1||n=2)s=2; else s=n-fun(n-1); return s; } void main( ) { cout<<fun(3);}

    A.1

    B.2

    C.3

    D.4


    正确答案:A
    解析:题中fun函数进行了递归调用,第1次调用:fun(3)n=3 s=3-fun(2),第二次调用时: fun(2)n=2 s=2,返回第一次调用后,s=3-2=1。

  • 第6题:

    以下程序的输出结果是includelong fun(int n){long s;if(n=1||n=2)s=2;else s=n-fu

    以下程序的输出结果是 #include<iostream.h> long fun(int n) {long s; if(n=1||n=2) s=2; else s=n-fun(n-1): return s; } void main() {cout<<fun(3);=

    A.1

    B.2

    C.3

    D.4


    正确答案:A

  • 第7题:

    以下程序的输出结果是()。includeint fun(int n,int *s){ int f1,f2;if(n==0||n==1)*s=

    以下程序的输出结果是( )。 #include<stdio.h> int fun(int n,int *s) { int f1,f2; if(n==0||n==1) *s=1; else { fun(n-1,&f1); fun(n-2,&f2); *s=f1+f2; } } void main() { int x; fun(6,&x); printf("\n%d" ,x);}

    A.7

    B.13

    C.9

    D.10


    正确答案:B
    解析:n=0或n=1是递归的终止条件。然后利用已知值逐步递推求出未知值。注意:通过传送地址值,在被调用函数中直接改变调用函数中的变量的值。

  • 第8题:

    有以下程序

    #inculde <stdio.h>

    int F(int t[],int n);

    main()

    { int a[4]=(1,2,3,4),s;

    s =F(a,4);printF(“%d\n”,s);

    }

    int F(int t[],int n)

    { iF(n>0) return t[n-1]+F(t,n-1);

    Else return 0;

    }

    程序运行后的输出结果是

    A.4

    B.10

    C.14

    D.6


    正确答案:B
    解析:函数的功能是求数组所有元素的和。递归表示为a[3]+a[2]+a[1]+a[0]+f(t,0)=10。

  • 第9题:

    有以下程序:includeint f(int t[],int n);main(){int a[4]={1,2,3,4},s;s=f(a,2);prin

    有以下程序: #include<stdio.h> int f(int t[],int n); main() {int a[4]={1,2,3,4},s; s=f(a,2);printf("%d\n",s); } int f(int t[],int n) {if((n>0)&&(n<5))return t[n+1]+f(t,n-1); else return 0; } 程序运行后的输出结果是( )。

    A.4

    B.7

    C.10

    D.61


    正确答案:B

  • 第10题:

    有以下程序:include using namespace std;class sample{private:intn;public:sample(

    有以下程序:#include <iostream>using namespace std;class sample{private: int n;public: sample() {} sample(int m) { n=m; } sample add(sample s1,sample s2) { this->n-s1.n+s2.n; return (*this); void disp() { cout <<"n="<<n<<end1; } };int main (}{ sample s1(10),s2(5),s3; s3.add(s1,s2); s3.disp (); return 0;}程序运行后,输出的结果是

    A.n=10

    B.n=5

    C.n=20

    D.n=15


    正确答案:D
    解析:本题考核this指针的应用。上述程序中,sample类的add成员函数中使用了this指针,this指针指向当前对象自身,该成员函数中的语句:this->n=s1.n+s2.n;,用于修改当前对象的数据成员n的值,语句:return(*this);用于返回当前对象自身,即对当前对象进行了修改。对于main()函数调用add成员函数语句“s3.add(s1,s2);”。此时,this指针指向的是对象s3,执行该语句前,s3的数据成员n未赋值,执行完该语句后,就修改了s3的私有成员n的值,使其为15。

  • 第11题:

    要求以下程序的功能是计算:s=1+1/2+1/3+…+1/100。程序运行后输出结果错误,导致错误结果的程序行是( )。

    A.s=1.0;

    B.

    C.S=S+1/n;

    D.


    正确答案:C
    本题的考查点是查找程序运行错误的原因。主要考查运算中字符的转换。初看此题,可能不太容易发现错误,该题的运行结果是1.0000,算法错误。s=s+1/n;1/2=0,因为n为整型,所以1/n都为0。这就是导致本题出错的原因。s=s+1/n应改为s=s+1.0/n。

  • 第12题:

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

    7

    B

    8

    C

    9

    D

    10


    正确答案: B
    解析:
    在函数f中,整型变量a为静态变量,所以每次调用函数f时不再为a重新赋值,而且a的值只有在程序结束时才被释放。第一次调用f后n=4,a=2,s=4;第二次调用时,a初值为2,调用后,a=3,n=5,s=4+5=9,所以输出结果为9。答案选择C选项。

  • 第13题:

    以下程序的功能是计算:。includemain(){int n; float s; s=1.0; for(n=10;n>1;n--)s=s+

    以下程序的功能是计算:。#include <stdio.h> main() { int n; float s; s=1.0; for(n=10;n>1;n--) s=s+1/n; printf("%6.4f\n",s); } 程序运行后输出结果错误,导致错误结果的程序行是( )。

    A.s=1.0;

    B.for(n=10;n>1;n--)

    C.s=s+1/n;

    D.printf("%6.4f\n",s);


    正确答案:C
    解析:该程序的运行结果是1.0000,算法错误。在s=s+1/n中,因为n为整型,所以循环中1/n始终为0。这就是本题算法错误的原因。应把s=s+1/n改为s=s+1.0/n。

  • 第14题:

    有以下程序:include using namespace std;class sample{private: int n;public: samp

    有以下程序: #include <iostream> using namespace std; class sample { private: int n; public: sample(){} sample (int m) { n=m; } sample add(sample s1,sample s2) { this->n=s1.n+s2.n; return (*this); } void disp() { cout<<"n="<<n<<end1; } }; int main () { sample s1(10) ,s2(5),s3; s3.add(s1,s2); s3.disp(); return 0; } 程序运行后,输出的结果是( )。

    A.n=10

    B.n=5

    C.n=20

    D.n=15


    正确答案:D
    解析:本题考核this指针的应用。本程序中,sample类的add成员函数中使用了this指针,this指针指向当前对象自身,该成员函数中的语句“this->n=s1.n+s2.n;”用于修改当前对象的数据成员n的值,语句“return(*this);”用于返回当前对象自身,即对当前对象进行了修改。对于主函数调用add()成员函数语句“s3.add(s1,s2);”。此时,this指针指向的是对象s3,执行该语句前,s3的数据成员n未赋值,执行完该语句后,就修改了s3的私有成员n的值,使其为15。

  • 第15题:

    要求以下程序的功能是计算:s=1+1/2+1/3+…+…1/10

    main( )

    { int n; float s;

    s=1.0;

    for(n=10;n>1;n--)

    s=s+1/n;

    printf("%6.4f\n",s);

    }

    程序运行后输出结果错误,导致错误结果的程序行是

    A.s=1.0;

    B.for(n=10;n>1;n--)

    C.s=s+1/n;

    D.printf("%6.4f\n",s);


    正确答案:C
    解析:当“/”两侧均为整型数时,运算结果为整数,因此1/n(n>1)的结果总为0,而不是小数。

  • 第16题:

    以下程序运行后的输出结果是()。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。

  • 第17题:

    要求以下程序的功能是计算main() {int n;float s; s=1.0; for(n=10;n>1;n--) s=s+1/n; pfintf("%6.4f\n",s); } 程序运行后输出结果错误,导致错误结果的程序行是

    A.s=1.0;

    B.for(n=10;n>1;n--)

    C.s=s+1/n;

    D.printf("%6.4f\n",8);


    正确答案:C
    解析:程序中由于n为整型,所以1/n的结果始终为0,故程序最后输出的结果为0,其结果错误,原因为在表达式1/n中1和n均为整型,所以应该将1改为1.0,这样表达式1.0/n的值不为0,为该数学表达式的值,因此我们可以知道导致程序运行后输出结果错误的行为s=s+1/n。

  • 第18题:

    下面程序的运行结果是( )。 include main() {int a,s,n,m; a=2;s=0;n=1;m=1; while(m<=4

    下面程序的运行结果是( )。 include<stdio.h> main() {int a,s,n,m; a=2;s=0;n=1;m=1; while(m<=4){n=n*a;s=s+n;++m;} printf("s=%d",s); }


    正确答案:s=30
    s=30 解析:分析循环条件“m=1,m=4”,所以循环4次。第1次:n=n*a=2,s=s+n=2;m=2。第2次:n=n*a=4,s=s+n=6;m=3。第3次:n=n*a=8,s=s+n=14;m=4。第4次:n=n*a=16,s=s+n=30。

  • 第19题:

    要求以下程序的功能是计算s=1+1/2+1/3+…+1/10 main() { int n; float s; s=1.0; for(n=1O;n>1;n--) s=s+1/n; printf("%6.4f\n",s); } 程序运行后输出结果错误,导致错误结果的程序行是( )。

    A.s=1.0;

    B.for(n=1O;n>l;n--)

    C.s=s+1/n;

    D.printf("%6.4f\n",s);


    正确答案:C
    解析:程序中由于n为整型,所以1/n的结果始终为0,故程序最后输出的结果为0,其结果错误,原因为在表达式1/n中1和n均为整型,所以应该将1改为1.0,这样表达式1.0/n的值不为0,为该数学表达式的值,因此可以知道导致程序运行后输出结果错误的行为“s=s+1/n;”,所以,4个选项中选项C符合题意。

  • 第20题:

    有以下程序includevoid fun(float* p1,int n1,float,*p2,int n2,float* s){ int i;s=(

    有以下程序 #include<stdio.h> void fun(float * p1,int n1,float,*p2,int n2,float * s) { int i; s=(float *)calloc(1,sizeof(float)); *s=0; for(i=0;i<n1;i++) *s+=*p1++; for(i=0;i<n2;i++) *s+=*p2++; } main() { float a[2]={1.1,2.2},b[3]={10.0,20.0,30.0),*s=a; fun(a,2,b,3,s); printf("%f\n",*s); } 上面程序的输出结果是( )

    A.60

    B.3.3

    C.63.3

    D.1.1


    正确答案:D

  • 第21题:

    有以下程序: #includedstdio.h> int f(int n); main( ) {int a=3,s; s=f(a);s=s+f(a);printf("%dkn",s); } int f(int n) {static int a=1; n+=a++; return n; } 程序运行后的输出结果是( )。

    A.7

    B.8

    C.9

    D.10


    正确答案:C
    本题考查函数的调用。当执行s=f(a)时,进入fun函数,n=n+(a++),n的值为3,a的值为1,a++的意思是先用a的值,再将a加1为2,所以n的结果为4,也就是主函数中f(a)的结果为4;返回主函数,执行s=s+f(a),s为4,再次调用函数,此时n仍为3,a的值刚才已经自加2,所以计算后n的值为5,a自加l为3。返回主函数,f(a)的结果为5,所以s=4+5=9。

  • 第22题:

    有以下程序:include using namespacestd;class sample{private:int n:public:sample

    有以下程序: #include <iostream> using namespace std; class sample { private: int n: public: sample () {} sample(int m) { n=m; } sample add(sample s1, sample s2) this->n=s1.n+s2.n; return (*this); } void disp () { cout <<"n="<<n<<end1; } }; int main() sample s1(1)0,s2(5),s3; s3.add(s1,s2); s3.disp(); return 0; } 程序运行后,输出的结果是

    A.n=10

    B.n=5

    C.n=20

    D.n=15


    正确答案:D
    解析:本题考核this指针的使用。类成员函数add中通过this指针实现私有数据成员n的赋值。

  • 第23题:

    有以下程序: #include<stdio.h> int f(int t[],int n); main( ) {int a[4]={1,2,3,4},s; s=f(a,4);printf("%d\n",s); int f(int t[],int n) {if(n>0)return t[n-1]+f(t,n-1); else return 0; } 程序运行后的输出结果是( )。

    A.4

    B.10

    C.14

    D.6


    正确答案:B
    本题考查了函数的调用,并且使用了嵌套。

  • 第24题:

    单选题
    有以下程序:#include int f(int t[],int n);main(){ int a[4]={1,2,3,4},s; s=f(a,4); printf(%d,s);}int f(int t[],int n){ if(n>0)return t[n-1]+f(t,n-1); else return 0;}程序运行后的输出结果是(  )。
    A

    4

    B

    10

    C

    14

    D

    6


    正确答案: B
    解析:
    函数f的功能是通过递归计算数组t中元素的和。在主函数中调用了递归函数f(a,4),将递归函数f(a,4)的递归式展开,s = f(a,4) = a[3] + f(a,3) = a[3] + a[2] + f(a,2) = a[3] + a[2] + a[1] + f(a,1) = a[3] + a[2] + a[1] + a[0] + f(a,0) = a[3] + a[2] + a[1] + a[0] + 0 = 4 + 3 + 2 + 1 + 0 = 10。答案选择B选项。