
教学实例 本栏目是基于“任务驱动”教学模式的部分实例。我们调整传统教学内容的先后顺序, 在讲解语句、语法前先提出“任务”,以“任务驱动”方式引导学生学习,以程序编制牵引 理论教学,讲授所涉及的知识点,通过实例开发掌握c语言的语法、语句。 “任务驱动”教学模式打破了程序设计类课程一贯采用的“语法”教学模式,以“实例 为主线展开,重在分析算法设计、数据组织、编程思路,以培养学生创新能力和研究能力。 分支程序设计的引入 题目一一回文数: 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位 相同。 特点:给出一个数,可能是回文数,也可能不是。是输出该数,否则不输出。用到条件 判断。 假0 单分支形式格式 表达式 f(表达式划 语句: 真非o 例 X=1;ye2: 语句 if (xy) printf%dn,x对 printf("%d\n",y); 双分支形式格式 真非o) f(表达式) 表达式 语句1: else 语句2 语句1 语句: 例 if(a>b) x=b; “回文数”问题求解 首先要从5位数中将每一位分解出来。因为整数相除,商只有整数部分。可以用 12321/10000得到万位数的“1”,结合取余运算得到其他位
教学实例 本栏目是基于“任务驱动”教学模式的部分实例。我们调整传统教学内容的先后顺序, 在讲解语句、语法前先提出“任务”,以“任务驱动”方式引导学生学习,以程序编制牵引 理论教学,讲授所涉及的知识点,通过实例开发掌握 C 语言的语法、语句。 “任务驱动”教学模式打破了程序设计类课程一贯采用的“语法”教学模式,以“实例” 为主线展开,重在分析算法设计、数据组织、编程思路,以培养学生创新能力和研究能力。 分支程序设计的引入 题目——回文数: 一个 5 位数,判断它是不是回文数。即 12321 是回文数,个位与万位相同,十位与千位 相同。 特点:给出一个数,可能是回文数,也可能不是。是输出该数,否则不输出。用到条件 判断。 单分支形式格式 if (表达式) 语句; 例 x=1; y=2; if (x>y) printf("%d\n", x); printf("%d\n", y); 双分支形式格式 if (表达式) 语句 1; else 语句 2; 例 if(a>b) x=a; else x=b; “回文数”问题求解 首先要从 5 位数中将每一位分解出来。因为整数相除,商只有整数部分。可以用 12321/10000 得到万位数的“1”,结合取余运算得到其他位

ax/10000 产分解出万位/ b-%10000/1000: 严分解出千位/ c-x%1000/100 P分解出百位/ d-%10a/10: 严分解出十位/ c%10 严分解出个位/ 程序源码 main( long ge.shiqian.wan.x: scanf"%d”,& wan=X/10000 qian=x%10000/1000 shi-x%100/10: 8e-x%10 f®e=wan品&shi=can同 个位等于万位并且十位等于千位/ printf["this number is a huiwen n"); ekse printf["this number is not a huiwen\n"):) 循环程序设计 圈目一一“酸子吃桃“: 服子第一天摘了若干个桃子,当即吃了一半,还不过意。又多吃了一个。第二天又将剩 下的忧子吃了一半,又多吃了一个。以后每天都吃掉前一天剩下的一半零一个。到第十天想 吃时,只剩下一个桃子了,问第一天共捕了多少桃子? 月题分析: 设x1为前一天桃子数,没2为第二天桃子数。则 x2=x1/2-1,x1=x2+102 x3-=2/21,x2=x3+1]*2 以此类推:×前=后+1]2: 从第10天可以类推到第1天,是一个循环过程. 被以前所学知识。每一天都要写一条语句。如果一百天呢?
a=x/10000; /*分解出万位*/ b=x%10000/1000; /*分解出千位*/ c=x%1000/100; /*分解出百位*/ d=x%100/10; /*分解出十位*/ e=x%10; /*分解出个位*/ 程序源码 main( ) { long ge,shi,qian,wan,x; scanf("%ld",&x); wan=x/10000; qian=x%10000/1000; shi=x%100/10; ge=x%10; if (ge==wan&&shi==qian) /*个位等于万位并且十位等于千位*/ printf("this number is a huiwen\n"); else printf("this number is not a huiwen\n");} 循环程序设计 题目——“猴子吃桃”: 猴子第一天摘了若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天又将剩 下的桃子吃了一半,又多吃了一个。以后每天都吃掉前一天剩下的一半零一个。到第十天想 吃时,只剩下一个桃子了。问第一天共摘了多少桃子? 问题分析: 设 x1 为前一天桃子数,设 x2 为第二天桃子数, 则 x2=x1/2-1, x1=(x2+1)*2 x3=x2/2-1, x2=(x3+1)*2 以此类推: x 前=(x 后+1)*2 ; 从第 10 天可以类推到第 1 天,是一个循环过程。 按以前所学知识,每一天都要写一条语句。如果一百天呢?

可以利用C语言提供的“循环”语句, 循环控制结构一般由三部分组成: 进入条件:满足进入条件进入循环体, 退出条件:满足退出条件结束循环。 循环体:循环体需要完成的功能《香要重复执行的语句) 循环语句的执行过程 条件成立? 执行重复工作 使用形式: whle(表达式》 循环体语句: 特点: 先列断表达式,条件成立执行循环语句,不成立则不执行。 例: sum-0:i=1: while(is10) sumt=l月 4时 “鞭子吃桃”问题求解 程序源码 main()
可以利用 C 语言提供的“循环”语句。 循环控制结构一般由三部分组成: 进入条件:满足进入条件进入循环体。 退出条件:满足退出条件结束循环。 循 环 体:循环体需要完成的功能(需要重复执行的语句) 循环语句的执行过程 使用形式: while (表达式) 循环体语句; 特点: 先判断表达式,条件成立执行循环语句,不成立则不执行。 例: sum=0;i=1; while(i<10) { sum+=i; i++; } “猴子吃桃”问题求解 程序源码 main() {

int dav.x1,x2; day-9; x2=1 while由yp0) x1-02+11*2 俨第一天的桃子数是勇2天桃子数加1后的2倍/ x2=×1 day; printf("the totalis %dvn",x): 数组的明入 恶目一一求素数: 使用筛选法求100以内的所有素数 月题分析: 素数:是这样一个数。它大于1,且只有1和它自身这样两个正因数。除了1和白身以 外,还有其他正因数的数是合数。 静选法:去掉不满足条件的数。留下满足条件的数。 思路: 1想象将10个数看作石子和沙子,让石子代表素数:让沙子代表丰素数。设计一个辩 子,只要将沙子(丰素数》静走,到下的就是石子(素数)了: 2根据素数的定义,只要不能被2、3、4“的整除的数。 是否素数 0 0 整数 99 100 由于要记录这100个数,需要定文100个变量.这样显然银麻倾. 月题提出:能不能像数学一样,用数组米保存这样的数? 引入数组概念: 数组的定义类亚说明符数组名【常量表达式】 例:intp_number[1oo啡
int day,x1,x2; day=9; x2=1; while(day>0) { x1=(x2+1)*2; /*第一天的桃子数是第 2 天桃子数加 1 后的 2 倍*/ x2=x1; day--; } printf("the total is %d\n",x1); } 数组的引入 题目——求素数: 使用筛选法求 100 以内的所有素数 问题分析: 素数:是这样一个数,它大于 1,且只有 1 和它自身这样两个正因数。除了 1 和自身以 外,还有其他正因数的数是合数。 筛选法:去掉不满足条件的数,留下满足条件的数。 思路: 1.想象将 100 个数看作石子和沙子,让石子代表素数;让沙子代表非素数。设计一个筛 子,只要将沙子(非素数)筛走,剩下的就是石子(素数)了。 2.根据素数的定义,只要不能被 2、3、4 …… 的整除的数。 是否素数 1 1 0 1 ... 0 0 整数 1 2 3 4 5 ... 99 100 由于要记录这 100 个数,需要定义 100 个变量。这样显然很麻烦。 问题提出:能不能像数学一样,用数组来保存这样的数? 引入数组概念: 数组的定义 类型说明符 数组名 [ 常量表达式 ] 例: int p_number[100];

float x[10]; 说明: 1数组名的第一个字符应为英文字母: 2.用方括号将常量表达式括起: 3.常量表达式定义了数组元素的个数: 4.数组下标从0开始。如果定义4个元素,是从第0个元素至第4个元素: 例如intx4l定义了4个数组元素如下: x01,x1,x2x3 这是4个带下标的变量,这4个变量的类型是相同的。 5.常量表达式中不允许包含变量: 例如intn; n=4: inta:不合法! 数组初始化:是定义数组完成赋初值的任务 例如inta5=(3,5,4,1,2h a01=3;a1=5;a21=4 a3)=1;al4=2: 在素数问题中可以使用数组,让下标就是100以内的数,让数组元素的值作为筛去与否 的标志。比如筛去以后让元素值为1
float x[10]; 说明: 1.数组名的第一个字符应为英文字母; 2.用方括号将常量表达式括起; 3.常量表达式定义了数组元素的个数; 4.数组下标从 0 开始。如果定义 4 个元素,是从第 0 个元素至第 4 个元素; 例如 int x[4] 定义了 4 个数组元素如下: x[0], x[1], x[2], x[3] 这是 4 个带下标的变量,这 4 个变量的类型是相同的。 5.常量表达式中不允许包含变量; 例如 int n; n = 4; int a[n]; 不合法! 数组初始化:是定义数组完成赋初值的任务 例如 int a[5] = { 3, 5, 4, 1, 2 }; a[0] = 3; a[1] = 5; a[2] = 4; a[3] = 1; a[4] = 2; 在素数问题中可以使用数组,让下标就是 100 以内的数,让数组元素的值作为筛去与否 的标志。比如筛去以后让元素值为 1