摘要:作者多年從事計(jì)算機(jī)應(yīng)用技術(shù)研究和教學(xué),在C語言程序設(shè)計(jì)的教學(xué)過程中,作者一直在探索激發(fā)學(xué)生學(xué)習(xí)興趣、降低課程難度、提高學(xué)習(xí)成績的有效途徑,并提出自己的一些做法供同行們參考。
關(guān)鍵詞:C語言;教法;計(jì)算機(jī)
正文:
源程序:
#include
#include
#define N 2000 ? ?//可以是任意一個(gè)數(shù)的階乘
int main( ?)
{system("title 求N的階乘"); ? ?//設(shè)置標(biāo)題
system("color 2f"); ? ?//設(shè)置顏色
int a[100000],b=0,i,j; ? ?//設(shè)置數(shù)組預(yù)備存放數(shù)據(jù)
for(i=0;i<100000;i++) ? ?//設(shè)置數(shù)組里每一位都是零
a[i]=0;
a[0]=1; ? ?//設(shè)置數(shù)組的第一位是1,就是第一個(gè)乘數(shù)是1
printf("\n\n ? ?%d!=",N); ? ?//打印等式的左側(cè)N!=
for(i=2;i<=N;i++) ? ?//設(shè)置階乘的乘數(shù)
{for(j=0;j<=b;j++) ? ?//設(shè)置階乘的計(jì)算
a[j]*=i;
b+=16; ? ?//設(shè)置數(shù)值的每一個(gè)元素只保存一位整數(shù)
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--) ? ? //設(shè)置逆序打印
printf("%d", a[i]);
printf("\n ? ?");
return 0;}
程序說明:
這個(gè)程序里用一個(gè)整型數(shù)組來存放N的階乘的結(jié)果,通過程序的講解,我們可以初步理解用數(shù)組存放和打印大數(shù)據(jù)的方法,這也是用C語言進(jìn)行科學(xué)計(jì)算的一個(gè)使用例子,為學(xué)生們打開程序設(shè)計(jì)的一面窗戶。
整個(gè)程序結(jié)構(gòu)上很實(shí)用,語言上很簡練,算法也簡單。
相關(guān)知識:
這個(gè)例子里用數(shù)組存放大數(shù)據(jù),大致可以分兩步,第一步是數(shù)組里每一個(gè)元素中數(shù)據(jù)的計(jì)算,第二步是數(shù)組中每一個(gè)元素中數(shù)據(jù)的進(jìn)位。打印數(shù)組中存放的大數(shù)據(jù),使用逆序打印。
相關(guān)練習(xí):
(1) N的階乘的另一種方法,這是網(wǎng)上流傳很廣的一個(gè)程序,已經(jīng)找不到出處了,經(jīng)過驗(yàn)證是可以運(yùn)行的,大家可以嘗試分析一下其算法原理。
#include
#include
#define N 800 ? //設(shè)置階乘的N值
long s[N]={1},n=10000,t=2,x,y,m;
int main()
{system("title 大數(shù)據(jù)的計(jì)算和顯示");
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)冒泡排序法,這是一個(gè)簡單的排序法練習(xí),頭文件里有time.h,大家可以嘗試使用隨機(jī)數(shù)來給數(shù)組賦值。
#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個(gè)數(shù):\n\n ? ? ");
for(i=0;i<10;i++)
{scanf("%d",&m[i]);}
printf("\n您輸入的數(shù)組—————\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排序后的數(shù)組—————\n");
for(k=0;k<10;k++)
printf("%5d",m[k]);
printf("\n\n");
getchar();}
總結(jié):
C語言程序設(shè)計(jì)是一門非常注重實(shí)踐的課程,無論課堂教學(xué)還是上機(jī)實(shí)踐,教師的童心和發(fā)散思維,都是學(xué)生們突破學(xué)習(xí)難點(diǎn)、提高學(xué)習(xí)興趣和建立良好的學(xué)習(xí)習(xí)慣的強(qiáng)有力的助力和催化劑。
參考書籍
[1]. 《C程序設(shè)計(jì)》(第三版),譚浩強(qiáng) 著,清華大學(xué)出版社,2005年7月
[2]. C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)》(第三版),譚浩強(qiáng)著,清華大學(xué)出版社,2005年7月
[3]. 《C語言程序設(shè)計(jì)習(xí)題指導(dǎo)與練習(xí)》,劉宏著,清華大學(xué)出版社,2009年1月
作者簡介:楊英翔(1964.06-),男,漢族,副教授,就職于沈陽建筑大學(xué)。