C语言程序题: 1、编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现
#include "stdio.h"
int fact1(int n)
{
if(n==1||n==0) return 1;
else return n*fact1(n-1);
}
int fact2(int n)
{
int i,t=1;
for(i=1;i<=n;i++)
t*=i;
return t;
}
void main()
{
int n;
scanf("%d",&n);
printf("fact1(n)=%d
",fact1(n));
printf("fact2(n)=%d
",fact2(n));
}
#define RECURSION
#include"stdio.h"
#ifdef RECURSION
long int fact(int n)
{
long int y;
if(n==1)
y=1;
else
y=n*fact(n-1);
return y;
}
#else
long int fact(int n)
{
int i;
long int y=0;
for(i=1;i<=n;i++)
{
y=y*i;
}
return y;
}
#endif
main()
{
int i;
long int y=0;
for(i=1;i<=10;i++)
{
y=y+fact(i);
}
printf("10!=%ld
",y);
getch();
}
注意如果将#define RECURSION 删除,则编译的是非递归fact()。。不信可以再两个函数中加个输出语句。。。
#include "stdio.h"
//#define RECURSION 1
#ifdef RECURSION
long fact(int n)
{
if(n<1) return 1;
return n*fact(n-1);
}
#else
long fact(int n)
{
long t=1;
for(int i=2;i<=n;i++)
t*=i;
return t;
}
#endif
main()
{
long s=0;
for(int i=1;i<=10;i++)
s+=fact(i);
printf("%ld\n",s);
}
2。
#include "stdio.h"
bool prime(int n)
{
if(n==1) return false;
for(int i=2;i<=n/2;i++)
if(n%i==0) return false;
return true;
}
main()
{
int cnt=0;
int i=3;
while(cnt<10)
{
if(prime(i) && prime(i+2))
{
printf("(%d,%d)\n",i,i+2);
cnt++;
}
i+=2;
}
}
3。
非递归
#include "stdio.h"
void main()
{
int s=0,total=0;
int day=0;
while(s<100)
{
if(day%2==0)
{
s+=3;
total+=3;
}
else
{
s-=2;
total+=2;
}
day++;
}
if(s>100) total-=(s-100);
printf("total %d days,climb %d metres\n",day,total);
}
递归
#include "stdio.h"
struct node{
int day;
int total;
};
struct node f(int dest,int tag)
{
if(tag==0)
{
if(dest<=3)
{
struct node temp;
temp.day=1;
temp.total=dest;
return temp;
}
else
{
struct node temp,temp1;
temp1=f(dest-3,1);
temp.day=temp1.day+1;
temp.total=temp1.total+3;
return temp;
}
}
else
{
struct node temp,temp1;
temp1=f(dest+2,0);
temp.day=temp1.day+1;
temp.total=temp1.total+2;
return temp;
}
}
void main()
{
struct node a=f(100,0);
printf("total %d days,climb %d metres\n",a.day,a.total);
}
汗,教科书上都有,自己看去
如何用C语言编写一个计算n!
你可以使用循环结构来编写一个计算阶乘的函数。以下是一个用C语言编写的简单示例:include <stdio.h> \/\/ 函数声明 int factorial(int n);int main() { int n;printf("请输入一个整数:");scanf("%d", &n);\/\/ 调用函数计算阶乘 int result = factorial(n);printf("%d的阶乘是:%d\\n", ...
用C语言编程:编写一个函数,求n!
include <stdio.h> long fac(int n){ if (n==1) return 1;else return n*fac(n-1);} main(){ int n;printf("输入n: ");scanf("%d", &n);printf("%ld\\n", fac(n));}
C语言的题1编写一个程序求满足如下条件的最大的n.条件是1*1+2*2+...
for (n=1;;n++){ if(( mysum=sum(n))>1000){ printf("n =%d ",n-1);printf("mysum =%d\\n",sum(n-1));break;} } } int sum (int n){ int sum,m;sum=0;for (m=1;m<=n;m++){ sum=(sum+m*m);} return sum;} 我也是刚学c语言 ,在linux下用gcc编译成功,不...
用C语言编程:编写一个函数,求n!
include<stdio.h> double hanshu(int A);int main(){ int inputN;scanf("%d",&inputN);double re=0.0;re = hanshu(inputN);printf("(%d)!=%f",inputN,re);return 0;} double hanshu(int A){ double re=1.0;;int i;for(i = 1;i<=A;i++){ re *=i;} return re;} ...
汇编语言编写完整的程序求N!,可以自由输入n的值,输出为十进制数_百度知...
2013-10-07 如何编写一个程序,输入数据数n,然后输入n个数据,输出这n个... 2010-12-01 汇编语言边一个程序从键盘上输入N个十进制数,(数小于等于65... 8 2017-09-05 C语言编写程序题:求n!的递归函数,要求用MAIN()函数输... 1 2018-01-21 用汇编语言编写程序完成:要求从键盘上输入N个带符号数的...
C语言,编写程序:计算n!=1x2x3x4x5x……xn,并输出结果?
int n;int i;int count=1;scanf("%d",&n);for(i=1;i<=n;i++){ count=count*i;} printf("%d",count);
用C语言编写程序,任意输入一个正数n,求n!的值。
include<stdio.h> int fun(int n);int main(){ int n,m;printf("请输入数!\\n");scanf("%d",&n);m=fun(n);printf("%d\\n",m);} int fun(int n){ if(n==0||n==1)return 1;else return n*fun(n-1);}
c语言中求1! ... n!的程序
include<stdio.h>int fun(int n){ int i, result = 1; for(i = 1;i <= n;++ i) result *= i; return result;} int main(){ int n; while(~scanf("%d",&n)){ printf("%d\\n",fun(n)); } return 0;} ...
请问用标准的C语言简单编写一道求n!阶乘的和的程序怎么写?
为了编写一个C语言程序,用于计算n的阶乘之和,首先我们需要了解几个关键概念。阶乘是一个正整数的所有小于等于该数的正整数的乘积,用n!表示。例如,5! = 5 * 4 * 3 * 2 * 1 = 120。程序的编写通常包括以下几个步骤:1. **输入参数**:我们需要从用户那里获取一个整数n,表示我们想要计算...
用C语言编写n!
方法利用循环解决问题,设循环变量为 i,初值为 1,i 从 1 变化到 n;依次让 i 与 sum 相乘,并将乘积赋给 sum。① 定义变量 sum,并赋初值 1。② i 自增 1。③ 直到 i 超过 n。程序代码如下 include <stdio.h>int main(){int i,n;double sum=1;scanf("%d",&n);for(i=1;i<=...