问答题请编写函数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);}
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

请编写函数proc,其功能是:计算并输出下列多项式值。 S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n) 例如,若主函数从键盘给n输入20后,则输出为S= 0.680803。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。 试题程序: include t:stdio.h> double proc(int n) { } void main { int n; double slim; printf("\nInput n:"); scanf("%d",&n); sum=proc(n)。 printf("\ns=%f\n",sum); }


正确答案:

double proc(int n)
{
int i;
double s=0.0; //s为其和的变量
for(i=1;i<=n;i+十)
S=s+(1.0/(2*i-1)-1.O/(2*i)); //计算s
=(1-1/z)+(1/3-1/4)+…+(1/(2n-1)-1/
2n)
return s; //最后把所得到的和返回到主函数中
}
【解析】由题目中所给表达式可知,多项式的值为n项表达式的和。可以利用n次循环求出n项表达式的值,求和放在变量s中。最后将多项式的值返回到主函数当中。

第2题:

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

第3题:

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

第4题:

请编写函数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始终是奇数。

第5题:

请补充函数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。

第6题:

编写函数fun(),它的功能是:求出1~1000之内能被7或11整除,但不能同时被7和11整除的所有整数,并将它们放在a所指的数组中,通过n返回这些数的个数。

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

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

[试题源程序]

include <conio.h>

include <stdio.h>

void fun(int *a, int *n)

{

}

main()

{

int aa[1000], n, k;

clrscr();

fun(aa,&n);

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

if(k+1)%10==0)

{

printf("%5d", aa[k]);

printf("\n");

}

else

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

}


正确答案:void fun(int *a int *n) { int i j=0; for(i=1; i=1000; i++) if((i%7=0 ||i%11==0)&&i%77!=0) a[j++]=i; *n=j; }
void fun(int *a, int *n) { int i, j=0; for(i=1; i=1000; i++) if((i%7=0 ||i%11==0)&&i%77!=0) a[j++]=i; *n=j; } 解析:本题的关键是if条件语句及参数传递。本题的设计思路是:(1)利用循环遍历1到1000之内的整数;(2)利用if语句判断,把查找到的整数保存到形参数组a中;(3)把数组a中数组元素的个数赋值到形参指针n所指的内存。注意程序中if语句的判断条件,本题是找出能被7或11整除但不能同时被7和11整除的所有整数。能同时被7和11整除的数一定能被77整除,且不能被7整除的数不一定就是能被7或11整除的数。所以,可得出程序中的if语句。

第7题:

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

第8题:

编写函数fun(),它的功能是;根据以下公式求p的值,结果由函数值带回。m与n为两个正数且要求m>n。

P=m!/n!(m-n)!),例如:m=12,n=8时,运行结果为495.000000。

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

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

试题程序:

include <conio.h>

include <stdio.h>

float fun (int m, int n)

{

}

main()

{

clrscr() ;

printf ("p=%f\n", fun (12,8) ) ;

}


正确答案:float fun (int m int n) { int i; double p=1.0; for(i=1;i=m;i++) p=p*i; /*求m!*/ for(i=1;i=n;i++) p=p/i; /*求m!/n!*/ for(i=1;i=m-n;i++) p=p/i; /*求m!/(n!(m-n)!)*/ return p; }
float fun (int m, int n) { int i; double p=1.0; for(i=1;i=m;i++) p=p*i; /*求m!*/ for(i=1;i=n;i++) p=p/i; /*求m!/n!*/ for(i=1;i=m-n;i++) p=p/i; /*求m!/(n!(m-n)!)*/ return p; } 解析:本题中,欲求P的值,需要先求m,n,m-n的阶乘值,可用循环语句实现。注意阶乘值应当是double类型,若定义x,y,z为整型变量,则p=x/(y*z)中的除法为整数除法。

第9题:

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

第10题:

编写函数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求平方根。

更多相关问题