摘要:作者多年從事計算機應用技術研究和教學,在C語言程序設計的教學過程中,作者一直在探索激發(fā)學生學習興趣、降低課程難度、提高學習成績的有效途徑,并提出自己的一些做法供同行們參考。
關鍵詞:C語言;教法;計算機
正文:
歌德巴赫猜想:任意一個不小于6的偶數都可以表示成兩個素數的和。
本題的目的:在鍵盤上任意給一個符合條件的數,輸出相應的兩個素數。
素數:指在一個大于1的自然數中,除了1和此整數自身外,沒法被其他自然數整除的數。
源程序:
#include<stdio.h>
int cc(int x) ? // 自定義函數
{int i;
for(i=2;i<=x;i++)
{if((x%i==0)&&(i<x))
return 0;
else if((x%i==0)&&(x==i))
return 1;}}
void main( )
{ printf("\n\n ? ?哥德巴赫猜想啦: ?");
int i,j;
printf("\n\n ? ?請隨意輸入一個大于6的偶數:\n\n ? ?");
scanf("%d",&i);
for(j=3;j<=i/2;j++)
{if(cc(j)&&cc(i-j))
{printf("\n\n ? ?%d=%d+%d",i,j,i-j);
break;}}
printf("\n\n ? ?");}
程序說明:
這個程序最充分的體現了計算機的快,我們隨意輸入了一個大于6的偶數之后,計算機是在一個一個的驗算是否是素數的,如果是素數,再驗算其另一邊是否是素數,沒有任何技巧,能夠瞬間完成,全憑速度快。通過這個例子,同學們可以提高對計算機應用的興趣。
相關知識:
哥德巴赫猜想用C語言還可以有多種實現方法,請大家認真思考。
相關練習:
(1) 一個數如果恰好等于它的因子之和,這個數就稱為“完數”。例如6=1+2+3
編程找出1000以內的所有完數。
#include<stdio.h>
#include<stdlib.h>
void main( )
{system("color 3f");int i,n,sum;
for(n=1; n<=1000; n++)
{ sum=0;for(i=1;i<n;i++)
{ if(n%i==0)
{ sum=sum+i;}}
if(sum==n)
{printf("\n\n ? ?%6d是完數。",n);}}
printf("\n\n ? ?");}
(2) 另一個輸出完數的小程序
#include<stdio.h>
#include<stdlib.h>
void main( )
{system("color 3f");
int i,j,k,n,sum;
int a[1000];
for(i=2;i<=1000;i++){sum=1;a[0]=1;k=0;
for(j=2;j<=(i/2);j++)
{if(i%j==0)
{sum+=j;a[++k]=j;}}
if(i==sum)
{printf("\n\n ? ?");
printf("%d=%d",i,a[0]);
for(n=1;n<=k;n++)
printf("+%d",a[n]);}}
printf("\n\n ? ? ?");}
總結:
C語言程序設計是一門非常注重實踐的課程,無論課堂教學還是上機實踐,教師的童心和發(fā)散思維,都是學生們突破學習難點、提高學習興趣和建立良好的學習習慣的強有力的助力和催化劑。
參考書籍
[1]《C程序設計》(第三版),譚浩強 著,清華大學出版社,2005年7月
[2]C程序設計題解與上機指導》(第三版),譚浩強著,清華大學出版社,2005年7月
[3]《C語言程序設計習題指導與練習》,劉宏著,清華大學出版社,2009年1月
mailto:xxjk@chinajournal.net.cn
作者簡介:
楊英翔(1964.06-),男,漢族,副教授,就職于沈陽建筑大學。
mailto:xxjk@chinajournal.net.cn