1!+2!+3!+...+20!=? c语言编程,用两种循环方式实现。。
似乎是单循环和双循环分别实现,但是好像没有这种说法。总之用两种循环方式实现就行了。。函数嵌套我已经会了,差的是不用函数的嵌套,看能不能做出来。麻烦各位了。...
似乎是单循环和双循环分别实现,但是好像没有这种说法。
总之用两种循环方式实现就行了。。
函数嵌套我已经会了,差的是不用函数的嵌套,看能不能做出来。
麻烦各位了。 展开
总之用两种循环方式实现就行了。。
函数嵌套我已经会了,差的是不用函数的嵌套,看能不能做出来。
麻烦各位了。 展开
4个回答
展开全部
/*******************************
*下面这个程序可能有点复杂,
*但是可以避免出现数据溢出的问题,
*如果楼主刚学C语言,可能看起来
*会有些费解,不过就学到数组,
*然后应该就看得懂了
*******************************/
#include <stdio.h>
#define N 20
/* To initial an int array */
void init(int num[], int n)
{
while(n-->0)
{
num[n] = 0;
}
}
/* multipy function, an array multiply an int variable */
void multiply(int product[], int n)
{
int high;
int i;
high = 2*N-1;
while (product[high] == 0)
high--;
for(i=0; i<=high; i++)
{
product[i] = product[i] * n;
}
for(i=0; i<2*N-1; i++)
{
product[i+1] +=product[i]/10;
product[i] = product[i] % 10;
}
}
void add(int product[], int num[])
{
int i;
for(i=0; i<2*N; i++)
product[i] += num[i];
for(i=0; i<2*N-1; i++)
{
product[i+1] += product[i]/10;
product[i] = product[i] % 10;
}
}
void print(int result[])
{
int high;
high = N-1;
while(result[high] ==0)
high--;
for(; high>=0; high--)
printf("%d", result[high]);
}
void main(void)
{
int product[2*N];
int result[2*N];
int i,j;
init(result,2*N);
for(i=N; i>0; i--)
{
init(product, 2*N);
product[0] = i;
for(j=i-1; j>0; j--)
{
multiply(product, j);
}
add(result, product);
/* The below two lines are not necessary,
* just print each product,
* for debug if need. */
print(product);
printf("\n");
}
print(result);
printf("\n");
}
/*附程序运行结果:
2432902008176640000
121645100408832000
6402373705728000
355687428096000
20922789888000
1307674368000
87178291200
6227020800
479001600
39916800
3628800
362880
40320
5040
720
120
24
6
2
1
2561327494111820313
从上往下分别是20!至1!,
最后是上面这些阶乘的和,
也就是题目要求的结果。
*/
*下面这个程序可能有点复杂,
*但是可以避免出现数据溢出的问题,
*如果楼主刚学C语言,可能看起来
*会有些费解,不过就学到数组,
*然后应该就看得懂了
*******************************/
#include <stdio.h>
#define N 20
/* To initial an int array */
void init(int num[], int n)
{
while(n-->0)
{
num[n] = 0;
}
}
/* multipy function, an array multiply an int variable */
void multiply(int product[], int n)
{
int high;
int i;
high = 2*N-1;
while (product[high] == 0)
high--;
for(i=0; i<=high; i++)
{
product[i] = product[i] * n;
}
for(i=0; i<2*N-1; i++)
{
product[i+1] +=product[i]/10;
product[i] = product[i] % 10;
}
}
void add(int product[], int num[])
{
int i;
for(i=0; i<2*N; i++)
product[i] += num[i];
for(i=0; i<2*N-1; i++)
{
product[i+1] += product[i]/10;
product[i] = product[i] % 10;
}
}
void print(int result[])
{
int high;
high = N-1;
while(result[high] ==0)
high--;
for(; high>=0; high--)
printf("%d", result[high]);
}
void main(void)
{
int product[2*N];
int result[2*N];
int i,j;
init(result,2*N);
for(i=N; i>0; i--)
{
init(product, 2*N);
product[0] = i;
for(j=i-1; j>0; j--)
{
multiply(product, j);
}
add(result, product);
/* The below two lines are not necessary,
* just print each product,
* for debug if need. */
print(product);
printf("\n");
}
print(result);
printf("\n");
}
/*附程序运行结果:
2432902008176640000
121645100408832000
6402373705728000
355687428096000
20922789888000
1307674368000
87178291200
6227020800
479001600
39916800
3628800
362880
40320
5040
720
120
24
6
2
1
2561327494111820313
从上往下分别是20!至1!,
最后是上面这些阶乘的和,
也就是题目要求的结果。
*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
懒的写详细些,就直接写伪代码了
先定义两个函数
A(n){
long k=1;
for(i=1,i<=n,i++){
k=k*i;
}
return k;
}
B(n){
for(i=1,i<=n,i++){
A(n)=A(n)+1;}
return A(n);
}
---------------------------------
然后进行调用:
main(){
long a=B(20);
}
________________________________
这样就行了
先定义两个函数
A(n){
long k=1;
for(i=1,i<=n,i++){
k=k*i;
}
return k;
}
B(n){
for(i=1,i<=n,i++){
A(n)=A(n)+1;}
return A(n);
}
---------------------------------
然后进行调用:
main(){
long a=B(20);
}
________________________________
这样就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include "stdio.h"
main()
{
long int s=1,t;
int i,j;
for(i=2;i<=20;i++)
{
j=1;t=1;while(j<=i){t=t*j;j++;}
s+=t;
}
printf("s=%ld\n",s);
}
main()
{
long int s=1,t;
int i,j;
for(i=2;i<=20;i++)
{
j=1;t=1;while(j<=i){t=t*j;j++;}
s+=t;
}
printf("s=%ld\n",s);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
介乘用 FOR,基本的,书上都有,不会,再找我,我给你发
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询