当前位置:首页 期刊杂志

C语言趣味课堂练习之二

时间:2024-04-25

摘 要:作者多年从事计算机应用技术研究和教学,在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语句。

这个题目可以用多个算法,程序原型里的算法属于暴力破解法,又叫穷举法。

后记:

这一类程序里还有很多题目都是很有趣的,例如”三折井”、”买瓜”等题目。都很有趣,而且需要大家认真对待。

作者简介

杨英翔,副教授。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!