?

C語言趣味課堂練習之三

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

摘 要:作者多年從事計算機應用技術研究和教學,在C語言程序設計的教學過程中,作者一直在探索激發學生學習興趣、降低課程難度、提高學習成績的有效途徑,并提出自己的一些做法供同行們參考。

關鍵詞:C語言;教法;計算機

1 求100以內的所有素數

#include

#include

int main(void)

{

system(“color 3f”);

system(“title 100以內的所有素數");

system(“mode con cols=90 lines=30”);

int i=2,j=2,k=0;

for(i=2;i<=100;i++)

{

for(j=2;j

{

if(i%j==0)

break;

}

if(i==j)

{

printf(“\t%d\t”,i);

k++;

if(k%4==0)

printf(“\n”);

}

}

printf(“\n\n “);

}

程序說明:

這個程序使用for語句,找出100以內的所有素數,教師可以通過這個程序給學生講解for語句和if語句的綜合使用。

教師講解這個程序的時候應該多講解它的算法分析,培養學生的算法設計能力。

教師在使用這個程序時應該多關注算法設計,多給學生講解算法設計,培養學生算法設計能力。

2 用1、2、3、4,能組成多少個互不相同且無重復數字的三位數?都是多少?

#include

#include

int main(void)

{

system(“color 3f”);

system(“title 用1--4組成的互不相同且無重復數字的三位數");

system(“mode con cols=90 lines=30”);

int i,j,k,m=0,n=0;

printf(“\n”);

for(i=1;i<5;i++) //以下為三重循環

for(j=1;j<5;j++)

for(k=1;k<5;k++)

{

if (i!=k&&i!=j&&j!=k) //確保i、

j、k三位互不相同

{

m++;

printf(“\t%d,%d,%d\t”,i,j,k);

n++;

if(n%4==0)

printf(“\n”);

}

}

printf(“\n 以上一共 %d 個。\n ",m);

}

程序說明:

這個程序使用三層嵌套for語句,找出1、2、3、4組成的所有不同的并且沒有重復的三位數,教師可以通過這個程序給學生講解for語句和if語句的綜合使用。

教師講解這個程序的時候應該多講解它的算法分析,并且引導學生設計不同的算法,培養學生的算法設計能力。

教師應該多講解它的算法分析,并且引導學生設計不同的算法,培養學生的算法設計能力。

3 計時器

#include

#include

void main()

{

int i;

for(i=1;i<=5;i++)

{

Sleep(1000);

printf(“ %d\n”,i);

}

ShellExecute(NULL, “open”, “wmplayer”, “F:\\C語言\\001.wav", NULL,SW_SHOW);

MessageBox(NULL,(“下課了!"),("系統提示"),MB_OK);

}

程序說明:

這個程序通過循環和休眠的有序結合,實現計時器功能,計時結束彈出提示窗口,播放音效,教師可以一邊講解一邊修訂程序,在師生互動中完成程序。

教師講解這個程序的時候應該多講解它的算法分析,并且引導學生設計不同的算法,培養學生的算法設計能力。

教師應該多講解它的算法分析,并且引導學生設計不同的算法,培養學生的算法設計能力。

4 數制變換

#include

#include

#include

void main()

{

system(“title 數制變換");

system(“color 3e”);

int i,j;

char c[255];

printf(“\n\n\n 請輸入一個十進制數:\n ");

scanf(“%d”,&i);

printf(“\n\n 您輸入的是:%d ",i);

printf(“\n\n 該數的八進制是:%o ",i);

printf(“\n\n 該數的十六進制是:%x ",i);

sprintf(c,”%o”,i);

printf(“\n\n 該數的二進制是: ");

for(j=0;c[j]!=\0;j++)

{

switch(c[j])

{

case ‘0:printf(“000”);break;

case ‘1:printf(“001”);break;

case ‘2:printf(“010”);break;

case ‘3:printf(“011”);break;

case ‘4:printf(“100”);break;

case ‘5:printf(“101”);break;

case ‘6:printf(“110”);break;

case ‘7:printf(“111”);break;

}

}

printf(“\n\n “);

}

程序說明:

這個程序使用了switch語句和sprintf語句,實現了數制變換,其算法較抽象難懂,講解應該多和學生互動??梢砸贿呏v解一邊修訂程序,在師生互動中完成程序。

在學生完全理解的基礎上,可以引導學生設計由十六進制轉二進制的程序。

注意講解sprintf、switch等語句的用法。

5 輸入年、月、日,判斷這一天是這一年中的第幾天?

#include

#include

void main()

{

system(“color 3e”);

system(“title 輸入年、月、日,查看是一年中的第幾天");

int day,month,year,sum,leap;

printf(“\nplease input year,month,day\n”);

scanf(“%d,%d,%d”,&year,&month,&day);

switch(month)/*先計算某月以前月份的總天數*/

{

case 1:sum=0;break;

case 2:sum=31;break;

case 3:sum=59;break;

case 4:sum=90;break;

case 5:sum=120;break;

case 6:sum=151;break;

case 7:sum=181;break;

case 8:sum=212;break;

case 9:sum=243;break;

case 10:sum=273;break;

case 11:sum=304;break;

case 12:sum=334;break;

default:printf(“data error”);break;

}

sum=sum+day; /*再加上某天的天數*/

if(year%400==0||(year%4==0&&year%100!=0))/*判斷是不是閏年*/

leap=1;

else

leap=0;

if(leap==1&&month>2)/*如果是閏年且月份大于2,總天數應該加一天*/

sum++;

printf(“It is the %dth day.\n”,sum);

}

程序說明:

以3月5日為例,應該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于3時需考慮多加一天。這個程序里包括switch語句的使用、閏年的判斷,算法分析需要認真講解。這個程序處理好了很有趣,還增長了知識,處理不好就枯燥無味,所以老師在講這個程序時要格外注意和學生互動。

在講解算法的基礎上,注意讓學生養成思考和創新的好習慣,鼓勵學生在編程過程中的大膽創新。

作者簡介

楊英翔,副教授。

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