以下函数的功能是计算n!,请完善程序。 long mul(int n) { int i=1; long sum; if(n==0) return 1; else sum=1; while(i<=n) { sum= ; i++; } return sum; }

以下函数的功能是计算n!,请完善程序。 long mul(int n) { int i=1; long sum; if(n==0) return 1; else sum=1; while(i<=n) { sum= ; i++; } return sum; }


参考答案和解析
(1)错误:result*=--n; 正确:result*=n--;(2)错误:return; 正确:return result; (1)错误:result*=--n; 正确:result*=n--;(2)错误:return; 正确:return result; 解析:该题采用循环语句计算n的阶乘。当n大于1且小于170时,令result与n相乘,同时n自动减1,循环至n=2(n=1时无需相乘):注意:o和1的阶乘都等于1,可用条件语句和循环语句实现上述功能。

相关考题:

●试题八阅读以下说明和Java代码,将解答写入答题纸的对应栏内。【说明】下面的程序中定义了两个方法求自然数1~100的和。具体如下:int sum1(int n);利用循环求1~n的和,int sum2(int n);利用递归方法求和1~n的和;在main()方法中调用这两个方法求1~100的和并显示。在程序的每条横线处填写一个适当的语句,使程序的功能完整。public class Sum{public static void main (1){//1.调用sum1(int n),求1~100的和//标准输出(2) ("1~100的和:"+sum1(100));//2.调用sum2(int n),求1~100的和//标准输出(2) ("1~100的和:"+sum2(100));}static int sum1(int n){int result=0;for(int i=1;i=n;i++)(3)retrun result;}static int sum2(int n){if (4)return 1;else(5)}}

有以下程序int fun(int x[],int n){ static int sum=0,i;for(i=0;in;i++) sum+=x[i];return sum;}main(){ int a[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);printf(" % d\n",s);}程序执行后的输出结果是A)45B)50C)60D)55

阅读以下说明和Java代码,将解答写入对应栏内。【说明】下面的程序中定义了两个方法求自然数1~100的和。具体如下:int suml(int n);利用循环求1~n的和,int sum2(int n);利用递归方法求和1~n的和;在main()方法中调用这两个方法求1~100的和并显示。在程序的每条横线处填写一个适当的语句,使程序的功能完整。public class Sum {public static void main (1){//1. 调用sum1(int n),求1~100的和//标准输出(2) ("1~100的和:" +sum1(100));//2. 调用sum2(int n),求1~100的和//标准输出(2) ("1~100的和:"+sum2(100));}static iht sum1( int n){int result=0;for(int i=1;i<=n;i++)(3)retrun result;}static int sum2(int n){if (4)return 1else(5)}}

有以下程序: int fun(int x[],int n) {static int sum=0,I; for(i=0;i<n;i++)sum+=x[i]; return sum; } main() {int a[]={1,2,3,4,5},b[]={6,7,8,9},s=0; s=fun(a,5)+fun(b,4);printf("%d\n",s); } 程序执行后的输出结果是( )。A.45B.50C.60D.55

有以下程序int fun(int x[],int n){static int sum=0,i;for(i=0;in;i++) sum+=x[i];return sum;}main(){int a[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);printf("%d\n",s);}程序执行后的输出结果是A.45B.50C.60D.55

( 9 )下面的函数利用递归实现了求 1+2+3+ …… +n 的功能:int sum ( int n ) {if ( n==0 )return 0;elsereturn n+sum ( n-1 ) ;}在执行 sum ( 10 )的过程中,递归调用 sum 函数的次数是【 9 】 。

●下列程序运行后输出的数据是(51)。int sum(int n){int p=1;int s=0;int i=0;for(i=1;i﹤=n;i++) s+=(p*=i);retum s;}main(){printf((“sum(5)=%d\n”,sum(5));}(51) A.sum(5)=151B.sum(5)=152C.sum(5)=153D.sum(5)=155

请教专家,下列c++代码哪里错了?? #includeiostreamvoid main(){ int i,n,sum; cout"please input n:"endl; cinn; sum=0; for(i=1,i=n;i++); { sum+=i; } cout"运算结果为"sumendl;}

给定程序MODllC中函数fun的功能是:输出M行M列整数方阵,然后求两条对角线上各元素之和,返回此和数。inClude<coMo.h>inClude<stdio.h>dehne M 5/************fOUnd************/int fun(int n,int xx[][]){int i,j,sum=0;printf("\n The%dx%d matrix:\n"M,M);for(i=0;i<M;i++){ for(j=0;j<M;j++)/************found************/printf("%f",xx[i][j]);printf("\n");}for(i=0;i<n;i++)sum+=xx[i][i]+XX[i][[n-i-1];return(sum);}main( ){int aa[M][M]={{1,2,3,4,5),{4,3,2,1,0),{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};clrscr( );printf("\n The sum Of all elements On 2 diagnals is %d."fun(M,aa));}

请编写一个函数inline long sum(int n),用递归函数完成运算:sum(n)=1*1+2*2+…n*n,递归表达式为 sum(n)=sum(n-1)+n2。注意:部分源程序已存在文件test10_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数sum的花括号中填写若干语句。文件test10_2.cpp的内容如下:include<iostream.h>inline long sum(int n){}void main(){int n;cout<<"输入n:";cin>>n;cout<<"结果为:"<<sum(n)<<endl;}

以下程序的输出结果是【】。 include using namespace std; int main(){ int sum,i; for( 以下程序的输出结果是【 】。include<iostream>using namespace std;int main(){int sum,i;for(sum=0,i=1;i<5;i++)sum+=i;cout<<sum<<endl;return 0;}

阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。[说明]编写一个函数,输入为偶数时,调用函数求1/2+?/+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n (利用指针函数)。[函数]include "stdio. h",main(){float peven (),podd (),dcall ();float sum;int n;while (1){scanf("%d",n);if (n>1)break;}if(n%2==0){printf("Even="):(1);}else{pfinff("Odd=");(2);}printf("%f",sum);}float peven (int n){float s;int is=1;for(i=2;i<=n;i+=2)(3);return (s);}float podd (n)int n;{float s;int i;s=0;for(i=1 i<=n;i+=2)(4);return (s);}float dcall(fp,n)float (*fp) ();int n;{float s;(5);returu (s);}

以下C程序的运行结果为______。main(){ int i=1,sum=0; loop:if(i<=10) { sum+=i; i++; goto loop; } printf("sum=%d\n",sum);}A.sum=10B.sum=55C.sum=100D.sum=88

阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。【说明】计算n的合数。一个整数n可以有多种划分,使其划分的一列整数之和为n。例如,整数5的划分为:54 13 23 1 12 2 12 1 1 11 1 1 1 1共有7种划分。这种划分的程序如下所示。【程序】include <stdio.h>int n[1000],m,k;void output sum(){int j;for(j=0;n[j]!=0;j++)printf("%d\t",n[j]);printf("\n");}void sum(int i)if(m-n[i]<n[i]){ m=m-n[i];(1)i++;n[i+1]=0;}else{(2)m-=n[i];i++;}if(m!=n[i])sum(i);elseoutput_sum();if(n[i]>1){n[i]--;(3)}else{while((n[i]==1)(i>O)){i--;(4)}if(i!=0){(5)sum(i);}}}void main(){int i;scanf("%d",n[0]);m=k=n[0];for(i=1;i<=k;i++)n[i]=0;while(n[0]!=1){n[0]--;i=0;sum(0);m=k;}}

以下程序执行后sum的值是 ______。 main() { int i,sum; for(i=1;i<6;i++)sum+=i; printf("%d\n",sum); }A.15B.14C.不确定D.0

下列程序的功能是:找出所有100以内(含100)满足I,I+4,I+10都是素数的整数I(1+10也是在100以内)的个数cnt,以及这些I之和sum。请编制函数countValue()实现程序要求,最后调用函数writeDAT()把结果cnt和sum输出到文件out64.dat中(数值1不是素数)。注意:部分源程序已给出。请勿改动主函数main()和输出数据函数writeDAT()的内容。试题程序:include<stdio.h>int cnt, sum;int isPrime(int number){int i,tag=1;if (number==1)return 0;for(i=2;tag i<=number/2;i++)if(number%i==0) tag=0;return tag;}void countValue ( ){}void main( ){cnt=sum=0;countValue ( );printf ( "满足条件的整数的个数=%d\n", cnt);printf ( "满足条件的整数的和值=%d\n", sum);writeDAT ( );}writeDAT ( ){FILE *fp;fp=fopen("out64.dat","w");fprintf(fp,"%d\n%d\n",cnt,sum);fclose(fp);}

以下程序执行后sum的值是( )。 main { int i,sum; for(i=1;i6;i++)sum+=i: printf("1%d\n",sum): }A.15B.14C.不确定D.0

下面的程序中定义了两个方法求自然数1~100的和。具体如下:int suml(int n);利用循环求1~n的和,int sum2(int n);利用递归方法求和1~n的和;在main()方法中调用这两个方法求1~100的和并显示。在程序的每条横线处填写一个适当的语句,使程序的功能完整。public class Sum{public static void main(String args[]){//1.调用suml(int n),求1~100的和System.out.println("1~100的和:"+sum1(100));//2,调用sum2(int n),求1~100的和System.out.println("1~100的和:"+sum2(100));}static int suml(int n){int result=0;for(int i=1;i<=n;i++)________________retrun result;}static int sum2(int n){if(______________)return 1;else_____________}}

有下列程序: int fun(int x[],int n) { static int sum=0,i: for(i 0;in;i++) sum+=x[i]; return sum; } main { int a[]={1,2,3,4,5),b[]一{6,7,8,9),s=0: s=fun(a,5)+fun(b,4);printf("%d\n",s): } 程序执行后的输出结果是( )。A.45B.50C.60D.55

以下sum函数的功能是计算下列级数之和:请给函数中的各变量正确赋初值。double sum(douLle x,int n){ int i;double a,b,s;【 】for(i=1;i<=n;i++) {a=a*x;b=b*i;s=s+a/b;}return s;}

有以下程序: include using namespace std; int main() {int i=1,sum=0;Loop:if(i 有以下程序:include<iostream>using namespace std;int main(){int i=1,sum=0;Loop:if(i<=20){sum+=i;i++;goto Loop;}cout<<sum<<end1;return 0;}该程序运行后的输出结果是【 】。

下列程序的功能是:找出所有100以内(含100)满足I,I+4,I+10都是素数的整数重(I+10也是在100以内)的个数cnt,以及这些I之和sum。请编制函数countValue()实现程序要求,最后调用函数writeDAT()把结果cnt和sum输出到文件out64.dat中(数值1不是素数)。注意:部分源程序已给出。请勿改动主函数main()和输出数据函数writeDAT()的内容。试题程序:include<stdio.h>int cnt,sum;int isPrime (int number){int i,tag=l;if (number== 1 )return 0;for(i=2;tag i<=number/2;i++)if (number%i==0) tag=0;return tag;}void countValue ( ){}void main ( ){cnt=sum=0;countValue ( );printf ("满足条件的整数的个数=%d\n", cnt);printf ("满足条件的整数的和值=%d\n", sum);writeDAT ( );}writeDAT ( ){FILE *fp;fp=fopen("out64.dat" , "w");fprintf (fp, "%d\n%d\n", cnt, sum);fclose (fp);}

有下列程序: int fun(int x[],int n) { static int sum=0,i; for(i=0;in;i++) sum+=x[i]: return sum; } main( ) {int a[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0; s=fun(a,5)+fun(b,4);printf("%d\n",s); } 程序执行后的输出结果是( )。 、A.45B.50C.60D.55

有以下程序:include int fun(int x[], int n){ static int sum =0,i;for(i=0;i 有以下程序: #include <stdio.h> int fun(int x[], int n) { static int sum =0,i; for(i=0;i<n;i ++ )sum + =x[i]; return sum;{ int a[] ={1,2,3,4,5},b[]={6,7,8,9},s=0; s = fun(a,5) + fun(b,4) ;printf( "%d \n",s);程序执行后的输出结果是( )。A.45B.50C.60D.55

以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。)例如,矩阵为:3 0 0 32 5 7 31 0 4 2则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。add(int m,int n,int arr[]){ int i,j,sum=0;for(i=0;ifor(j=0;jN;J++)sum=sum+ (7) ;for(j=0;jfor(i=1; (8) ;i++)sum=sum+arr[i*n+j];return(sum);}

Given the following code, which method declarations, when inserted at the indicated position, will not cause the program to fail compilation?()   public class Qdd1f {   public long sum(long a, long b) {  return a + b;  }   // insert new method declaration here  }  A、public int sum(int a, int b) { return a + b; }B、public int sum(long a, long b) { return 0; }C、abstract int sum();D、private long sum(long a, long b) { return a + b; }E、public long sum(long a, int b) { return a + b; }

以下程序执行后sum的值是()。 main(){ int i,sum; for(i=1;i6;i++) sum+=i; printf("%d/n",sum); }A、15B、14C、不确定D、0

多选题Given the following code, which method declarations, when inserted at the indicated position, will not cause the program to fail compilation?()   public class Qdd1f {   public long sum(long a, long b) {  return a + b;  }   // insert new method declaration here  }Apublic int sum(int a, int b) { return a + b; }Bpublic int sum(long a, long b) { return 0; }Cabstract int sum();Dprivate long sum(long a, long b) { return a + b; }Epublic long sum(long a, int b) { return a + b; }