c语言输入输出函数写一个求阶乘函数输出结果

C语言模拟试题题库
本试题来自:(2014年C语言模拟试题,)二、程序填空请补充fun()函数,该函数的功能是求m的阶乘。不要改动主函数main()与他函数中的任何内容,仅在fun()函数的横线上填写所需的若干表达式或语句。
注意:部分源程序如下。
#include<stdio.h>
long fun(int m)
return(m*fun (2) );
return (3) ;
printf("8!=%ld\n",fun(8));
正确答案:m>l
(3)1答案解析:有,
您可能感兴趣的试题
填空题:()下列给定程序中,函数fun()的功能是:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.
试题程序:
#include <conio.h>
#include <stdio.h>
int fun( int m)
for (i=m+1; ;i++)
for (k=2;k<i;k++)
/*************found**************/
if (i%k!=0)
/*************found**************/
return(i);
clrscr ();
printf("\nPlease enter n: ");
scanf ("%d", &n);
printf ("%d\n",fun(n));
答案:有,答案解析:有,填空题:()请补充函数fun(),该函数的功能是:把数组aa中元素下标为偶数的元素按从小到大重新保存在原数组中,其它元素位置不变。
例如,输入“33,67,42,58,25,76,85,16,41, 56”,则输出“25,67,33,58,41,76,42,16,85,56”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
# include<stdio. h>
#define N 10
void fun(int aa[])
for (i=0; i<N;i=i+2)
for( 【1】 ; j<N; j=j+2)
if ( 【2】 )
aa [j] =aa [i];
aa [i] =t;
int aa[N]=33, 67,42, 58, 25, 76, 85, 16,41, 56;
clrscr ();
printf("\n*** original list ***\n");
for(i=0; i<N; i++)
printf ("%4d", aa [i] );
printf("\n*** new list ***\n");
for(i=0; i<N; i++)
printf ("%4d", aa [i] );答案:有,答案解析:有,
C语言模拟试题最新试卷
C语言模拟试题热门试卷《C语言及程序设计》实践参考——求阶乘函数 - 迂者-贺利坚的专栏
- 博客频道 - CSDN.NET
返回:&&【项目4-求阶乘函数】(1)请输出满足条件n=a!+b!+c!的所有三位数n,其中,a、b、c分别是n的百、十、个位数。要求用自定义函数实现求阶乘。int
long fac(int n)
//用于求n的阶乘
{ }[参考解答]解法1:#include&stdio.h&
int fact(int);
int main()
int n,a,b,c,
while(n&1000)
//考察n是否符合要求
b=(n/10)%10;
sum=fact(a)+fact(b)+fact(c);
if(sum==n)
printf(&%d &, n);
printf(&\n&);
int fact(int n)
//在设计中,函数的功能尽可能单一,fact只管求阶乘
int i, f=1;
for(i=1; i&=n; ++i)
}解法2:构造循环的着眼点不同,我们还可以写出下面的程序,注意main()函数中的循环。#include&stdio.h&
int fact(int);
int main()
int n,a,b,c,
for(a=1; a&=9; ++a)
for(b=0; b&=9; ++b)
for(c=0; c&=9; ++c)
n=a*100+b*10+c;
sum=fact(a)+fact(b)+fact(c);
if(sum==n)
printf(&%d &, n);
printf(&\n&);
int fact(int n)
//在设计中,函数的功能尽可能单一,fact只管求阶乘
int i, f=1;
for(i=1; i&=n; ++i)
}(2)求组合数:求组合数公式为:编一程序,输入m和n的值,求组合数。要求分别定义求阶乘和求组合的函数,求组合数的函数调用求阶乘的函数来实现求解,在main()函数中,负责输入输出及调用求组合数的函数。[参考解答]#include&stdio.h&
int fact(int);
int main()
int m,n,c;
printf(&求C(m,n),先输入m和n的值:&);
scanf(&%d %d&, &m, &n);
c=fact(m)/(fact(n)*fact(m-n));
printf(&组合数C(m,n)为:%d\n&, c);
printf(&m应该不小于n!\n&);
int fact(int n)
//在设计中,函数的功能尽可能单一,fact只管求阶乘
int i, f=1;
for(i=1;i&=n;++i)
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2228215次
积分:44467
积分:44467
排名:第33名
原创:1491篇
转载:10篇
评论:5383条
难度:初级
类型:实战教学
难度:高级
类型:技术教程
难度:高级
类型:技术教程
文章:453篇
阅读:721122
文章:445篇
阅读:873230
文章:10篇
阅读:16643
迂者自勉:
※能取得一点点突破,就是进步
※并肩学生与不良学风坚决斗争
※甘为草根,仰慕草根之力量
※还原大学和大学学习之本色
∞心系教育,热爱生活
∞我的专栏-
∞给我写信
∞不用QQ-它会谋杀整段的时间
友情链接:周兆熊为IT学子解惑、
(98)(64)(82)(78)(27)(43)(30)(15)(9)(13)(24)(43)(65)(60)(13)(16)(63)(56)(41)(18)(29)(10)(28)(32)(43)(46)(7)(10)(59)(83)(51)(38)(20)(32)(15)(22)(30)(28)(16)(4)(38)(1)C语言以尾递归的形式计算阶乘的一个函数实现
0人收藏此代码,
如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的。当递归调用是整个函数体中最后执行的语句且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归。尾递归函数的特点是在回归过程中不用做任何操作,这个特性很重要,因为大多数现代的编译器会利用这种特点自动生成优化的代码。
当编译器检测到一个函数调用是尾递归的时候,它就覆盖当前的活跃记录而不是在栈中去创建一个新的。编译器可以做到这点,因为递归调用是当前活跃期内最后一条待执行的语句,于是当这个调用返回时栈帧中并没有其他事情可做,因此也就没有保存栈帧的必要了。通过覆盖当前的栈帧而不是在其之上重新添加一个,这样所使用的栈空间就大大缩减了,这使得实际的运行效率会变得更高。因此,只要有可能我们就需要将递归函数写成尾递归的形式。
为了理解尾递归是如何工作的,让我们再次以递归的形式计算阶乘。首先,这可以很容易让我们理解为什么之前所定义的递归不是尾递归。回忆之前对计算n!的定义:在每个活跃期计算n倍的(n-1)!的值,让n=n-1并持续这个过程直到n=1为止。这种定义不是尾递归的,因为每个活跃期的返回值都依赖于用n乘以下一个活跃期的返回值,因此每次调用产生的栈帧将不得不保存在栈上直到下一个子调用的返回值确定。现在让我们考虑以尾递归的形式来定义计算n!的过程。
这种定义还需要接受第二个参数a,除此之外并没有太大区别。a(初始化为1)维护递归层次的深度。这就让我们避免了每次还需要将返回值再乘以n。然而,在每次递归调用中,令a=na并且n=n-1。继续递归调用,直到n=1,这满足结束条件,此时直接返回a即可。
代码实例3-2给出了一个C函数facttail,它接受一个整数n并以尾递归的形式计算n的阶乘。这个函数还接受一个参数a,a的初始值为1。facttail使用a来维护递归层次的深度,除此之外它和fact很相似。读者可以注意一下函数的具体实现和尾递归定义的相似之处。
代码和说明来自百度百科
/* facttail.c */
#include &facttail.h&
/* facttail
int facttail(int n, int a)
/* Compute a factorial in a tail-recursive manner. */
if (n & 0)
else if (n == 0)
else if (n == 1)
return facttail(n - 1, n * a);
//该代码片段来自于: /codes/cpp/8193
相关代码片段:
最新C/C++代码片段
合作网站:C语言上机题库2_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
C语言上机题库2
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:153.51KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢}

我要回帖

更多关于 c语言阶乘求和 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信