怎样用C语言编程实现从1乘到100的结果?
sum 应定义为unsigned long 型,且i也不能这么大(大致最大12吧),否则sum放不下的,最后输出时用%ld格式。
数据超限了.
如果你用int型数据来保存1乘到100的数.
int型最大也就2000000000左右.而1乘到100
要比10^100还大.
当数据超限时,就回随即输出一个数据.
#define MAXN 1000
int a[MAXN],b[MAXN];
void pwrite(int *a,int k,int c)//将计算的结果数组[a]按每一位输出,k为所计算数字,i为计算所得位数,计算后所得结果是按从最后一位到第一位,故应该倒序输出
{
int i;
printf("%4d != ",k);
for(i= c-1;i>=0;i--)
{
printf("%d",a[i]);
}
printf("\n\n");
}
void pnext(int k,int *cp);
int main(void)
{
int n,c,k;
printf("Enter the number n(n<=100):");
scanf("%d",&n);
a[0]=1;
c=1; //初始化长度为1,随计算位数增加
/*pwrite(a,1,c);*/
for(k=2;k<=n;k++)
{
pnext(k,&c); //此处计算结果,计算1*2*3*...*n
//pwrite(a,k,c);
if (k==n)
{
pwrite(a,k,c);//计算到n时输出
}
}
system("pause");
return 0;
}
void pnext(int k,int *cp) //cp此处代表计算的位数,n代表将要乘的数字
{
int i, j;
int temp = *cp;
for ( i=0; i<temp; i++ )
{
b[i] = a[i]; //利用b[i]作为暂时记录的数组
}
for ( i=1; i<k; i++ )// add for k-1 times
{
for ( j=0; j<temp; j++ )
{
a[j] += b[j]; //每一位对齐相加,
if ( a[j] > 9 )
{
a[j+1] += a[j]/10;
a[j] = a[j]%10; //如果大于9则进位
if ( j == *cp-1 )// add *cp for only once
{
(*cp)++; //如果是最高位,则自加即可,不必进位
}
}
}
}
while ( a[*cp-1] > 9 )
{
a[*cp] += a[*cp-1]/10;
a[*cp-1] = a[*cp-1]%10;
(*cp)++; //对最高位进行处理,此时n值已变,故应自加
}
}
#include "stdio.h"
void main()
{int data[200];
int i,j,k;
int n;
int digit;
for(i=0;i<200;i++)
data[i]=0;/*数组初始化全都置0*/
data[1]=1;
digit=1;
printf("input the number n= \n");
scanf("%d",&n);/*你要是求100!就输入100*/
for(i=0;i<n+1;i++)
{
for(j=1;j<digit+1;j++)
{
if(i==0)data[j]=1;
else data[j]*=i;
}
for(j=1;j<digit+1;j++)
{
if(data[digit]>=10)/*若放在后面,就不是判断最后一位了.只有先判断才是最后一位,否则出错*/
digit++;
if(data[j]>=10)
{data[j+1]+=data[j]/10;
data[j]%=10;
}
}
printf("\n%d!= ",i);
for(k=digit;k>0;k--)
printf("%d",data[k]);
}
}
运行结果:
100!=93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
#include
"stdio.h"
void
main()
{int
data[200];<br>
int
i,j,k;<br>
int
n;<br>
int
digit;<br>
for(i=0;i<200;i++)<br>
data[i]=0;/*数组初始化全都置0*/<br>
data[1]=1;<br>
digit=1;<br>
printf("input
the
number
n=
");<br>
scanf("%d",&n);/*你要是求100!就输入100*/<br>
for(i=0;i<n+1;i++)<br>
{<br>
for(j=1;j<digit+1;j++)<br>
{<br>
if(i==0)data[j]=1;<br>
else
data[j]*=i;<br>
}
for(j=1;j<digit+1;j++)
{
if(data[digit]>=10)/*若放在后面,就不是判断最后一位了.只有先判断才是最后一位,否则出错*/
digit++;
if(data[j]>=10)
{data[j+1]+=data[j]/10;<br>
data[j]%=10;<br>
}
}
printf("
%d!=
",i);
for(k=digit;k>0;k--)
printf("%d",data[k]);
}
}
运行结果:
100!=93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
#include
"stdio.h"
void
main()
{int
data[200];
int
i,j,k;
int
n;
int
digit;
for(i=0;i<200;i++)
data[i]=0;/*数组初始化全都置0*/
data[1]=1;
digit=1;
printf("input
the
number
n=
\n");
scanf("%d",&n);/*你要是求100!就输入100*/
for(i=0;i<n+1;i++)
{
for(j=1;j<digit+1;j++)
{
if(i==0)data[j]=1;
else
data[j]*=i;
}
for(j=1;j<digit+1;j++)
{
if(data[digit]>=10)/*若放在后面,就不是判断最后一位了.只有先判断才是最后一位,否则出错*/
digit++;
if(data[j]>=10)
{data[j+1]+=data[j]/10;
data[j]%=10;
}
}
printf("\n%d!=
",i);
for(k=digit;k>0;k--)
printf("%d",data[k]);
}
}
运行结果:
100!=93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
#include
"stdio.h"
void
main()
{int
data[200];
int
i,j,k;
int
n;
int
digit;
for(i=0;i<200;i++)
data[i]=0;/*数组初始化全都置0*/
data[1]=1;
digit=1;
printf("input
the
number
n=
\n");
scanf("%d",&n);/*你要是求100!就输入100*/
for(i=0;i<n+1;i++)
{
for(j=1;j<digit+1;j++)
{
if(i==0)data[j]=1;
else
data[j]*=i;
}
for(j=1;j<digit+1;j++)
{
if(data[digit]>=10)/*若放在后面,就不是判断最后一位了.只有先判断才是最后一位,否则出错*/
digit++;
if(data[j]>=10)
{data[j+1]+=data[j]/10;
data[j]%=10;
}
}
printf("\n%d!=
",i);
for(k=digit;k>0;k--)
printf("%d",data[k]);
}
}
运行结果:
100!=93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
用c语言编程如何实现求和的程序代码?
1、首先把头文件,main函数写好#include<stdio.h> main(),如下图所示。2、之后需要定义几个变量,一个存放和,一个从1开始到100,如下图所示。3、之后书写for循环,首先给i赋值为1,其中如果要求200以内和把数字100改为200即可。4、然后写for循环里面的内容,sum=sum+i;把每个i的值加到sum...
C语言有哪些实用的编程方法?
C语言8个实用方法代码优化 1、选择合适的算法和数据结构 选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语包莫有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组...
用c语言编程:编写一个程序,输入4个数,求其平均值
直接编译,程序输出结果中任意输入4个数字,程序执行结果如下图所示:
用C语言编写程序:输入体重和身高,输出体重指数BMI
在C语言编程中,可以通过简单的代码实现输入用户的体重和身高,然后计算并输出BMI指数。BMI(Body Mass Index),作为衡量人体健康状况的重要工具,是通过体重(公斤)除以身高(米)的平方来得出的数值。它最初被设计为公共卫生研究中的统计标准,用来比较不同身高个体的体重对健康的影响,具有一定的参考价...
请问下面这个实例用C语言程序怎样编程
printf("成绩等级为:%c\\n", grade);return 0;} 在程序中,先定义了一个整型变量 score 和一个字符型变量 grade,用来分别存储输入的成绩和计算出的等级。然后,使用 scanf 函数从键盘上读入成绩,使用除法运算将成绩转化为 1~10 的整数,并将其作为 switch 语句的选择器。根据成绩范围,使用不同...
用c语言编程,输入一个字符,若是小写字母,转换为大写输出,若是大写字母...
代码如下:include<stdio.h> intmain(){ charx,y;printf("请输入一个字母:");scanf("%c",&x);if(x>='a'&&x<='z')y=x-32;if(x>='A'&&x<='Z')y=x+32;printf("转换后的字符为:%c\\n", y);} 代码在DEVC++环境下运行效果如下:...
C语言:请用自定义函数的形式编程实现,求s=m!+n!+k! m、n、k从键盘输入...
1、打开Dev-c++软件,点击“新建源代码”。2、具体程序如下。3、编写完程序之后,点击运行即可得出结果。最后的结果是根据自己输入的n值和a值为基础来进行运行的,每次输入的值不同,结果也会不同。4、for表示循环结构,i 表示循环条件,在编写程序时,注意给赋予增值变量的条件。5、term=term*10+a ...
c语言程序设计题:请用自定义函数的形式编程实现,求s=m!+n!+k! m n...
请用自定义函数的形式编程实现 求 s = m! + n! + k!,m、n、k 从键盘输入(值均小 于 7)。int fun(int m);int main(){ int m,n,k;int s;printf("请输入三个小于7的数:");scanf("%d %d %d",&m,&n,&k);s=fun(m)+fun(n)+fun(k);printf("%d\\n",s);return 0;} ...
C语言,编程实现:输出以下图形
include <stdio.h>#include <math.h>int main(){int i,j;for(i=-2; i<=2; i++){for( j=2; j>=-2; j--){if(abs(i)+abs(j)<=2)printf("*");elseprintf(" ");}printf("\\n");}return 0;} 把整个图形看成直角坐标系 ...
用C语言编程:编写一函数判别某一数是否为素数,若是,返回值为1;否则...
void main(){ int a,c;int isSus(int n);\/*函数声明*\/ printf("请输入一整数a:\\n");scanf("%d",&a);c=isSus(a);\/*函数调用*\/ printf("%d",c);printf("\\n");} int isSus(int n)\/*函数定义*\/ { int j,t;for(j=2;j<n;j++)if(n%j==0){ t=0;break;} else t=1...
大狐齿金纳: 100的阶乘已经是大数相乘了,在c语言中没有现成的数据型可以用,所以用数组模拟计算 #include <stdio.h> #define MAXN 1000int a[MAXN],b[MAXN]; void pwrite(int *a,int k,int c)//将计算的结果数组[a]按每一位输出,k为所计算数字,i为计算所...
西乌珠穆沁旗17078152433: 怎样用C语言编程实现从1乘到100的结果? - ?
大狐齿金纳: #include "stdio.h" void main() {int data[200]; int i,j,k; int n; int digit; for(i=0;i<200;i++) data[i]=0;/*数组初始化全都置0*/ data[1]=1; digit=1; printf("input the number n= \n"); scanf("%d",&n);/*你要是求100!就输入100*/ for(i=0;i<n+1;i++) { for(...
西乌珠穆沁旗17078152433: C语言1乘到100怎么些啊 - ?
大狐齿金纳: 用for 方便. 1乘到100,数的精度可能不足.long double a=1.0; long int i;for (i=1;i<=100;i++) a = a * (long double) i;
西乌珠穆沁旗17078152433: c语言编程 求累乘积 一乘到100怎么编程 - ?
大狐齿金纳: # include<stdio.h> int main(void) { int i; int product=1; for(i=1; i<=100;++i)product=product*i;printf("product=%d\n",product); return 0; }
西乌珠穆沁旗17078152433: 请问用c语言编辑 从1乘到100的乘机并输出最简单方法是什么?^ - ^ - ?
大狐齿金纳: ||#include "stdio.h" long long fun(int n) { if ((0 == n) || (1 == n)) return (1); return (n*fun(n - 1)); } void main() { printf("\n\r 100!=%I64d.", fun(10)); while (1); } 用递归.100的阶乘太大了,这里用10.
西乌珠穆沁旗17078152433: c语言计算1到100的乘积的编程 - ?
大狐齿金纳: #include <stdio.h> void main() {long i,j,N;//N为阶乘数result=1;for(j=1;j<=N;j++){result*=j;}printf("%ld",result);getch(); } 我这个最简单
西乌珠穆沁旗17078152433: 求一个用c 算出的 1一直乘到100的 程序 - ?
大狐齿金纳: 大数阶乘#include<stdio.h>#include<conio.h> int arr[1000000]={0}; void mul(int arr[],int n,int *len) { int c=0,i,l=*len; for(i=0;i<l;i++) { arr[i]=arr[i]*n+c; c=arr[i]/10; arr[i]%=10; } while(c!=0) { arr[l++]=c%10; c/=10; } *len=l; } void main() { int i,n,len; n=100;...
西乌珠穆沁旗17078152433: 谁能用c语言中的for语句,编写个从1加到100的程序 - ?
大狐齿金纳: 方法一: #include <stdio.h> main() { int s=0,i; for (i=1;i<=100;i++) s=s+i; printf("sum=%d\n",s); } 方法二: #include <stdio.h> main() { int s=0,i=1 while(i<=100) { s=s+i; i++; } printf("sum=%d\n",s); }
西乌珠穆沁旗17078152433: C语言编程从1累加到100然后求他们的平均值 - ?
大狐齿金纳: int start=1,end=100;//定义开始和结束的数值(这里是1-100) printf("%lf",((end-start+1)%2==0)?((end+start)*(end-start+1)/2/(double)(end-start+1)):(((end+start)*(end-start)/2+(end-start)/2)+(end%2?1:2))/(double)(end-start+1));这个算法比较...
西乌珠穆沁旗17078152433: 1到100的阶乘 C语言程序 - ?
大狐齿金纳: 举例说明算法:1!+2!+3!+……+n!=1+2*(1+3*(1+4*(1+5(1+.(1+(n-1)*(1+n)).)))) 不过当n=100貌似会溢出.因此要实现一个大数乘法的函数.#include<stdio.h> void main() { long sum; int n=100; sum=n; while(n!=1) { sum+=1; sum*=n-1;//使用大数乘法函数替代这里的处理 n--; } printf("%d\n",sum); }