尝试用C语言计算大数阶乘C语言课堂趣味练习

2021-06-07 06:58杨英翔
电子乐园·下旬刊 2021年5期
关键词:C语言教法计算机

摘要:作者多年从事计算机应用技术研究和教学,在C语言程序设计的教学过程中,作者一直在探索激发学生学习兴趣、降低课程难度、提高学习成绩的有效途径,并提出自己的一些做法供同行们参考。

关键词:C语言;教法;计算机

正文:

源程序:

#include

#include

#define N 2000    //可以是任意一个数的阶乘

int main(  )

{system("title 求N的阶乘");    //设置标题

system("color 2f");    //设置颜色

int a[100000],b=0,i,j;    //设置数组预备存放数据

for(i=0;i<100000;i++)    //设置数组里每一位都是零

a[i]=0;

a[0]=1;    //设置数组的第一位是1,就是第一个乘数是1

printf("\n\n    %d!=",N);    //打印等式的左侧N!=

for(i=2;i<=N;i++)    //设置阶乘的乘数

{for(j=0;j<=b;j++)    //设置阶乘的计算

a[j]*=i;

b+=16;    //设置数值的每一个元素只保存一位整数

for(j=0;j

if(a[j]>9)

{a[j+1]+=a[j]/10;

a[j]%=10;}

while(a[b]==0) b--;}

for(i=b; i>=0; i--)     //设置逆序打印

printf("%d", a[i]);

printf("\n    ");

return 0;}

程序说明:

这个程序里用一个整型数组来存放N的阶乘的结果,通过程序的讲解,我们可以初步理解用数组存放和打印大数据的方法,这也是用C语言进行科学计算的一个使用例子,为学生们打开程序设计的一面窗户。

整个程序结构上很实用,语言上很简练,算法也简单。

相关知识:

这个例子里用数组存放大数据,大致可以分两步,第一步是数组里每一个元素中数据的计算,第二步是数组中每一个元素中数据的进位。打印数组中存放的大数据,使用逆序打印。

相关练习:

(1) N的阶乘的另一种方法,这是网上流传很广的一个程序,已经找不到出处了,经过验证是可以运行的,大家可以尝试分析一下其算法原理。

#include

#include

#define N 800   //设置阶乘的N值

long s[N]={1},n=10000,t=2,x,y,m;

int main()

{system("title 大数据的计算和显示");

system("color 2f");

printf("\n\n    %d!=",N);

for(;x<=m||++t<=N&&(x=y=0,1);m==x++&&y&&m++)

s[x]=(y+=s[x]*t)%n,y/=n;

for(printf("%d",s[m]);m--;)

printf("%04d",s[m]);

printf("\n\n    ");

return 0;}

(2)冒泡排序法,這是一个简单的排序法练习,头文件里有time.h,大家可以尝试使用随机数来给数组赋值。

#include

#include

#include

#include

main()

{system("color 2f");

system("title ---冒泡排序法");

system("mode con cols=130 lines=40");

int m[256],i,j,t,k;

printf("\n\n    输入10个数:\n\n     ");

for(i=0;i<10;i++)

{scanf("%d",&m[i]);}

printf("\n您输入的数组—————\n");

for(i=0;i<10;i++)

{printf("%5d",m[i]);}

for(i=0;i<9;i++)

{for(j=0;j<9-i;j++)

{if(m[j]>m[j+1])

{t=m[j+1];

m[j+1]=m[j];

m[j]=t;}}}

printf("\n\n排序后的数组—————\n");

for(k=0;k<10;k++)

printf("%5d",m[k]);

printf("\n\n");

getchar();}

总结:

C语言程序设计是一门非常注重实践的课程,无论课堂教学还是上机实践,教师的童心和发散思维,都是学生们突破学习难点、提高学习兴趣和建立良好的学习习惯的强有力的助力和催化剂。

参考书籍

[1]. 《C程序设计》(第三版),谭浩强 著,清华大学出版社,2005年7月

[2]. C程序设计题解与上机指导》(第三版),谭浩强著,清华大学出版社,2005年7月

[3]. 《C语言程序设计习题指导与练习》,刘宏著,清华大学出版社,2009年1月

作者简介:杨英翔(1964.06-),男,汉族,副教授,就职于沈阳建筑大学。04D6D49D-437D-4CE8-BB67-EDC0E584C8E4

猜你喜欢
C语言教法计算机
能力本位的《网页前端框架》教法改革与探索
“C语言程序设计”课程混合教学探索
中国计算机报202007、08合刊
中国计算机报2019年48、49期合刊
中国古代的“计算机”
基于C语言的计算机软件编程技术探究
中职C语言单片机课堂教学中的趣味性探讨
新课改背景下高中数学教法的合理整合
计算机原理中C语言的应用价值
What kind of role should English teachers play in the intensive reading class