C语言中,写函数,求一个整数的阶乘
#include int fun(int n){if(n==1) return 1;return fun(n-1)*n;} int main(){printf("%d
",fun(5)-fun(2)+fun(4));}/*运行结果:142*/
伸手党 无处不在啊!
请看
截图
如图
可以求到20的阶乘,源码请看网页端。如图,如有疑问或不明白请追问哦!
源代码:
#include <stdio.h>
typedef __int64 LONG; //自定义64位长整型,用 LONG 表示
typedef char BYTE; //自定义8位短整型,用 BYTE 表示
LONG factorial(BYTE n){ //求n的阶乘,由于阶乘增长非常快,所以能求的n有限。除非用自定义大数据类型
LONG fact=1,last;
if(n<0)return -1; //负数的阶乘不能这么算,返回-1表示错误
for(; n>1 ;n--){
last=fact; //记录上次求得的结果
fact *= n;
if(fact <= 0){ //正常来说fact必>0,否则一定发生了溢出。若此阶乘会发生溢出,也一定会有fact<=0
//printf("fact=%I64dn=%d
",fact,n);
return -1; //如果值溢出则返回-1
}
}
return fact;
}
int main()
{
BYTE n=0,count=0;
LONG fact=1;
for(; n< 0x7f ; n++){ //从0到 BYTE 型最大数
count++;
fact=factorial(n);
if(fact!=-1) //仅当未溢出时显示
printf("fact(%d)=%I64d
",n,fact);
}
printf("count=%d
",count); //表示溢出
}
紧急求救用c语言编写:1、编写函数求两个数的较大值,并在主函数中调用...
\\n");\/\/在屏幕显式“最后排序为:”并换行 for(i=0;i<N;i++) \/\/同开始的for循环类似 { \/\/开始循环输出 printf("%d",grade[i]); \/\/只是这里要逐个输出数组中的五个数值 } \/\/结束循环输出 printf("\\n"); \/\/输出换行到屏幕,看不到什么效果,可删掉 } \/\/结束main()函数 ...
C语言写函数fun求一个整数的逆序数,在main中输入两个整数,求其逆序数之...
sum=fun(x)+fun(y); %因为fun()函数有返回值,这里相当于将两个返回值相加 printf("sum=%d\\n",sum);} int fun(int num){ int a,b; %定义 a,b变量 a=0;while (num!=0) %判断循环的结束条件 此处num以两位数为例 { b=num%10; %对10取余,即求出num的个位数赋值...
用c语言函数求三个数中最小值
include<stdio.h>#define N 5int fun(int a,int b,int c){\/\/求最小值函数int min;min=a<b?a:b;min=min<c?min:c;return min;}int main(){int a,b,c,min;scanf("%d%d%d",&a,&b,&c);min=fun(a,b,c);printf("最小数为:%d",min); return 0;}\/*5 4 6最大数为:...
快考试了,帮忙写个程序:C语言,写一个函数,求字符串中字母的个数 字符串...
include <stdio.h>#include <string.h>#define N 100void main(){ int i,j,count=0; char s1[N],s2[N]; gets(s1); j=strlen(s1); for(i=0;i<j;i++) { s2[j-i-1]=s1[i]; \/\/逆序 if(('a'<=s1[i]&&s1[i]<='z')||('A'<=s1[i]&&s1[i]<='Z')) \/\/...
用C语言中,如何用调用函数编写求一元二次方程的根
int GetRoot(float a, float b, float c ,double* root){ double delta, deltasqrt ;delta = b* b - 4*a*c ;if(delta<0)return 0 ;deltasqrt = sqrt(delta) ;if (a!=0.0){ root[0] = (deltasqrt - b)\/(2.0*a) ;root[1] = (-deltasqrt - b)\/(2.0*a) ;} if ...
用c语言函数求两个整数中的最大数
include<stdio.h>#define N 5int fun(int a,int b){return a>b?a:b; }int main(){int a,b,max;scanf("%d%d",&a,&b);max=fun(a,b);printf("最大数为:%d",max); return 0;}\/*5 6最大数为:6*\/
用c语言编程如何实现求和的程序代码?
1、首先把头文件,main函数写好#include<stdio.h> main(),如下图所示。2、之后需要定义几个变量,一个存放和,一个从1开始到100,如下图所示。3、之后书写for循环,首先给i赋值为1,其中如果要求200以内和把数字100改为200即可。4、然后写for循环里面的内容,sum=sum+i;把每个i的值加到sum...
c语言 写一个函数求两个双精度数中较小的一个数,在main()中实现输入...
include <stdio.h>double GetMin(double a,double b){ return a
C语言编程:键盘输入10个数,用函数实现计算数据中最大值、最小值,并返 ...
在主函数中声明一个具有10个int型元素的数组存放键盘输入的数据,声明变量ml记录最大值位置、ms记录最小值位置。自定义一个函数void Input_Max_Min(int *p,int *pl,int *ps)来完成题设要求,其中p是数组首指针,pl是最大值位置(下标)变量指针,ps是最小值位置(下标)变量指针。在主函数中输出结果...
c语言程序设计 定义一个函数求两个数的最大值,在住函数中调用该函数求...
参考程序如下:(我自己编写的,可能有不足之处,望见谅)include<stdio.h> int max(int x,int y){ int t;t=x>y? x:y;return t;} void main(){ int a,b,c,m;printf("please input three numbers:\\n");scanf("%d,%d,%d",&a,&b,&c);m=max(max(a,b),c);printf("the ...
莘琴吉祥: 程序如下: #include "stdioh"int main(void){int i;int acc=1;//用于存放阶乘printf ("请输入一个整数i=");scanf ("%d",&i);for(;i>0;i--){acc*=i;}printf("该数的阶乘为acc=%d ",acc);return 0;}运用for循环来求阶乘. 运行结果: 如求十的C语言:编写一个程序,要求输入一个整数,输出其阶乘
瑞安市19843262677: c语言求阶乘的函数 - ?
莘琴吉祥: 阶乘: 阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语. 一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且有0的阶乘为1.自然数n的阶乘写作n!.1808年,基斯顿...
瑞安市19843262677: 用c语言写一个函数,求一个数的阶乘.(这个数作为实参传入函数中) - ?
莘琴吉祥: int func(int n) {int res = 1;for (int i = 2; i <= n; i++)res *= i;return res; }
瑞安市19843262677: C语言写一个求阶乘函数输出结果 - ?
莘琴吉祥: 1 设计阶乘函数.按照数学定义,对于n的阶乘,如果n为0,则返回1. 否则返回1*2*3*...*n的值.用循环实现. 2 在主函数中输入要求阶乘的值. 3 调用函数计算阶乘. 4 输出结果. 代码: int fac(int n) {int r = 1;int i;for(i = 2; i <=n; i ++)r*=i;return r; } int main() {int n,r;scanf("%d",&n);r = fac(n);printf("%d!=%d\n",n,r); }
瑞安市19843262677: 求一个数的阶乘用c语言表示 - ?
莘琴吉祥: long fac(int n) {long i,x=1;for(i=2;i<=n;i++)x*=i; return x; } main() {int n;scanf("%d",&n);if(n>=0)printf("%ld\n",fac(n)); }
瑞安市19843262677: C语言求阶乘 - ?
莘琴吉祥: 思路很简单: 乘法中判断0个数:首先判断要乘的书数字中有多少10.然后出现一个5就找一个偶数配对,最后统计就行了、、、 阶乘就更简单,直接判断整数的大小, 例如:整数是n 那么输出就是n/5..就行了
瑞安市19843262677: 怎么用C语言编写100以内任意整数的阶乘啊? - ?
莘琴吉祥: int n; int r[600]={0}; int count(n) { int i; for(i=0;i<600;i++) r[i]*=n; for(i=599;i>0;i--) { r[i-1]=r[i-1]+r[i]/10; r[i]=r[i]%10; } }int main() { int i; int reach=0; r[599]=1; scanf("%d",&n); for(i=1;i<=n;i++) count(i); for(i=0;i<600;i++) {if(r[i]) reach=1; if(r[i]||reach) ...
瑞安市19843262677: 用c 语言用函数调用的方法求n的阶乘 - ?
莘琴吉祥: #include<stdio.h> long fac(int n) {long f=1,i;for(i=2;i<=n;i++)f*=i;return f; } int main() { int n; scanf("%d",&n); printf("%d!=%ld\n",n,fac(n)); return 0; }
瑞安市19843262677: C语言编程:编写求指定整数值的阶乘值并将其返回的函数.?
莘琴吉祥: //直接从Main()开始写 main() {int num;scanf("%d",&num);printf(result(num)); } //这里是递归方法 public static int result(int n) {int i;if(n>1){i = n * result( n - 1 );return i;}else{return 1;} }
瑞安市19843262677: 编程c语言求任意一个正整数的阶乘 - ?
莘琴吉祥: intn;intr[600]=;intcount(n){inti;for(i=0;i0;i--){r[i-1]=r[i-1]+r[i]/10;r[i]=r[i]%10;}}intmain(){inti;intreach=0;r[599]=1;scanf("%d",&n);for(i=1;i