问答题请编写函数fun(),该函数的功能是:计算并输出给定整数n的所有因子(不包括1和自身)之和。规定n的值不大于1000。例如,在主函数中从键盘给n输入的值为856,则输出为:sum=763。  注意:部分源程序给出如下。  请勿改动主函数main()和其他函数中的任何内容,仅在fun()函数的花括号中填入所编写的若干语句。  试题程序如下:/**********code.c**********/#include int fun(int n){}void main(){ int n,sum; print

题目
问答题
请编写函数fun(),该函数的功能是:计算并输出给定整数n的所有因子(不包括1和自身)之和。规定n的值不大于1000。例如,在主函数中从键盘给n输入的值为856,则输出为:sum=763。  注意:部分源程序给出如下。  请勿改动主函数main()和其他函数中的任何内容,仅在fun()函数的花括号中填入所编写的若干语句。  试题程序如下:/**********code.c**********/#include int fun(int n){}void main(){ int n,sum; printf(Input n: ); scanf(%d,&n); sum=fun(n); printf(sum=%d,sum);}

相似考题
更多“问答题请编写函数fun(),该函数的功能是:计算并输出给定整数n的所有因子(不包括1和自身)之和。规定n的值不大于1000。例如,在主函数中从键盘给n输入的值为856,则输出为:sum=763。  注意:部分源程序给出如下。  请勿改动主函数main()和其他函数中的任何内容,仅在fun()函数的花括号中填入所编写的若干语句。  试题程序如下:/**********code.c**********/#include int fun(int n){}void main(){ int n,sum; print”相关问题
  • 第1题:

    请编写一个函数fun(),它的功能是计算并输出给定整数n的所有因子(不包括1与自身)之和(规定n的值不大于1000)。

    例如:输入n的值为856,则输出为sum=763。

    注意:部分源程序已存在文件test33_2.cpp中。

    请勿修改主函数main和其他函数中的任何内容,仅在函数count的花括号中填写若干语句。

    文件test33_2.cpp清单如下:

    include<stdio. h>

    include<iostream. h>

    int fun(int n)

    {

    }

    void main ( )

    {

    int n, sum;

    cout<<"Input n:"<<end1;

    cin>>n;

    sum=fun (n);

    cout<<" sum= \n"<<sum<<end1;

    }


    正确答案:int fun(int n) {int s=0i; for(i=2;i=n-1;i++) if (n%i==0) s+=i; return s; }
    int fun(int n) {int s=0,i; for(i=2;i=n-1;i++) if (n%i==0) s+=i; return s; } 解析:本题的解题思路是用n逐个去除以2到n-1之间的所有数,如果n能被除尽,则把所得到的一个因子累加到s中去。此种题型为典型考题。

  • 第2题:

    请补充函数fun(),函数fun()的功能是求7的阶乘。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

    试题程序:

    include<stdio.h>

    long fun(int n)

    {

    if(【 】)

    return(n*fun(【 】);

    else if(【 】)

    return 1;

    }

    main()

    {

    int k=7;

    printf("%d!=%ld\n", k, fun(k));

    }


    正确答案:n>1 n-1 n==1
    n>1 n-1 n==1 解析:第一空:求阶乘时采用递归的算法,n>1和n==1这两种情况的处理方法不同,需要分开考虑。第二空:阶乘的算法是,当n>1时,n!=n*(n-1)!,即fun(n)=n*fun(n-1)。第三空:n==1是递归的终止条件,因为1!=1,所以当n=1时,返回1。

  • 第3题:

    请编写函数void fun(int x, int pp[], int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在即所指的数组中,这些除数的个数通过形参n返回。

    例如,若x中的值为30,则有4个数符合要求,它们是1, 3,5,15。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include <conio.h>

    include <stdio.h>

    void fun (int x, int pp[], int *n)

    {

    }

    main()

    {

    int x,aa[1000], n, i ;

    clrscr();

    printf("\nPlease enter an integer

    number : \n ") ;

    scanf ("%d", &x) ;

    fun (x, aa, &n) ;

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

    printf ("%d ", aa [i]);

    printf ("\n ") ;

    }


    正确答案:void fun (int x int pp[] int *n) { int ij=0; for(i=1;ix;i=i+2) /*i的初始值为1步长为2确保i为奇数*/ if(x%i==0) /*将能整除x的数存入数组pp中*/ pp[j++]=i; *n=j; /*传回满足条件的数的个数*/ }
    void fun (int x, int pp[], int *n) { int i,j=0; for(i=1;ix;i=i+2) /*i的初始值为1,步长为2,确保i为奇数*/ if(x%i==0) /*将能整除x的数存入数组pp中*/ pp[j++]=i; *n=j; /*传回满足条件的数的个数*/ } 解析:本题题干信息是:能整除x且不是偶数的所有整数。循环语句中i从1开始且每次增2,所以i始终是奇数。

  • 第4题:

    请编写函数fun(),它的功能是计算下列级数和,和值由函数值返回。

    S=1+x+x2/2!3/3!+…/xn/n!

    例如,当n=10,x=0.3时,函数值为1349859。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。

    试题程序:

    include<conio.h>

    include<stdio.h>

    include<math.h>

    double fun(double x, int n)

    {

    }

    main ()

    {

    clrscr ();

    printf ("%f ",fun(0,3,10));

    }


    正确答案:double fun(double xint n) { int i; double s=1.0.s1=1.0; for(i=1;i=n;i++) {s1=s1*i; /*各项中的阶乘*/ s=s+ pow(xi)/s1; /*按公式求出*/ } return s; }
    double fun(double x,int n) { int i; double s=1.0.s1=1.0; for(i=1;i=n;i++) {s1=s1*i; /*各项中的阶乘*/ s=s+ pow(x,i)/s1; /*按公式求出*/ } return s; } 解析:本程序中用s1来表示每项的分母(即各项中的阶乘),要注意本程序中s和s1的初值都为1。

  • 第5题:

    请编写函数fun(),其功能是:计算并输出下列多项式的值。

    S=1+4/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)

    例如,着主函数从键盘给n输入50后,则输出为 S=1.960784。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include <stdio.h>

    double fun(int n)

    {

    }

    main ()

    {

    int n;

    double s;

    printf ("\nInput n: ");

    scanf ("%d", &n);

    s=fun (n);

    printf ("\n\ns=%f\n\n", s);

    }


    正确答案:double fun (int n) { int i; double s=0.0s1=0.0; for(i=1;i=n;i++) {s1=s1+i; /*求每—项的分母*/ s=s+1.0/s1; /*求S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)*/ } return s; }
    double fun (int n) { int i; double s=0.0,s1=0.0; for(i=1;i=n;i++) {s1=s1+i; /*求每—项的分母*/ s=s+1.0/s1; /*求S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)*/ } return s; } 解析:该程序的数学思路是:在程序中输入n后,以前n项的和作为分母递加,由于s1是浮点类数据所以s=s+1.0/s1; for 循环的作用是每一次循环给总结果s加上一项1.0/s1。

  • 第6题:

    请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。

    例如,在主函数中从键盘给n输入20后,输出为:s=0.583333。注意:要求n的值不大于100。

    部分源程序在文件PROGl.C中。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


    正确答案:
    解析:该程序功能是计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。解题过程首先求出能被5或9整除的所有自然数,然后在此基础上求得这些数的倒数之和。

  • 第7题:

    请编写函数fun(),它的功能是计算下列级数和,和值由函数值返回。

    S=1-x+x2(上标)/2!-x3(上标)/3!+…+ (-1*x) n(上标)/n!

    例如,当n=15,x=0.5时,函数值为0.606531。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include<conio.h>

    include<stdio.h>

    include<math.h>

    double fun(double x, int n)

    {

    }

    main()

    {

    clrscr();

    printf("%f ",fun (0.5,15));

    }


    正确答案:double fun(double x int n) { int ij=1; double s=1.0s1=1.0; for(i=1;i=n;i++) { j=-1*j; s1=s1*i /*各项中的阶乘*/ s=s+j*pow(xi)/s1; /*按公式求出*/ } return s; }
    double fun(double x, int n) { int i,j=1; double s=1.0,s1=1.0; for(i=1;i=n;i++) { j=-1*j; s1=s1*i /*各项中的阶乘*/ s=s+j*pow(x,i)/s1; /*按公式求出*/ } return s; } 解析:本程序中用s1来表示每项的分母(即各项中的阶乘),要注意本程序中s和s1的初值都为1。注意到本题的公式中是加减相间的,这里要学会使用语句j=-1*j来实现。

  • 第8题:

    请编写函数fun(),它的功能是计算:s=(1-In(1)-In(2)-In(3)-…-1n(m))2

    s作为函数值返回。

    在C语言中可调用log(n)函数求In(n)。log函数的引用说明是double log(double x)。

    例如,若m的值为15,则fun()函数值为723.570801。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include <conio.h>

    include <stdio.h>

    include <math.h>

    double fun(int m)

    {

    }

    main()

    {

    clrscr();

    printf("%f\n",fun(15));

    }


    正确答案:double fun(int m) {   int i; double s=1.0; for(i=1;i=m;i++) s=s-log(i); /*计算s=l-In(1)-In(2)-In(3)-…-In(m)*/ return (s*s); /*对s求平方并返回*/ }
    double fun(int m) {   int i; double s=1.0; for(i=1;i=m;i++) s=s-log(i); /*计算s=l-In(1)-In(2)-In(3)-…-In(m)*/ return (s*s); /*对s求平方并返回*/ } 解析:首先,题目要求计算1依次减去1到M的对数,可用从1到M的循环,每次循环都减一个数的对数。该题需要注意,log()函数的形式参数应浩如烟海double型变量,用于循环的基数变量为整数,需要进行强制转换。最后在返回的时求平方。

  • 第9题:

    请编写一个函数fun(),它的功能是求出一个正整数的所有因子。例如,若输入72, 则程序应该输出:72=2*2*2*3*3。

    注意:部分源程序已存在文件PROC14。CPP中。

    请勿修改主函数和其他函数中的任何内容,仅在函数fun()的花括号中填写若干语句。

    文件PROC14.cpp的内容如下:

    //PROC14. cpp

    include <iostream>

    using namespace std;

    void fun(int number);

    int main ( )

    {

    int n;

    cout<<"Please enter a number \n";

    cin>>n;

    cout<<n<<"=";

    fun (n);

    return 0;

    }

    void fun(int number)

    {

    //* * * * * * *

    }


    正确答案:

  • 第10题:

    请编写函数fun(),其功能是:计算并输出下列多项式值。

    S=(1+1/2)+(1/3+1/4)+…+(1/(2n-1)+l/2n)

    例如,若主函数从键盘给n输入12后,则输出为 S=3.775958。

    n的值要求大于1但不大于100。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include<stdio.h>

    double fun(int n)

    {

    }

    main()

    {

    int n;

    double s;

    printf("\nlnput n:");

    scanf("%d",&n);

    s=fun(n);

    printf("\ns=%f\n",s);

    }


    正确答案:double fun(int n) { int i; double s=0.0; for(i=1;i=n;i++) /*计算S=(1+l/2)+(1/3+1/4)+…+(1/(2n-1)+1/2n)*/ s=s+(1.0/(2*i-1)+1.0/(2*i)); return s; }
    double fun(int n) { int i; double s=0.0; for(i=1;i=n;i++) /*计算S=(1+l/2)+(1/3+1/4)+…+(1/(2n-1)+1/2n)*/ s=s+(1.0/(2*i-1)+1.0/(2*i)); return s; } 解析:本题中s=s+(1.0/(2*i-1)+1.0/(2*i));语句是用C程序去表达题目中的每一项,这是关键,其他问题不难理解。

  • 第11题:

    请编写函数fun(),该函数的功能是:计算并输出

    S=1+(1+20.5)+(1+20.5+30.5)+…+(1+20.5+30.5+…+n0.5)

    例如,若主函数从键盘给n输入20后,则输出为

    s=534.188884。

    注意;部分源程序给出如下。

    请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。

    试题程序:

    include <math. h>

    include <stdio. h>

    double fun(int n)

    {

    }

    main()

    {

    int n;

    double s;

    printf("\n\nInput n: ");

    scanf ("%d", &n);

    s=fun (n)

    printf ("\n\ns=%f\n\n", s);

    }


    正确答案:double fun(int n) { int i; double s=0.0s1=0.0; for(i=1;i=n; i++) {s1=s1+pow(i0.5); /*求每—项*/ s=s+s1; /*按公式求出s*/ } return s; }
    double fun(int n) { int i; double s=0.0,s1=0.0; for(i=1;i=n; i++) {s1=s1+pow(i,0.5); /*求每—项*/ s=s+s1; /*按公式求出s*/ } return s; } 解析:我们先用数学的思路读懂该程序,并用1个字符表示“()”内的值。在本程序中用s1来表示题中每个小括号内的值,第1项相当于有1个10.5次方(它还是1),第2项相当于第1项的值加上200.5次方,第3项相当于第2项的值加上30.5次方,…,依次类推。函数pow (x,y)的功能是求出x的y次方,该函数已在库函数math. h>中定义(即可直接使用)。要程序中用s来表示总的结果,每1次循环加1次s1即加1项。

  • 第12题:

    编写函数fun(),其功能是计算:

    s作为函数值返回。

    在C语言中可调用log(n)函数求1n(n)。log函数的引

    用说明为:double log(double x)。

    例如,若m的值为20,则fun()函数值为6.506583。

    注意:部分源程序给出如下。

    请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。

    试题程序:


    正确答案:


    【解析】题目要求写出程序实现数学表达式的功能,需要用for循环计算累加的结果,调用sqrt函数实现求平方根。循环变量的范围是1~m,每次循环都进行一次累加求和。需要特别注意的是,log函数的形式参数为double型变量,用于循环的计数变量为整数,所以必须强制转换。最后返回所求出的平方根。

  • 第13题:

    请编写函数fun(),该函数的功能是:计算n门课程的平均分,计算结果作为函数值返回。

    例如x有5门课程的成绩是90.5,72,80,61.5,55,则函数的值为71.80。

    注意:部分源程序给出如下.

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include <stdio.h>

    float fun (float *a, int n)

    {

    }

    main ()

    {

    float score[30]=(90.5,72,80,61.5,55},

    aver;

    aver=fun(score, 5);

    printf("\nAverage score is: %5.2f

    \n",aver);

    }


    正确答案:float fun (float *a int n) { float av=0.0; int i; for(i=0;i av=av+a[i]; /*求分数的总和*/ return (av/n); /*返回平均值*/ }
    float fun (float *a, int n) { float av=0.0; int i; for(i=0;i av=av+a[i]; /*求分数的总和*/ return (av/n); /*返回平均值*/ } 解析:我们先按数学的思路来计算平均分:总分除以人数即可得到平均分,其实用C语言的指针来实现该问题,也不难。当指针变量指向一个数组时,用该指针变量引用数组元素时,引用方式与数组的引用方式相同。如本题中a指向了score,所以通过a引用score中的元素时可以用下标法,也可以用指针运算法,a[i]和*(a+i)具有相同的作用。下标运算实际上是从当前地址开始往后取出地址中的第几个元素,当前地址下标为0。例如:若有int cc[10],*P=cc+5;,即p指向了cc的第5号元素,则p[0]的作用是取出从当前地址(即p所指地址)开始的第0号元素,它与cc[5]相同:p[3]的作用是取出从当前地址(即p所指地址)开始往后的第3号元素,它与cc[8]相同:p[-2]的作用是取出从当前地址开始往前的第2号元素,它与cc[3]相同,但不提倡使用“负”的F标。

  • 第14题:

    请编写函数fun(),其功能是;计算井输出下列多项式值。

    S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)

    例如,若主函数从键盘给n输入8后,则输出为 S-0.662872。

    注意;部分源程序给出如下。

    请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。

    试题程序;

    include<stdio. h>

    double fun(int n)

    {

    }

    main ()

    {

    int n;

    double s;

    printf("\nInput n: ");

    scanf ("%d", &n);

    s=fun (n);

    printf ("\ns=%f\n ", s);

    }


    正确答案:double fun(int n) { int i; double s=0.0; for (i=1; i=n; i++) s=s+(1.0/(2*i-1)-1.0/(2*i)); /*计算S= (1-1/2) + (1/3-1/4) +…+ (1/(2n-1)-l/2n) */ return s; }
    double fun(int n) { int i; double s=0.0; for (i=1; i=n; i++) s=s+(1.0/(2*i-1)-1.0/(2*i)); /*计算S= (1-1/2) + (1/3-1/4) +…+ (1/(2n-1)-l/2n) */ return s; } 解析:本题中s=s+(1.0/(2*i-1)-1,O/(2*i));语句是用C程序去表达题目中的每一项,这是关键,其他问题不难理解。

  • 第15题:

    编写函数fun(),它的功能是求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并做为函数值返回。例如:n为1000时,函数值应为s=153.909064。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include <conio.h>

    include <math.h>

    include <stdio.h>

    double fun(int n)

    {

    }

    main()

    {

    clrscr();

    printf("s=%f\n", fun(1000));

    }


    正确答案:double fun(int n) {double s=0.0; int i; for(i=0; in;i++) /*从0~n中找到既能被3整除同时又能被7整除的数并将这些数求和*/ if (i%3==0&&i%7==0) s=s+i; s=sqrt (s); /*对s求平方根*/ return s; }
    double fun(int n) {double s=0.0; int i; for(i=0; in;i++) /*从0~n中找到既能被3整除同时又能被7整除的数,并将这些数求和*/ if (i%3==0&&i%7==0) s=s+i; s=sqrt (s); /*对s求平方根*/ return s; } 解析:本题的解题思路是逐个取得从0~n之间的所有数,对每次取得的数进行条件判断,条件是既能被3整除同时又能被7整除,注意:这两个条件要求同时成立,因此用到了“&及,’运算符。满足条什,该数就被累加到s中去,所有符合条件的数找完后,用sqd()函数(包含于头文件math.h>中)对s求平方根。

  • 第16题:

    请编写一个函数void fun(int m, int k, int xx[]),该函数的功能是将大于整数m且紧靠m的k个非素数存入所指的数组中。

    例如,若输入15,5,则应输出16,18,20,21,22。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include<conio.h>

    include<stdio.h>

    void fun(int m,int k,int xx[])

    {

    }

    main()

    {

    int m,n,zz[1000];

    clrscr();

    printf("\nPlease enter two integers:");

    scanf("%d%d",&m,&n);

    fun(m,n,zz);

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

    printf("%d",zz[m]);

    printf("\n");

    }


    正确答案:void fun(int m int k int xx[]) { int ijn; for(i=m+1n=0;nk;i++) /*找大于m的非素数循环k次即找出紧靠m的k个非素数*/ for(j=2;ji;j++) /*判断一个数是否为素数*/ if(i%j==0) { xx[n++]=i; /*如果不是素数放入数组xx中*/ break; /*并跳出本层循环判断下一个数*/ } }
    void fun(int m, int k, int xx[]) { int i,j,n; for(i=m+1,n=0;nk;i++) /*找大于m的非素数,循环k次,即找出紧靠m的k个非素数*/ for(j=2;ji;j++) /*判断一个数是否为素数*/ if(i%j==0) { xx[n++]=i; /*如果不是素数,放入数组xx中*/ break; /*并跳出本层循环,判断下一个数*/ } } 解析:本题只要掌握了判断非素数和素数的算法即不难完成了,其实程序缺少部分也正是这部分。

  • 第17题:

    编写函数fun(),函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。

    S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)

    例如:若n的值为11时,函数的值为1.833333。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include <conio.h>

    include <stdio.h>

    include <string.h>

    float fun(int n)

    {

    }

    main()

    {

    int n;

    float s;

    clrscr();

    printf("\nPlease enter N: ");

    scanf("%d",&n);

    s=fun(n);

    printf("The result is:%f\n " , s);

    }


    正确答案:float fun(int n) { int is1=0; float s=0.0; for(i=1;i<=n;i++) {s1=s1+i; /*求每一项的分母*/ s=s+1.0/s1; /*求多项式的值*/ } return s; }
    float fun(int n) { int i,s1=0; float s=0.0; for(i=1;i<=n;i++) {s1=s1+i; /*求每一项的分母*/ s=s+1.0/s1; /*求多项式的值*/ } return s; } 解析:本题中用s1来表示式中每一项的分母,而每一项的分母都是其前一项分母加项数。注意由于s1定义成一个整型,所以在s=s+1.0/s1中不能把1.0写成1。

  • 第18题:

    请编写函数fun(),它的功能是求Fibonacci数列中小于t的最大的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为

    F(0)=0,F(1)=1

    F(n)=F(n-1)+F(n-2)

    例如:t=1000时,函数值为987。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include <conio.h>

    include <math.h>

    include <stdio.h>

    int fun(int t)

    {

    }

    main()

    {

    int n;

    clrscr();

    n=1000;

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

    }


    正确答案:int fun(int t) { int a=1b=1c=0i; /*a代表第n-2项b代表第n-1项c代表第n项*/ /*如果求得的数。比指定比较的数小则计算下一个Fibonacci数对ab得新置数*/ do { c=a+b; a=b; b=c; } while(ct); /*如果求得的数c比指定比较的数大时退出循环*/ c=a; /*此时数c的前一个Fibonacci数为小于指定比较的数的最大的数*/ return c; }
    int fun(int t) { int a=1,b=1,c=0,i; /*a代表第n-2项,b代表第n-1项,c代表第n项*/ /*如果求得的数。比指定比较的数小,则计算下一个Fibonacci数,对a,b得新置数*/ do { c=a+b; a=b; b=c; } while(ct); /*如果求得的数c比指定比较的数大时,退出循环*/ c=a; /*此时数c的前一个Fibonacci数为小于指定比较的数的最大的数*/ return c; } 解析:根据所给数列定义不难发现,该数列最终的结果是由两个数列之和组成,所以可以在循环内部始终把c看成是前两项之和(即第n项),而a始终代表第n-2项,b始终代表第n-1项(通过不断地重新赋值来实现)。应注意,退出循环时得到的数c是大于指定比较的数的最小的数,而它的前一个数就是小于指定比较的数的最大的数。

  • 第19题:

    编写函数fun(),它的功能是求n以内(不包括n)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。

    例如:n为1000时,函数值应为s=96.979379。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include <conio.h>

    include <math.h>

    include

    double fun(int n)

    {

    }

    main()

    {

    clrscr();

    printf("s=%f\n",fun(1000));

    }


    正确答案:double fun(int n) {double s=0.0; int i; for(i=0;in;i++) /*从0~n中找到既能被5整除同时又能被11整除的数并将这些数求和*/ if(i%5==0&&i%11==0) s=s+i; s=sqrt(s); /*对s求平方根*/ return s;
    double fun(int n) {double s=0.0; int i; for(i=0;in;i++) /*从0~n中找到既能被5整除同时又能被11整除的数,并将这些数求和*/ if(i%5==0&&i%11==0) s=s+i; s=sqrt(s); /*对s求平方根*/ return s; 解析:本题的解题思路是逐个取得从。0-n之间的所有数,对每次取得的数进行条件判断,条件是既能被5整除同时又能被11整除,注意:这两个条件要求同时成立,因此用到了“&&”运算符。满足条件,该数就被累加到s中去,求出所有符合条件的数后,用sqrt()函数(包含于头文件math.h>中)对s求平方根。

  • 第20题:

    请编写函数fun,其功能是:计算并输出下列多项式的值:

    例如,在主函数中从键盘给n输入50后,输出为:s=1.718282。

    注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


    正确答案:
    解析:该程序功能是计算并输出多项式值。根据题干中给出的数列,首先推出每一项的表达式,然后再对多项式进行累加求和。

  • 第21题:

    请编写一个函数fun(),它的功能是计算并输出给定整数n的所有因子(不包括1与自身)的平方和(规定n的值不大于100)。

    例如:主函数从键盘给输入n的值为56,则输出为 sum=1113。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include <stdio.h>

    long fun(int n)

    {

    }

    main()

    {

    int n;

    long sum;

    printf("Input n:");

    scanf("%d",&n);

    sum=fun(n);

    printf("sum=%ld\n",sum);

    }


    正确答案:long fun(int n) { int i; long s=0; for(i=2;i=n-1;i++) /*从2~n-1中找n的所有因子*/ if(n%i==0) s+=i*i; /*将所有因子求平方加*/ return s; /将平方和返回*/ }
    long fun(int n) { int i; long s=0; for(i=2;i=n-1;i++) /*从2~n-1中找n的所有因子*/ if(n%i==0) s+=i*i; /*将所有因子求平方加*/ return s; /将平方和返回*/ } 解析:本题的解题思路是用n逐个去除以2到n-1之间的所有数,如果n能被除尽,则把所得到的一个因子的平方累加到s中去。

  • 第22题:

    请编写函数fun( ),其功能是:将所有大于1小于整数m的素数存入xx所指数组中,素数的个数通过k传回。

    例如,输入25,则应输出2 3 5 7 11 13 17 19 23。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include<conio.h>

    include<stdio.h>

    void fun(int m,int *k,int xx[ ])

    {

    }

    main( )

    {

    int m,n,zz[100];

    clrscr( );

    printf("/nPlease enter an integer number between 10 and 100:");

    scanf("%d",&n);

    fun(n,&m,zz);

    printf("\n\nThere are%d prime numbers

    less than %d:",m,n);

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

    printf("\n %4d",zz[n]);

    }


    正确答案:void fun(int mint *kint XX[]) { int ijtn=0; for(i=2;im;i++) /*找出大于1小于整数m的素数*/ { t=l; for(j=2;ji;j++) if(i%j==0) { t=0; break; } if(t==1) xx[n++]=i; } *k=n; /*返回素数的个数*/ }
    void fun(int m,int *k,int XX[]) { int i,j,t,n=0; for(i=2;im;i++) /*找出大于1小于整数m的素数*/ { t=l; for(j=2;ji;j++) if(i%j==0) { t=0; break; } if(t==1) xx[n++]=i; } *k=n; /*返回素数的个数*/ } 解析:这道题是考查一个数是不是素数,只要掌握了判断素数的方法,问题便能顺利解决,请以此题为例,掌握判断素数的方法。

  • 第23题:

    请编写函数fun,其功能是:计算并输出

    例如,在主函数中从键盘给n输入20后,输出为:s=534.188884。

    注意:要求n的值大于1但不大于100。

    部分源程序在文件PROGl.C中。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


    正确答案:
    解析:该程序功能是对题干中给出的多项式的求解。根据题干中给出的数列,首先推出每一项的表达式,然后再对多项式进行累加求和。