摘 要:作者多年從事計算機應用技術研究和教學,在C語言程序設計的教學過程中,作者一直在探索激發(fā)學生學習興趣、降低課程難度、提高學習成績的有效途徑,并提出自己的一些做法供同行們參考。
關鍵詞:C語言;教法;計算機
1 斐波那契數(shù)列
古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問前20個月每個月的兔子總數(shù)為多少對?
#include
#include
main()
{
system(“color 3e”);
system(“title 兔子發(fā)財計劃");
long f1,f2;
int i;
f1=f2=1;
for(i=1;i<=10;i++)
{
printf(“%12ld %12ld”,f1,f2);
if(i%2==0)
printf(“\n”); //控制輸出,每行四個
f1=f1+f2; //前兩個月加起來賦值給第三個月
f2=f1+f2; //前兩個月加起來賦值給第三個月
}
printf(“\n “);
system(“pause”);
}
程序說明:
斐波那契數(shù)列是C語言里很重要的一道題目,可以由循環(huán)、數(shù)組、函數(shù)等多種方法實現(xiàn),靈活多變,十分適合鍛煉學生的創(chuàng)新、想象能力。
還可以鼓勵學生們做其他的設計嘗試。
2 打印“水仙花數(shù)”
#include
#include
main()
{
system(“title ‘water flowernumber”);
system(“color 3e”);
int i,j,k,n;
printf(“\n\n ‘water flowernumber is:\n\n “);
for(n=100;n<1000;n++)
{
i=n/100; //分解出百位
j=n/10%10; //分解出十位
k=n%10; //分解出個位
if(n==i*i*i+j*j*j+k*k*k)
{
printf(“%-5d”,n);
}
}
printf(“\n\n “);
}
程序說明:
“水仙花”數(shù)是指一個n位數(shù)(n≥3),它的每個位上的數(shù)字的n 次冪之和等于它本身。
“水仙花”數(shù),是C語言里很重要的一道題目,可以由循環(huán)、數(shù)組、函數(shù)等多種方法實現(xiàn),靈活多變,十分適合鍛煉學生的創(chuàng)新、想象能力。
“水仙花”數(shù)是指一個n位數(shù)(n≥3),它的每個位上的數(shù)字的n 次冪之和等于它本身。有三位的”水仙花”數(shù),有四位的”水仙花”數(shù),我們還可以嘗試編程顯示五位的”水仙花”數(shù)。
3 10以內(nèi)數(shù)減法練習
#include
#include
#include
#include
main()
{
srand(time(NULL));
system(“title 10以內(nèi)數(shù)減法練習");
system(“color 3e”);
int i,j,k,n,m=0;
for(n=1;n<=20;n++)
{
i=rand()%10;
j=rand()%i;
printf(“\n\n No: %d”,n);
printf(“\n\n %d-%d= \n\n “,i,j);
scanf(“%d”,&k);
if(k==i-j)
{
printf(“\n 恭喜你,答對了!");
m++;
}
else
printf(“\n 答錯了,正確答案是 %d",i-j);
Sleep(2000);
system(“cls”);
}
printf(“\n\n 您的總分是 %d ,再見?。躰\n ",m*5);
}
程序說明:
10以內(nèi)減法是10以內(nèi)數(shù)加法的升級,之后還有10以內(nèi)數(shù)的乘法和除法,再以后還有10以內(nèi)數(shù)的四則運算。
這個練習主要重點應該是培養(yǎng)學生自主設計程序的能力。
10以內(nèi)數(shù)四則運算練習是我們自主設計的第一個實用程序,可以鼓勵學生們進一步完善設計,還可以進一步形成函數(shù)版、多文件版等不同的版本。
4 將一個正整數(shù)分解質(zhì)因數(shù)
#include
#include
//正整數(shù)分解質(zhì)因數(shù)
main()
{
int n,i;
printf(“\n\n 請輸入正整數(shù):\n\n ");
scanf(“%d”,&n);
printf(“\n %d=”,n);
for(i=2;i<=n;i++)
{
while(n!=i)
{
if(n%i==0)
{
printf(“%d*”,i);
n=n/i;
}
else
break;
}
}
printf(“%d”,n);
printf(“\n\n “);
system(“pause”);
}
程序說明:
將一個正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5。
對n進行分解質(zhì)因數(shù),應先找到一個最小的質(zhì)數(shù)i,然后按下述步驟完成:
(1)如果這個質(zhì)數(shù)恰等于n,則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié)束,打印出即可。
(2)如果n>k,但n能被i整除,則應打印出i的值,并用n除以i的商,作為新的正整數(shù)n, 重復執(zhí)行第一步。
(3)如果n不能被i整除,則用i+1作為i的值,重復執(zhí)行第一步。
這兩個程序講的都是數(shù)學里的小常識,我們還可以引導學生把其他的數(shù)學里的小常識用C語言程序表達出來。既有趣,又鍛煉學生的C能力。
5 解方程
一個整數(shù),它加上100后是一個完全平方數(shù),再加上168又是一個完全平方數(shù),請問該數(shù)是多少??
#include
#include
#include
#include
void main()
{
system(“color 3f”);
system(“title 關于完全平方數(shù)");
system(“mode con cols=130 lines=20”);
int i,j,k;
for (i=1;i<=1000;i++)
{
for (j=1;j<=1000;j++)
{
for (k=1;k<=1000;k++)
{
if(i*i==k+100&&j*j==k+268)
{
printf(“\n\n 這個整數(shù)可
以是 %d\n\n ",k);
goto lop;
}
}
}
}
lop:
printf(“\n\n “);
}
程序說明:
這個題目里我們使用了嵌套循環(huán)和goto語句。
這個題目可以用多個算法,程序原型里的算法屬于暴力破解法,又叫窮舉法。
后記:
這一類程序里還有很多題目都是很有趣的,例如”三折井”、”買瓜”等題目。都很有趣,而且需要大家認真對待。
作者簡介
楊英翔,副教授。