摘 要:作者多年從事計算機應用技術研究和教學,在C語言程序設計的教學過程中,作者一直在探索激發學生學習興趣、降低課程難度、提高學習成績的有效途徑,并提出自己的一些做法供同行們參考。
關鍵詞:C語言;教法;計算機
1 乘法口訣(二)
程序說明:
這個程序使用while語句實現了前面程序的功能,教師可以通過這個程序給學生講解while語句的使用,其他可以設置特殊形狀的窗口并且逐行顯示乘法口訣,涉及了多個頭文件、休眠,還涉及嵌套循環的使用。
教師講解這個程序的時候應該多突出它的趣味性,激發學生的學習熱情。
#include
#include
#include
int main(void)
{
system(“color 3f”);
system(“title 乘法口訣”);
system(“mode con cols=130 lines=20”);
int i=1,j=1;
while(i<=9)
{
printf(“\n “);
while(j<=i)
{
printf(“%d*%d=%-6d”,j,i,i*j);
j++;
}
j=1;
Sleep(500);
i++;
}
printf(“\n\n “);
}
后記:
教師需要一邊講解,一邊逐步增加各項功能,以免學生跟不上教師的思路。
教師講解這個程序的時候應該多突出它的趣味性,激發學生的學習熱情。
2 求100以內的所有素數
程序說明:
這個程序使用for語句,找出100以內的所有素數,教師可以通過這個程序給學生講解for語句和if語句的綜合使用。
教師講解這個程序的時候應該多講解它的算法分析,培養學生的算法設計能力。
練習方法:
(1).程序原型
#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 “);
}
(2).算法分析
1)開始:i=2,j=2;
2)設置i從2到100的循環
3)設置j從2到i的循環
4)第一次判斷:J每一次取值,都驗證i%j是否為零,如果為零,則終止j的循環
5)第二次判斷:驗證i==j是否成立,如果成立,則找到一個素數
后記:
教師在使用這個程序時應該多關注算法設計,多給學生講解算法設計,培養學生算法設計能力。
3 用1、2、3、4,能組成多少個互不相同且無重復數字的三位數?都是多少?
程序說明:
這個程序使用三層嵌套for語句,找出1、2、3、4組成的所有不同的并且沒有重復的三位數,教師可以通過這個程序給學生講解for語句和if語句的綜合使用。
教師講解這個程序的時候應該多講解它的算法分析,并且引導學生設計不同的算法,培養學生的算法設計能力。
練習方法:
(1).程序原型
#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);
}
(2).算法分析
算法一
1)設置i=1,j=1,k=1
2)嵌套設置I,j,k三層循環
3)判斷分揀出I,j,k互不相同的組合打印
算法二
1)設置i=1,j=1,k=1
2)設置i循環
3)設置j循環,分揀出與i不同的j
4)設置k循環,分揀出與I,j不同的k
5)打印
(3).參考程序
#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++)
{
if(i==j)
continue;
else
{
for(k=1;k<5;k++)
if((i==k)||(j==k)) //確保i、j、k不相同
continue;
else
{
printf(“\t%d,%d,%d\t”,i,j,k);
m++;
n++;
if(n%4==0)
printf(“\n”);
}
}
}
}
printf(“\n 以上一共 %d 個。\n “,m);
}
后記:
教師應該多講解它的算法分析,并且引導學生設計不同的算法,培養學生的算法設計能力。
作者簡介
楊英翔,副教授。