摘要:作者多年從事計算機應用技術研究和教學,在C語言程序設計的教學過程中,作者一直在探索激發(fā)學生學習興趣、降低課程難度、提高學習成績的有效途徑,并提出自己的一些做法供同行們參考。
關鍵詞:C語言;教法;計算機
正文:
源程序:
#include<stdio.h>
#include<stdlib.h>
void main()
{// 嘗試計算圓周率小數(shù)點后300位
// 格里高利公式:pi=1-1/3+1/5-1/7+... ...
// 設置變量
int a[20000]={0};int s=1,s0;int v=1;int i,j,k,m;
for(i=1;i<50000000;i++)
{j=0;s0=s;
while(!(s0/v))
{j++;s0*=10;}
for(k=1;k<=300;k++)
{a[j]+=s0/v;s0=(s0%v)*10;j++;}m=j;
for(j=m;j>=1;j--)
{a[j-1]=a[j-1]+a[j]/10;
a[j]=a[j]%10;
if(a[j]<0)
{a[j-1]=a[j-1]-1;
a[j]=10+a[j];}}s=-1*s;v=v+2;}
for(j=0;j<=m;j++)
a[j]=a[j]*4;
for(j=m;j>=1;j--)
{a[j-1]=a[j-1]+a[j]/10;a[j]=a[j]%10;
if(a[j]<0)
{a[j-1]=a[j-1]-1;a[j]=10+a[j];}}
printf("\n\n ? ?PI=\n ? ?");
for(j=0;j<=m;j++)
{printf("%d",a[j]);
if((j+1)%4==0)
printf(" ");}
/*FILE * p;
p=fopen("圓周率.doc","w");
fprintf(p,"\n\n ? ?PI=\n ? ?");
for(j=0;j<=m;j++)
{fprintf(p,"%d",a[j]);
if((j+1)%4==0)
fprintf(p," ");}
fprintf(p,"\n\n ? ?");
fclose(p);*/
printf("\n\n ? ?Game Over\n\n ? ?");
system("pause");
printf("\n ? ?");}
程序說明:
這個程序里用一個整型數(shù)組來存放π的計算結果,通過程序的講解,我們可以初步理解用數(shù)組存放和打印大數(shù)據(jù)的方法,這也是用C語言進行科學計算的一個使用例子,為學生們打開程序設計的一面窗戶。
整個程序結構上很實用,語言上很簡練,算法也簡單。
相關知識:
這個例子里用數(shù)組存放大數(shù)據(jù),大致可以分兩步,第一步是數(shù)組里每一個元素中數(shù)據(jù)的計算,第二步是數(shù)組中每一個元素中數(shù)據(jù)的進位。
相關練習:
(1) π的另一種計算方法,這是網(wǎng)上流傳很廣的一個程序,已經(jīng)找不到出處了,經(jīng)過驗證是可以運行的,大家可以嘗試分析一下其算法原理。
#include<stdio.h>
#include<stdlib.h>
Int main()
{system("title 圓周率計算");
system("color 2f");
long a=10000,b=0,c=3500,d=0,e=0,f=0,g[3501];
for( ;b-c; )
g[b++]=a/5;
for( ;d=0,f=c*2;c-=14,printf( "%.4d ?",e+d/a),e=d%a)
for(b=c;d+=g[b]*a,g[b]=d%--f,d/=f--,--b;d*=b);
printf("\n\n ? ?");}
(2) 選擇排序法排序,這是一個簡單的排序法練習,頭文件里有time.h,大家可以嘗試使用隨機數(shù)來給數(shù)組賦值。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
main()
{system("color 2f");
system("title ---選擇排序法");
system("mode con cols=130 lines=40");
int m[256],i,j,t,k,s;
printf("\n\n ? ?輸入10個數(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++)
{t=i;for(j=i+1;j<=9;j++)
{if(m[t]>m[j])t=j;}
s=m[t];m[t]=m[i];m[i]=s; }
printf("\n\n排序后的數(shù)組—————\n");
for(k=0;k<10;k++)
printf("%5d",m[k]);
printf("\n\n");
getchar();}
總結:
C語言程序設計是一門非常注重實踐的課程,無論課堂教學還是上機實踐,教師的童心和發(fā)散思維,都是學生們突破學習難點、提高學習興趣和建立良好的學習習慣的強有力的助力和催化劑。
參考文獻
[1]. 《C程序設計》(第三版),譚浩強 著,清華大學出版社,2005年7月
[2]. C程序設計題解與上機指導》(第三版),譚浩強著,清華大學出版社,2005年7月
[3]. 《C語言程序設計習題指導與練習》,劉宏著,清華大學出版社,2009年1月
作者簡介:楊英翔(1964.06-),男,漢族,副教授,就職于沈陽建筑大學。