?

C語言趣味課堂練習之二

2017-01-21 10:45楊英翔
卷宗 2016年10期
關鍵詞:C語言教法計算機

摘 要:作者多年從事計算機應用技術研究和教學,在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 ",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語句。

這個題目可以用多個算法,程序原型里的算法屬于暴力破解法,又叫窮舉法。

后記:

這一類程序里還有很多題目都是很有趣的,例如”三折井”、”買瓜”等題目。都很有趣,而且需要大家認真對待。

作者簡介

楊英翔,副教授。

猜你喜歡
C語言教法計算機
計算機操作系統
基于Visual Studio Code的C語言程序設計實踐教學探索
基于計算機自然語言處理的機器翻譯技術應用與簡介
基于C語言的計算機軟件編程
信息系統審計中計算機審計的應用
高職高專院校C語言程序設計教學改革探索
“教法融合”:得道方能行遠
論子函數在C語言數據格式輸出中的應用
Fresnel衍射的計算機模擬演示
語文教學要創新教法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合