摘 要:作者多年从事计算机应用技术研究和教学,在C语言程序设计的教学过程中,作者一直在探索激发学生学习兴趣、降低课程难度、提高学习成绩的有效途径,并提出自己的一些做法供同行们参考。
关键词:C语言;教法;计算机
1 斐波那契数列
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问前20个月每个月的兔子总数为多少对?
#include
#include
main()
{
system(“color 3e”);
system(“title 兔子发财计划");
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”);
}
程序说明:
斐波那契数列是C语言里很重要的一道题目,可以由循环、数组、函数等多种方法实现,灵活多变,十分适合锻炼学生的创新、想象能力。
还可以鼓励学生们做其他的设计尝试。
2 打印“水仙花数”
#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 “);
}
程序说明:
“水仙花”数是指一个n位数(n≥3),它的每个位上的数字的n 次幂之和等于它本身。
“水仙花”数,是C语言里很重要的一道题目,可以由循环、数组、函数等多种方法实现,灵活多变,十分适合锻炼学生的创新、想象能力。
“水仙花”数是指一个n位数(n≥3),它的每个位上的数字的n 次幂之和等于它本身。有三位的”水仙花”数,有四位的”水仙花”数,我们还可以尝试编程显示五位的”水仙花”数。
3 10以内数减法练习
#include
#include
#include
#include
main()
{
srand(time(NULL));
system(“title 10以内数减法练习");
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\n ",m*5);
}
程序说明:
10以内减法是10以内数加法的升级,之后还有10以内数的乘法和除法,再以后还有10以内数的四则运算。
这个练习主要重点应该是培养学生自主设计程序的能力。
10以内数四则运算练习是我们自主设计的第一个实用程序,可以鼓励学生们进一步完善设计,还可以进一步形成函数版、多文件版等不同的版本。
4 将一个正整数分解质因数
#include
#include
//正整数分解质因数
main()
{
int n,i;
printf(“\n\n 请输入正整数:\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”);
}
程序说明:
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
对n进行分解质因数,应先找到一个最小的质数i,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n>k,但n能被i整除,则应打印出i的值,并用n除以i的商,作为新的正整数n, 重复执行第一步。
(3)如果n不能被i整除,则用i+1作为i的值,重复执行第一步。
这两个程序讲的都是数学里的小常识,我们还可以引导学生把其他的数学里的小常识用C语言程序表达出来。既有趣,又锻炼学生的C能力。
5 解方程
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少??
#include
#include
#include
#include
void main()
{
system(“color 3f”);
system(“title 关于完全平方数");
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 这个整数可
以是 %d\n\n ",k);
goto lop;
}
}
}
}
lop:
printf(“\n\n “);
}
程序说明:
这个题目里我们使用了嵌套循环和goto语句。
这个题目可以用多个算法,程序原型里的算法属于暴力破解法,又叫穷举法。
后记:
这一类程序里还有很多题目都是很有趣的,例如”三折井”、”买瓜”等题目。都很有趣,而且需要大家认真对待。
作者简介
杨英翔,副教授。