⑴ c语言 1到N的乘积
#include<stdio.h>
int main()
{
int i,s = 1;
int N;
scanf("%d", &N);
for(i = 1; i<=N; i++)
s *=i;
printf("%d", s);
return 0;
}
(1)用c语言怎么算连乘扩展阅读:
阶乘定义:
阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语。
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。
亦即n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。
定义的必要性:
由于正整数的阶乘是一种连乘运算,而0与任何实数相乘的结果都是0。所以用正整数阶乘的定义是无法推广或推导出0!=1的。即在连乘意义下无法解释“0!=1”。
给“0!”下定义只是为了相关公式的表述及运算更方便。
参考资料来源:网络-阶乘
⑵ C语言分式连乘问题,求简化+可以输入很大很大的数字
你每次乘以一个新的分式之后就进行约分,使你的分式始终保持最简形式,则就可以不需要大整数了。如果实在要用的话VC6.0也可以用64位的整数啊,不过它是用_int64表示(无需添加任何特殊头文件),输出格式则为printf(“%I64d", ...); 例如
_int64 a = 98765432198765 * 2;
printf("%I64d", a);
不用大整数,程序则可如下做
#include <stdio.h>
int gcd(int x, int y) {
int m, n;
m = ((x > y) ? x : y);
n = ((x <= y) ? x : y);
if(m % n == 0) return n;
else return gcd(n, m % n);
}
void main( )
{
int a, b, c, x, y, n, i;
scanf("%d", &n);
x = 1; y = 1;
for(i = 0; i < n; i++) {
scanf("%d%d", &a, &b);
x *= a;
y *= b;
c = gcd(x, y);
x /= c;
y /= c;
}
if(y != 1) printf("%d/%d\n", x, y);
else printf("%d\n", x);
}
⑶ 用C语言怎么乘啊
直接使用:19*23*149即可。
在c语言中,加减乘除运算符号分别为:+,-,*,/。%表示取余符号,例如a%b即求a除以b后的余数,c语言中括号运算只能使用()。
例如:
#include<stdio.h>
intmain(){
intn;
n=19*23*149;
printf("%d ",n);
return0;
}
/*
输出:
65113
*/
⑷ 动态规划 矩阵连乘 c语言
#include <stdio.h>
#include <limits.h>
#include<stdlib.h>
#define LENGTH 6
void MatrixChainOrder(int p[],int m[][LENGTH],int s[][LENGTH])
{
int n=LENGTH;
int i,j,k,r,t;
for(i=0;i<n;i++)
m[i][i]=0;
for( r=1;r<n;r++)
{
for(i=0;i<n-r;i++)
{
j=i+r;
m[i][j]=m[i][i]+m[i+1][j]+p[i]*p[i+1]*p[j+1];
s[i][j]=i;
for(k=i+1;k<j;k++)
{
t=m[i][k]+m[k+1][j]+p[i]*p[k+1]*p[j+1];
printf("t=%d;,m[%d][%d]=%d\n",t,i,j,m[i][j]);
if(t<m[i][j])
{
m[i][j]=t;
s[i][j]=k;
}
}
}
}
}
int main()
{
int p[] = {30,35,15,5,10,20,25};
int m[LENGTH][LENGTH];
int s[LENGTH][LENGTH];
int i,j,k;
MatrixChainOrder(p,m,s);
printf("最少数乘次数:\n");
for(i = 0;i<LENGTH;i++)
{ for(j = 0 ;j<=i ;j++ )
printf(" ");
for(k = i; k<LENGTH;k++)
printf("%8d",m[i][k]);
printf("\n");
}
printf("断开位置:\n");
for(i = 0;i<LENGTH;i++)
{ for(j = 0 ;j<=i ;j++ )
printf(" ");
for(k = i; k<LENGTH;k++)
printf("%4d",s[i][k]);
printf("\n");
}
system("Pause");
return 0;
}
⑸ C语言连乘编程
这不就是5!么?
main()
{
int i ,s=1;
for(i=1;i<=5;i++)
s*=i;
printf("%d\n,s");
}