请问 c语言编程 1!+4!+7!+10!+13!怎么做 如何用C语言求1+4+7+10+13+...+100的和,急...

c\u8bed\u8a00\u7f16\u7a0b 1!+4!+7!+10!+13!

/* \u697c\u4e0a\u7684\u6240\u8c13\u88ab\u91c7\u7eb3\u7684\u7b54\u6848\uff0c\u662f\u9519\u8bef\u7684\u3002 * 13\u7684\u9636\u4e58,\u4f7f\u7528long,unsigned long\u90fd\u8d85\u754c\uff0c\u5fc5\u987b\u8003\u8651\u4f7f\u7528\u5927\u6570\u9636\u4e58\u7684\u65b9\u6cd5\u3002 */#include #define LEN 20 long func(int n);void fun(int n);int num[LEN] = {0};void add(long n, int src[], int dest[]);int main() {long total = 0;int array[20] = {0}; total = func(1) + func(4) + func(7) + func(10);printf("1!+4!+7!+10!=%ld\n", total);fun(13); /* \u8d85\u9650,\u4f7f\u7528\u5927\u6570\u9636\u4e58\u51fd\u6570 */ add(total, num, array); /* \u6c42\u6700\u7ec8\u503c */ return 0;}long func(int n){ /* \u9636\u4e58\u8ba1\u7b97 */int i = 1;unsigned long sum = 1;for (i = 1; i LEN)break;} for (int i = 1; i 9){ /* \u5904\u7406\u8fdb\u4f4d */dest[i] = iTmp % 10;dest[i+1] += 1;}else{dest[i] = iTmp;}}for (int i = iIndex+1; i 0; i--){if (dest[i] == 0 && flag == 0)continue;else {flag = 1;printf("%d",dest[i]);}}printf("\n");}void fun(int n){ /* \u5927\u6570\u9636\u4e58\u8ba1\u7b97 */int tmp = 0;if (n == 0 || n == 1) { num[1] = 1; } else{num[1] = 1;for(int i = 2; i 10){tmp = num[k];num[k] = num[k] % 10;num[k+1] += tmp /10;}}}}printf("%d!=", n);int flag = 0;for(int i = LEN; i>0; i--){if (num[i] == 0 && flag == 0){ /* \u4e0d\u6253\u5370\u6570\u7ec4\u4e2d\u65e0\u6548\u7684\u96f6 */continue;}else {flag = 1;printf("%d",num[i]);}}printf("\n"); }

#include

void main()
{
int sum = 0;
int setp = 3;
int index = 1;

for (index = 1; index < 100; index = index + 3)
{
sum = sum + index;
}

printf("sum = %d\n", sum);
}

\u5df2\u7ecf\u8c03\u8bd5\u8fc7\u4e86

其实这个程序,用一个单重的循环就可以实现的:

#include <stdio.h>

int main()

{ long long i,t=1,s=1;

  for(i=4; i<14; i+=3)

  { t*=i*(i-1)*(i-2);

    s+=t;

  }

  printf("%lld
",s);

  return 0;

}



/* 因为13的阶乘,使用函数func()计算,超界,得到的数据是错误的,
 * 所以,需要使用大数阶乘函数。
 *  同理,楼上的代码,计算13的阶乘,也是错误的。
 */
#include <stdio.h>
#define LEN 20 
long func(int n);
void fun(int n);
int num[LEN] = {0};
void add(long n, int src[], int dest[]);

int main() 
{
long total = 0;
int array[20] = {0}; 
total = func(1) + func(4) + func(7) + func(10);
printf("1!+4!+7!+10!=%ld
", total);
fun(13);  /* 超限,使用大数阶乘函数 */ 

add(total, num, array); /* 求最终值 */ 
return 0;
}

long func(int n)
{ /* 小于等于10的数阶乘计算 */
int i = 1;
unsigned long sum = 1;
for (i = 1; i <=n; i++)
{
sum *= i;

// printf("%d的阶乘为:%ld
", n, sum);
return sum;
}

void fun(int n)
{ /* 大数阶乘计算 */
int tmp = 0;
if (n == 0 || n == 1)   
  { 
  num[1] = 1;
    }
    else
{
num[1] = 1;
for(int i = 2; i<=n; i++)
{
for(int j = 1; j<sizeof(num)/sizeof(int); j++)
{
num[j] *= i;
}
for(int k = 1; k<sizeof(num)/sizeof(int); k++)
{
if(num[k] > 10)
{
tmp = num[k];
num[k]   =  num[k] % 10;
num[k+1] += tmp /10;
}
}
}
}
printf("%d!=", n);
int flag = 0;
for(int i = LEN; i>0; i--)
{
if (num[i] == 0 && flag == 0)
{ /* 不打印数组中无效的零 */
continue;
}
else 
{
flag = 1;
printf("%d",num[i]);
}
}
printf("
"); 
}

void add(long n, int src[], int dest[])
{ /* 将n和src[]逐位相加,存入dest[] */
int tmp[20] = {0};
int iNum = n;
int iIndex = 1;
while (1)
{
tmp[iIndex] = iNum % 10;
iNum /= 10; 
iIndex++;
if (iNum == 0 || iIndex > LEN)
break;


for (int i = 1; i <= iIndex; i++)
{
int iTmp = src[i] + tmp[i] + dest[i];
if (iTmp > 9)
{ /* 处理进位 */
dest[i] = iTmp % 10;
dest[i+1] += 1;
}
else
{
dest[i] = iTmp;
}
}
for (int i = iIndex+1; i < LEN; i++)
dest[i] += src[i]; 

printf("++++++++++++++++
和为:");
int flag = 0;
for(int i = LEN-1; i>0; i--)
{
if (dest[i] == 0 && flag == 0)
continue;
else {
flag = 1;
printf("%d",dest[i]);
}
}
printf("
");
}




#include <stdio.h>
unsigned long fac(unsigned long n);
int main(void)
{
    unsigned long sum,i;
    for(i=1,sum=0;i<14;i+=3)
    {
        sum+=fac(i);
    }
    printf("%lu
",sum);
    return 0;
}
unsigned long fac(unsigned long n)
{
    if(n)
        return n*fac(n-1);
    return 1;
}


扩展阅读:c++编程 ... 编程入门先学什么 ... 少儿编程 ... 学习编程python ... c语言简单程序编写例子 ... 写一个最简单的编程 ... c语言求1+2+3+n的和 ... c语言编程1到n的阶乘 ... 如何编辑c语言1+1 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网