⑴ c语言级数求和
#include"stdio.h"
intmain()
{
intsum=0;
inti,mark=1,item;
for(i=1;;i++)
{
item=mark*i*(i+1);
sum+=item;
mark=-mark;
if(sum>999&&i%2==1)
break;
}
printf("i=%d,sum=%d ",i,sum);//i表示哪一项,sum表示此时各项之和
}
⑵ c语言20个阶乘相加
{for(p=1;p<=i;p++)q*=p;sum+=q;}
这个句子有问题 ;自己好好想想吧;别什么都靠网络;
⑶ C语言题:求1的阶层2的阶层3的阶层4的阶层5的阶层之和,用一个循环结构完成
#include<stdio.h>
intmain()
{
inti,k=1,s=0;
for(i=1;i<=5;i++)
{
k*=i;
s+=k;
}
printf("%d",s);
return0;
}
运行结果截图:
⑷ c语言求阶乘累加和
题目中数据很大
于是我们有了高精度算法
思路是什么呢:
一个数组里面每一位存的是十进制数三位(也可以只存一位,但是比较慢)
也可以理解成一千进制
这样能模拟大整数的乘法、加法
#include<stdio.h>
#include<string.h>
#definemax(a,b)(a>b?a:b)
intn;
FILE*input,*output;
structbigint
{
intlen;
intnum[1100];
}fac,sum;
voidmul(intvalue){//高精度乘单精度
inti;
for(i=1;i<=fac.len;i++)
fac.num[i]=fac.num[i]*value;//每个数位乘上数
for(i=1;i<=fac.len;i++)
if(fac.num[i]>=1000){//逢千进一
fac.num[i+1]+=fac.num[i]/1000;fac.num[i]%=1000;
}
if(fac.num[fac.len+1])fac.len++;//位数可能会增加,而且最多增加1
}
voidadd()//给sum加上fac的值
{
inti;
//由于此时fac永远大于sum所以不用判断sum的长度
for(i=1;i<=fac.len;i++)
sum.num[i]+=fac.num[i];//每一位加上fac的值
for(i=1;i<=fac.len;i++)
if(sum.num[i]>=1000){//逢千进一
sum.num[i+1]++;sum.num[i]-=1000;//因为加法运算不可能往前进2
}
sum.len=fac.len;
if(sum.num[sum.len+1])sum.len++;
}
voidout()//输出
{
inti;
for(i=sum.len;i>=1;i--)
{
if(i<sum.len)//压位高精度一定要判断位数
{//因为如果不是第一位,其他要补0,因为如果这个数是1001,就会变成11
if(sum.num[i]<10)fprintf(output,"00");
elseif(sum.num[i]<100)fprintf(output,"0");
}
fprintf(output,"%d",sum.num[i]);
}
fputc(' ',output);
}
intmain(){
input=fopen("factor.in","r");
output=fopen("factor.out","w");
memset(fac.num,0,sizeoffac.num);
memset(sum.num,0,sizeofsum.num);
fscanf(input,"%d",&n);
inti;
fac.len=sum.len=1;//初始赋成1
fac.num[1]=sum.num[1]=1;
for(i=2;i<=n;i++)
{
mul(i);
add();
}
out();
fclose(input);fclose(output);
return0;
}
⑸ c语言阶乘求和
#include<stdio.h>
voidmain(){
inti,n,k=1,s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{k*=i;s+=k;}
printf("%d",s);
}
//运行示例:
⑹ C语言字符相加怎么算
用数组来算,把这两个人数分别放到两个数组中,然后让数组对应相加减。
⑺ 阶乘相加的问题C语言
main()
{
int i,sum=0;
for(i=1;i<=4;i++)
{
int temp=1;
for(int j=i;j>=1;j--)
{
temp=temp*j;
}
sum=sum+temp;
}
printf("%d",sum);
}
还可以用递归来实现的,方法很多种!具体自己找书来看吧,这些都是基础!!
⑻ 用C语言求1~20的阶乘之和!
/**
**程序描述:求求1~20的阶乘之和。
**算法思路:先求出每一项的阶乘值,然后将所有项的阶乘值相加。
*/
#include<stdio.h>
#defineN20
typedefunsignedlonglonguInt64;//自定义类型
//求出每一项阶乘值的函数
uInt64fact(intn)
{
inti;
uInt64s;
for(i=s=1;i<=n;i++)
s*=i;//从1开始循环累加相乘
returns;
}
intmain()
{
uInt64s;
inti;
for(i=1,s=0;i<=N;i++)
s+=fact(i);//从第1项开始循环累加每一项的阶乘值
printf("1!+2!+3!+……+20!=%llu ",s);
return0;
}
⑼ 怎样用C语言计算1到10的阶层的和
C语言中实现阶乘的计算可以采用递归或者循环,通常循环用的比较多,循环可以采用while循环和for循环等。
下面以for循环为例实现1-10的阶乘的和的计算,代码如下:
int i,sum=1,S=0;
for(i=1;i<=10;i++)
{
sum=sum*i;
S=S+sum;
}
上述的变量S在运行结束后的结果值即为1-10的阶乘的和。
(9)c语言阶级相加扩展阅读:
数学函数
所在函数库为math.h、stdio.h、string.h、float.h
int abs(int i) 返回整型参数i的绝对值
double atof(char *nptr) 将字符串nptr转换成浮点数并返回这个浮点数
double atoi(char *nptr) 将字符串nptr转换成整数并返回这个整数
double atol(char *nptr) 将字符串nptr转换成长整数并返回这个整数
char *ecvt(double value,int ndigit,int *decpt,int *sign),将浮点数value转换成字符串并返回该字符串
⑽ C语言数组相加
数组的下标是从0开始的,并非从1
因此假设定义数组int a[3],那么有效的数组元素为a[0] a[1] a[2]
楼组的代码里面的数组从1开始使用,输入3*3的数组会导致越界,踩内存发生错误
voidfun(intarr[M][N])
{
inti,j;
for(i=1;i<=M;i++)//应该是for(i=0;i<M;i++)
for(j=1;j<=N;j++)
scanf("%d",&arr[i][j]);
}
其他也按照这个修改就可以了