请问 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 ...