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

题目

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

}

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

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

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

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

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

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


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

第2题:

请编写函数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项。

第3题:

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

第4题:

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

{

//* * * * * * *

}


正确答案:

第5题:

请编写一个函数fun(),它的功能是将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转为整数的函数)。

例如,若输入字符串“-1234”,则函数把它转换为整数值 -1234。

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

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

试题程序:

include <stdio.h>

include <string.h>

long fun(char *p)

{

}

main ( )

{

char s[6];

long n;

printf("Enter a string:\n");

gets(s);

n=fun(s);

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

}


正确答案:long fun (char *p) { long n=0; int flag=1; if(*p=='-') /*负数时置flag为-1*/ {p++;flag=-1;} else if(*p=='+') /*正数时置flag为1*/ p++; while(*p!='\0') {n=n*10+*p-'0'; /*将字符串转成相应的整数*/ p++; } return n*flag; }
long fun (char *p) { long n=0; int flag=1; if(*p=='-') /*负数时置flag为-1*/ {p++;flag=-1;} else if(*p=='+') /*正数时置flag为1*/ p++; while(*p!='\0') {n=n*10+*p-'0'; /*将字符串转成相应的整数*/ p++; } return n*flag; } 解析:if()的作用是判断它是正数还是负数。while()循环的作用是将字符串转成相应的整数。注意*p是一个字符如'9', '4',并不是一个数,要将其转成相应的数字必须令其减去'0'(不是'\0'),即*p-'0'就得到*p这个字符的相应数字。如'0'-'0'=0, '8'-'0'=8等。必须在程序的前面加#includestdlib.h>,函数atol()的作用是将字符串p转成长整型数,它是一个库函数。

第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+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。

第8题:

请编写一个函数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中去。此种题型为典型考题。

第9题:

编写函数fun(),它的功能是:计算和输出下列级数的和。

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

例如,当n=10时,函数值为0.909091。

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

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

试题程序;

include<conio.h>

include<stdio.h>

double fun(int n)

{

}

main ( )

{

clrscr();

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

}


正确答案:double fun(int n) { int i; double s=0.0; for (i=l; i<=n; i++) s=s+l.0/(i* (i+l)); /*求级数的和*/ return s; }
double fun(int n) { int i; double s=0.0; for (i=l; i<=n; i++) s=s+l.0/(i* (i+l)); /*求级数的和*/ return s; } 解析:解决数学序列的问题,我们的思路依然是“数学先行”,即先看清楚题目的数学逻辑,然后再根据C语言来“翻译”出来。本题中,每一项的值都是n*(n+1)的倒数。当输入n时,从1开始循环,注意,此处for(i=1;i