请编写一个函数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;cou

题目

请编写一个函数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;

}


相似考题
更多“请编写一个函数fun(),它的功能是计算并输出给定整数n的所有因子(不包括1与自身)之和(规定n的值不 ”相关问题
  • 第1题:

    请编写一个函数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中去。

  • 第2题:

    请编写函数count Value(intn),它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s, s作为函数返回值,最后结果S输出到文件out.dat中。 例如若n为1000时,函数值应为:s=153.909 064。


    正确答案:
    【审题关键句】同时被3和7整除的自然数和的平方根。
    【解题思路】
    ①定义循环整型变量i和双精度型变量sum,并将sum值设置为0.0。
    ②采用for循环语句,循环变量i从7开始依次递增直到其值等于或大于n,在循环体中,如果i除以3和7的得的余数同时为0,则说明这个数能同时被3和7整除,这时把这个数的值乘以1.0转化成实型数据,累加到变量sum上。
    ③退出循环后,调用求平方根的函数sqrt(sum),求得这些数的和的平方根赋给变量sum,把sum的值返回。
    【参考答案】

  • 第3题:

    如果一个正整数的所有因子之和等于该正整数,则称这个正整数为完全数。 编写程序读入n,输出不超过n的全部完全数,1不是完全数。(一个数n的因子即是在1~n-1范围内能被其整除的数)。


    程序代码如下:CLEARSET TALK OFFgs=0FOR i=5 to 500 yzh=0 FOR j=1 to INT (i/2) IF i&j=0 yzh= yzh+j ENDIF ENDFOR IF yzh=i gs=gs+1 ENDIF ENDPOR? Gs 程序代码如下:CLEARSET TALK OFFgs=0FOR i=5 to 500 yzh=0 FOR j=1 to INT (i/2) IF i&j=0 yzh= yzh+j ENDIF ENDFOR IF yzh=i gs=gs+1 ENDIF ENDPOR? Gs

  • 第4题:

    请编写函数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程序去表达题目中的每一项,这是关键,其他问题不难理解。

  • 第5题:

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

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

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

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

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


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