第一篇:C语言程序设计教学安排
C语言程序设计教学安排
本课程的任务是结合一般数值计算向学生介绍计算机程序设计的基本知识,使学生掌握C语言的基本内容及程序设计的基本方法与编程技巧,了解进行科学计算的一般思路,培养学生应用计算机解决和处理实际问题的思维方法与基本能力,为进一步学习和应用计算机打下基础。本课程学时总计32学时。
二、课程内容、基本要求与学时分配
㈠ C语言的基本概念
3学时
1.了解C语言的特点及发展
2.掌握程序的基本结构与书写格式
3.掌握头文件、数据说明、函数的开始和结束标志。
㈡ 数据类型及其运算
2学时
1.掌握数据类型(基本类型、构造类型、指针类型、空类型)及其定义方法。
2.掌握运算符的种类、运算优先级、结合性。
3.掌握不同类型数据间的转换与运算。
4.掌握表达式类型(赋值表达式、算术表达式、关系表达式、逻辑表达式、条件表达式、逗号表达式)和求值规则。
㈢ 基本语句
2学时
1.掌握表达式语句、空语句、复合语句。
2.掌握数据的输入/输出和输入/输出函数。
3.掌握go to 语句和语句标号的使用。
㈣ 选择结构
2学时
1.掌握用if语句实现选择结构。
2.掌握用switch语句实现多分支选择结构。
㈤ 循环结构
4学时
1.掌握for循环结构。
2.掌握while和do while循环结构。
3.掌握continue、break、return语句。
4.掌握循环的嵌套。
㈥ 数组的定义和引用
4学时
1.掌握一维数组和多维数组的定义、初始化和引用。
2.掌握字符串与字符数组。
㈦函数
6学时
1.掌握库函数的正确调用。
2.掌握函数的定义方法。
3.掌握函数的类型和返回值。
4.掌握形式参数与实在参数的区别,参数值的传递。
5.掌握函数的一般调用和嵌套调用,学会递归调用。
6.掌握局部变量和全局变量。
7.掌握变量的存储类型(自动、静态、寄存器、外部),变量的作用域和生存期。
8.了解内部函数和外部函数。
㈧编译预处理
1学时
1.掌握编译预处理的概念和特点
2.了解带参数的宏定义及其使用,掌握不带参数的宏定义及其使用。
3.掌握“文件包含”的概念和使用。
㈨指针
8学时
1.掌握指针的概念及指针的定义。
2.掌握指针运算。
3.掌握指向变量、数组、字符串、函数的指针变量。
4.掌握用指针作函数参数。
5.掌握指针数组和指向指针的指针的概念及其定义方法,了解main函数的命令行参数。
㈩结构与联合 2学时
1.掌握结构和联合类型数据的定义方法。
2.掌握结构和联合类型数据的引用方法。3.掌握指向结构体的指针变量。3.了解用typedef 定义类型的方法。
(十一)文件操作
2学时
1.掌握文件类型指针(file类型指针)。
2.掌握文件的打开与关闭(fopen和fclose函数)。
3.掌握文件的读与写(fprintf和fscanf函数)。
三、说明
本课程的先修课程为《计算机文化基础》和《高等数学》
四、课程使用的教材和主要参考书
使用的教材:《C程序设计》
潭浩强 著
清华大学出版社
主要参考书:《C语言程序设计》 王树义 钱达源 编著 大连理工大学出版社
第二篇:C语言程序设计实验安排
C语言实验指导
实验一 顺序结构程序设计(2学时)
一、实验目的熟悉在VC运行环境下,编辑调试C语言程序的一般步骤。掌握顺序结构程序设计的基本思想和基本方法。
二、实验要求
1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。
3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。
5.最后提交带有注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。
6.源程序注释信息可以包括以下几方面内容:
⑴ 程序功能描述。
⑵ 程序版本号、创作日期。
⑶ 作者信息描述:班级、学号、姓名。
⑷ 问题分析描述。
⑸ 算法设计描述。
⑹ 关键语句注释说明。
⑺ 调试运行过程中出现的错误及改正方法。
⑻ 输入数据样例。
⑼ 输出数据样例。
三、实验内容
以下两题,任选其一解答。
你知道淄博到北京的地面距离是多少千米吗,淄博到纽约的地面距离又是多少千米呢?说不上来了吧。还是让我们编一个程序来计算一下吧。
1.已知地球的平均半径为6371千米,假设在地球的同一纬度上,有两个处于不同经度的城市A、B,编程序求出这两个城市之间的地面距离。
输入数据样例:例如,欲求北纬30度上东经10度到东经50度的距离,输入格式应为:30 10 50
参考测试数据:
输入:0 0 180 输出:20015.08
输入:30 0 90 输出:8397.7
2输入:60 0 45 输出:2453.20
2.地球的平均半径为6371千米,已知地球上两个城市A、B的经度和纬度,编程序求出这两个城市之间的地面距离。
提示:球面上两点之间的最短距离,等于过这两点以球心为圆心的圆上,这两点之间劣弧的长度。(即这两点与球心之间的连线构成的夹角所对球面劣弧的长度)。
建议你自己一步步推导出公式,而不要照搬网上的现成公式。
四、常见问题
疑问1:这分明是两道数学题啊,能否将数学公式提供给我们呢,我们的主要任务不是编写程序吗?
答:建立数学模型也是编程序的一部分。学会分析解决现实中遇到的问题,是我们学习的重要目标。
疑问2:这个问题好像属于球面几何的范畴,用平面几何可以求解吗?
答:这个问题的确涉及到球面几何,但是也的确可以利用投影以及平面几何方法来求解。
实验二 选择结构程序设计(2学时)
一、实验目的
掌握选择结构程序设计的一般方法及选择结构程序的调试方法。
二、实验要求
1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。
3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。
5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。
6.源程序注释信息可以包括以下几方面内容:
⑴程序功能描述。
⑵程序版本号、创作日期。
⑶作者信息描述:班级、学号、姓名。
⑷问题分析描述。
⑸算法设计描述。
⑹关键语句注释说明。
⑺调试运行过程中出现的错误及改正方法。
⑻输入数据样例。
⑼输出数据样例。
三、实验内容
你知道你生日那天是星期几吗,还有你知道你爸爸生日那天是星期几吗?你可能会说:可以查万年历啊。那么,不查万年历你能计算出来吗?
以下两题,任选其一解答。
1.编程序实现:输入一个年份y,求出从公元1年1月1日到y年1月1日,总共有多少天,并求出y年的1月1日是星期几。
2.编程序实现:输入任意一个日期的年、月、日的值,求出从公元1年1月1日到这一天总共有多少天,并求出这一天是星期几。
四、常见问题
疑问1:闰年的规律是不是四年一闰?
答:四年一闰是儒略历(儒略也就是凯撒大帝)的置闰规则。我们现在使用的是格里高利历,置闰规则是每400年97闰。
疑问2:公元1年1月1日是星期几呢?
答:星期一。
疑问3:据说从儒略历改为格里高利历时,将1582年10月4日的下一天定为格里高利历的10月15日,中间销去了10天,这会不会影响星期几的计算?
答:这个调整是对儒略历误差的纠正,并不会影响总天数和星期几的计算。
疑问4:这里计算总天数,好像要用到循环程序吧?
答:其实根据闰年的置闰规则,不使用循环也可以计算出来总天数。当然,你想使用循环编写该程序也是可以的。
实验三 循环结构程序设计(2学时)
一、实验目的掌握循环结构程序设计的一般方法及循环结构程序的调试方法。
二、实验要求
1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。
3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。
5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。
6.源程序注释信息可以包括以下几方面内容:
⑴程序功能描述。
⑵程序版本号、创作日期。
⑶作者信息描述:班级、学号、姓名。
⑷问题分析描述。
⑸算法设计描述。
⑹关键语句注释说明。
⑺调试运行过程中出现的错误及改正方法。
⑻输入数据样例。
⑼输出数据样例。
三、实验内容
以下两题,任选其一解答。
1. 海萍夫妇为了彻底告别“蜗居”生活,痛下决心贷款60万元购买了一套三居室。若贷款月利率为0.5%,还款期限为120个月,还款方式为等额本金还款法(即贷款期限内每期以相等的额度偿还贷款本金,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。
2. 若还款方式采用等额本息还款法(即贷款期限内每期以相等的额度偿还贷款本息,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。
四、常见问题
疑问1:等额本息还款法每个月的还款额怎么计算,应该有个公式吧,要不然怎么计算出来每个月应还的利息与本金?
答:的确有一个计算公式。当然你可以自己推导出来(这样你会很有成就感!),要不然就从网上搜索出来。
实验四 循环程序综合应用(4学时)
一、实验目的:
掌握循环结构程序设计的一般方法及循环结构程序的调试方法,能够综合运用顺序、选择和循环结构解决一般难度的实际应用问题。
二、实验要求
1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。
3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。
5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。
6.源程序注释信息可以包括以下几方面内容:
⑴程序功能描述。
⑵程序版本号、创作日期。
⑶作者信息描述:班级、学号、姓名。
⑷问题分析描述。
⑸算法设计描述。
⑹关键语句注释说明。
⑺调试运行过程中出现的错误及改正方法。
⑻输入数据样例。
⑼输出数据样例。
三、实验内容
以下两题,任选其一解答。
1.编程序实现如下功能:输入任意一个年份和月份,按以下格式输出该月份的公历日历。
要求由程序计算出来该月份的1日是星期几,并用循环控制打印。打印样例如下:
2012年日历
==========
9月
---------日 一 二 三 四 五 六2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30-------------------------
2.编程序实现如下功能:输入任意一个年份,按以下格式输出该年份全年的公历日历。要求由程序计算出来每个月份的1日是星期几,并用循环控制打印。
四、常见问题
疑问1:如何控制某个月1日的打印位置?
答:先由程序计算出来该月份的1日是星期几,然后控制在打印“1”之前打印相应个数的空格。
疑问2:如何控制每周和每月的打印换行?
答:可以根据当前这一天的打印位置控制每周的打印换行,并根据该月份的天数控制每月的打印换行。
实验五 字符串处理综合应用(4学时)
一、实验目的
掌握字符串处理的一般方法及字符串处理应用程序的调试方法,能够综合运用选择、循环结构和数组、指针解决一般难度的实际应用问题。
二、实验要求
1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。
3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。
5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。
6.源程序注释信息可以包括以下几方面内容: ⑴程序功能描述。
⑵程序版本号、创作日期。
⑶作者信息描述:班级、学号、姓名。
⑷问题分析描述。
⑸算法设计描述。
⑹关键语句注释说明。
⑺调试运行过程中出现的错误及改正方法。
⑻输入数据样例。
⑼输出数据样例。
三、实验内容
以下两题,任选其一解答。
1.编程实现,输入一个整数的小写金额值(即不考虑角和分),转化为大写金额值并输出。先实现基本功能,如输入1002300,可以输出“壹佰零拾零万贰仟叁佰零拾零元整”。
2.编程实现,输入一个小写金额值,转化为大写金额值输出。要求实现相对完善的功能,如输入1002300.90,应该输出“壹佰万贰仟叁佰元零玖角整”。
四、常见问题
疑问1:如何才能分离出整数中的每一位数字?
答:可以利用整数的求余数和除法运算实现数字的分离,同时将分离出的数字存入到一个事先定义好的数组中,每个数组元素只存储一位数字。
疑问2:若不能确定整数的实际位数,如何控制分离过程?
答:可以通过循环控制数字的分离过程,每循环一次分离出来当前的最末一位,然后去掉最末一位,直至分离出所有的位。
疑问3:如何控制给某位数字添加合适的数量单位,如万、仟、佰、拾、元?
答:可以根据该数字在原小写数值中的位置进行控制,如第0位单位为“元”,第1位单位为“拾”,依此类推。
实验六 文件应用程序设计(2学时)
一、实验目的掌握文件应用程序设计的一般方法及其调试方法。
二、实验要求
1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。
3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。
5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。
6.源程序注释信息可以包括以下几方面内容:
⑴程序功能描述。
⑵程序版本号、创作日期。
⑶作者信息描述:班级、学号、姓名。
⑷问题分析描述。
⑸算法设计描述。
⑹关键语句注释说明。
⑺调试运行过程中出现的错误及改正方法。
⑻输入数据样例。
⑼输出数据样例。
三、实验内容
以下两题,任选其一解答。
1. 海萍夫妇为了彻底告别“蜗居”生活,痛下决心贷款60万元购买了一套三居室。若贷款月利率为0.5%,还款期限为120个月,还款方式为等额本金还款法(即贷款期限内每期以相等的额度偿还贷款本金,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。要求将输出结果写入到数据文件中。
2. 若还款方式采用等额本息还款法(即贷款期限内每期以相等的额度偿还贷款本息,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。要求将输出结果写入到数据文件中。
第三篇:C语言程序设计
1.Problem A: Hello world!Description Xiao_ming有两个哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放学回家,父母分别跟他们打招呼。
Input 无
Output 请输出: Hello Da_min, Hello Er_min, Hello Xiao_ming!
Sample Input Sample Output Hello Da_min, Hello Er_min, Hello Xiao_ming!
HINT 请注意换行符
Append Code #include
printf(“Hello Da_min,n”);
printf(“Hello Er_min,n”);
printf(“Hello Xiao_ming!n”);} 2.Problem B: 求圆的面积和周长 Description 从键盘输入圆的半径,求圆的面积和周长,圆周率取3.14。
Input 输入一个浮点型数据,有效数字不会超过十进制的6位。
Output 输出为两行。
第一行为圆的面积,第二行为圆的周长,格式见sample。
Sample Input 3
Sample Output Area: 28.260000 Perimeter: 18.840000
HINT 了解浮点类型的输入、输出和算术运算符
Append Code 法一
#include
#include
double r;
scanf(“%d”,&r);
printf(“Area: %lfn”,pi*r*r);
printf(“Perimeter: %lfn”,2*pi*r);
}
3.Problem C:平均值 Description 求3个数的平均值。
Input 输入只有一行,为3个较小的整数。
Output 输出为这3个整数的平均值,保留3位小数。
Sample Input 1 2 3 Sample Output 2.000
HINT 注意除法运算对整型数据和浮点型数据是不一样的。
Append Code #include
4.Problem D: 求字符的值 Description 从键盘输入3个字符(不含双字节字符),分别输出每个字符的十进制值(ASCII码)、八进制值和十六进制值。
Input 输入为3个字符。
Output 输出为3行。
每一行为每个字符(对应输入顺序)的十进制、八进制和十六进制值,用空格分隔开。每个输出的值占3个字符,不足3个字符前面补0。
Sample Input 0 A
Sample Output 048 060 030 032 040 020 065 101 041
HINT 了解字符值的存储和整型的关系。
Append Code #include
5.Problem A: 最简单的程序 Description 输出一行“Hello world!”。
Input 无
Output Hello world!
Sample Input Sample Output Hello world!
HINT Append Code #include
printf(“Hello world!”);}
6.Problem B: 算术基本运算 Description 计算两整数x和y(0 Input 输入只有一行,格式见sample。 Output 输出为多行,按顺序每行输出x,y的和、差、积、商、余数、x的平方和y的三次方,格式见sample Sample Input x = 11, y = 3 Sample Output x + y : 14 xy : %dn“,x-y); printf(”x * y : %dn“,x*y); printf(”x / y quotient: %d, remainder: %dn“,x/y,x%y); printf(”x ^ 2 : %dn“,x*x); printf(”y ^ 3 : %dn“,y*y*y);} 7.Problem C: 自增自减运算 Description C语言中有自增运算++、自减运算--,并且可以前置和后置。 编写一个程序:对输入的一个整数a,输出a++、a--、++a、--a的值。 Input 一个整数a,a是很小的整数。 Output 输出为5行,第一行为a的值,后面依次为--a、a--、a++、++a的值。 5行输出纵向a要对齐,“:”对齐,“:”前后各一个空格,后面的数值不用对齐。每行行尾都有回车。 Sample Input 0 Sample Output a : 0--a :-1 a--: 0 a++ : 0 ++a : 1 HINT Append Code #include : %dn“,a);printf(”--a : %dn“,--a);a=x;printf(” a--: %dn“,a--);a=x;printf(” a++ : %dn“,a++);a=x;printf(”++a : %dn“,++a);} 8.Problem F: 绝对值 Description 求整型数据和浮点型数据的绝对值。 Input 输入两个数,第一个是整数,第二个是浮点数。 Output 输出为两行,第一行为整数的绝对值,第二行为浮点数的绝对值,注意浮点数的绝对值不输出无意义的0。 Sample Input-1 1 Sample Output 1 1 HINT 求绝对值可以用标准库函数来完成,也可以自己判断。注意浮点数的输出格式。求绝对值的函数在哪个头文件?貌似很多人会搞错,包括很多编书的人! Append Code #include int n; float m; scanf(”%d%f“,&n,&m); //n=abs(n); //m=fabs(m); if(n<0) { n=-n; } if(m<0) { m=-m; } printf(”%dn“,n); printf(”%g“,m); return 0;} 9.Problem A: 奇数还是偶数? Description 输入一个整数,判读它是奇数还是偶数。 Input 输入只有一行,为一个100以内的正整数。 Output 输出为一行。 若输入为偶数则输出“even”,奇数输出“odd”。Sample Input 30 Sample Output even HINT 用整数运算可以解决,练习“?:”表达式。 Append Code #include int n; scanf(”%d“,&n); if(n>=0&&n<=100){ if(n%2==0)printf(”evenn“); else printf(”oddn“); } return 0;} 10.Problem B: 简单的打折计算 Description 商店规定:消费满n元,可以打八八折。设某件商品标价m元,输入购买的件数x,计算出需要支付的金额(单位:元),精确到分。 Input 输入只有一行,三个整数m、n和x,且0 Sample Input 95 300 4 Sample Output 334.40 HINT 了解浮点型的输出控制,注意整型和浮点型混合运算过程中的数据类型转换。 Append Code #include int m,x,n,a; float b; scanf(”%d%d%d“,&m,&n,&x); 0 x m a=m*x; if(a>n) b=0.88*a; else b=a; printf(”%.2fn“,b); } 11.Problem C: 判断闰年 Description 输入一个正整数的年份,判断是否为闰年。 Input 输入只有一行,为一个10000以内的正整数。 Output 输出为一行。 若输入为闰年偶数则输出“Yes”,否则输出“No”。 Sample Input 2010 Sample Output No HINT 了解逻辑运算符和关系运算符。 Append Code #include int x; scanf(”%d“,&x); if(x>0&&x<10000) { if(x%4==0&&x%100!=0) printf(”Yesn“); else if(x%400==0) printf(”Yesn“); else printf(”Non“); } else printf(”error“);} 12.Problem D: 水仙花数 Description 如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。如:13+53+33=153。 Input 一个整数x,100<=x<=999。 Output x是水仙花数,则输出“YES”,否则为“NO”。 Sample Input 153 Sample Output YES HINT Append Code #include int a,b,c,x; scanf(”%d“,&x); a=x/100; b=x/10%10; c=x%10; if(x==a*a*a+b*b*b+c*c*c) printf(”Yes“); else printf(”No“);} 13.Problem E: 三个数比较大小 Description 从键盘上输入0~100之间的三个数,按从小到大的顺序输出。 Input 输入只有一行,为三个整数。 Output 按从小到大输出这三个数。 Sample Input 15 10 20 Sample Output 10 15 20 HINT 用if语句判断各种情况可以解决这个问题。 Append Code #include int a,b,c; scanf(”%d%d%d“,&a,&b,&c); if(a>=b) { if(b>=c) printf(”%d %d %dn“,c,b,a); else if(c>=a) printf(”%d %d %dn“,b,a,c); else printf(”%d %d %dn“,b,c,a); } else { if(a>=c) printf(”%d %d %dn“,c,a,b); else if(b>=c) printf(”%d %d %dn“,a,c,b); else printf(”%d %d %dn“,a,b,c); } } 14.Problem F: 奇怪的求和之一 Description 给定3个正整数a、b和c,按照如下规则求和: 如果这个数字是偶数,则累加到和中; 如果这个数字是奇数,则将大于该数的最小偶数累加到和中。 Input 三个正整数,均在100以内。 Output 一个和。 Sample Input 2 3 5 Sample Output 12 HINT 如果不会使用分支语句,可使用条件运算符判断到底将哪个数累积到和中。 Append Code #include int a,b,c; scanf(”%d%d%d“,&a,&b,&c); if(a%2!=0)a++; if(b%2!=0)b++; if(c%2!=0)c++; printf(”%dn“,a+b+c); } 15.Problem G: 你过线了吗? Description 经过四年的学习,你决定报考我国著名的“285”高校之一的北青大学,经过认真的复习,残酷的考试,终于知晓了自己的考试成绩,也知道了北青大学的录取分数线,请你编程判断,自己过线了吗? Input 输入有2行,第一行有4个正整数,分别表示三门课程的分数线以及总分分数线。第二行有3个非负整数,分别表示你考的三门课程的成绩。 Output 如果你的三门课程成绩都不低于相应课程的分数线,且你的考试总分也不低于北青大学的总分分数线要求,则输出“congratulations”,否则输出“sorry”。 Sample Input 70 80 70 240 80 80 82 Sample Output congratulations HINT 如果你不会使用分支语句,同样可以使用条件运算符实现该程序。 Append Code #include int a,b,c,d,e,f,g,h; scanf(”%d %d %d %dn%d %d %d“,&a,&b,&c,&d,&e,&f,&g); h=e+f+g; if(e>=a&&f>=b&&g>=c&&h>=d) printf(”congratulations“); else printf(”sorry“);} 16.Problem I: A+B Problem(II): Input/Output Practice Description 计算a+b,0<=a,b<1000。 Input 输入的第一行是一个整数N,后面有N对整数a和b,每对a和b占一行,a,b用空格分开。 Output 每行输出一个a+b的和,顺序与输入对应。 Sample Input 2 1 2 10 20 Sample Output 3 30 HINT N给出了测试样例数,用for循环处理方便。 Append Code #include int n,a,b,i;Scanf(“%d”,&n);For(i=0;i 17.Problem H: A+B Problem Description 计算a+b,0<=a,b<1000。 Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。 Output 每行输出一个a+b的值,顺序与输入对应。 Sample Input 1 2 10 20 Sample Output 3 30 HINT OJ系统上测试输入结束符为EOF(End Of File),其值为-1。用scanf()把文件所有内容读完后,会读到EOF,所以可以用来判断输入是否完成,测试时可以用Ctrl+Z产生EOF。本题解法参看FAQ。Append Code #include int a,b; while(scanf(”%d%d“,&a,&b)!=EOF){ printf(”%dn“,a+b); } return 0;} 18.Problem A: 判断是否是元音字母 Description 输入一个英文字母,判断是否是元音字母。元音字母是:a,e,i,o u,A,E,I,O,U Input 输入一个英文字母 Output 是元音字母,输出“yes”,否则输出“no”,行尾没有回车。 Sample Input A Sample Output yes HINT Append Code #include char ch; scanf(”%c“,&ch); if(ch>='A'&&ch<='Z') ch=ch+32; if(ch=='a') printf(”yes“); else if(ch=='e') printf(”yes“); else if(ch=='i') printf(”yes“); else if(ch=='o') printf(”yes“); else if(ch=='u') printf(”yes“); else printf(”no“); } 19.Problem B: 按顺序输出三个数 Description 对于输入的3个整数,按照从小到大的顺序输出。 Input 输入3个int类型内的整数,两两之间用一个空格隔开。 Output 按照从小到大的顺序输出上述三个数,两两之间用一个空格隔开。 Sample Input 2 1 3 Sample Output 1 2 3 HINT Append Code #include int a,b,c,temp; scanf(”%d%d%d“,&a,&b,&c); if(a { temp=a; a=b; b=temp; } if(a { temp=a; a=c; c=temp; } if(b { temp=b; b=c; c=temp; } printf(”%d %d %dn“,c,b,a);} 20.Problem E: Description 判断输入整数的奇偶性。 判断奇偶数 Input 输入为一个整数。 Output 输出只有一行,代表判断结果。如果输入的整数n是一个偶数,输出: n is an even number.否则输出: n is an odd number.见样例。 Sample Input 12 Sample Output 12 is an even number.HINT Append Code #include int a; scanf(”%d“,&a); if(a%2==0) printf(”%d is an even number.“,a); else printf(”%d is an odd number.“,a);} 21.Problem A: 判断两个整数的大小关系 Description 输入2个整数a和b,如果a>b,则输出1,否则输出0。 Input 两个整数a和b,均不超过int类型的表示范围。 Output 表示a>b的结果:如果a>b,则输出1,否则输出0。 Sample Input 3 4 Sample Output 0 HINT Append Code #include printf(”1“); else printf(”0“);return 0;} 22.Problem D: 成绩的等级 Description 把百分制的考试成绩转换成五级制的成绩: 90~100:Excellent 80~89:Good 70~79:Average 60~69:Pass 0~59:Failing 不在0~100之间的输入是非法数据,输出“Error”。 Input 输入多行,每行一个整数。 Output 输入所对应的成绩等级。 Sample Input-1 81 92 35 68 72 100 Sample Output Error Good Excellent Failing Pass Average Excellent HINT 用switch语句解决这个问题比较方便。 Append Code #include int score; while(scanf(”%d“,&score)!=EOF) { if(score<0||score>100) printf(”Errorn“); else { switch(score/10) { case 0: case 1: case 2: case 3: case 4: case 5:printf(”Failingn“);break; case 6:printf(”Passn“);break; case 7:printf(”Averagen“);break; case 8:printf(”Goodn“);break; case 9: case 10:printf(”Excellentn“);break; } } } return 0;} 23.Problem E: 输出是m的倍数或n的倍数、但不是 m和n的公倍数的数 Description 输出1~k之间是m的倍数或n的倍数、但不是m和n的公倍数的数,其中1<=m,n Input 输入三个整数,依次为k、m、n。 Output 从小到大输出符合题意的所有整数,两数之间用一个空格分开。 Sample Input 15 2 3 Sample Output 2 3 4 8 9 10 14 15 HINT 难点在于输出格式的控制:空格在数的中间,学会用循环时边界情况的特殊处理。 Append Code #include a=m;else a=n;printf(”%d“,a);for(i=a+1;i<=k;i++){ } if((i%m==0&&i%n!=0)||(i%n==0&&i%m!=0)) printf(” %d“,i);} return 0; 24.Problem B: 两整数相加减 Description 计算a+b和a-b。 Input 输入为一对整数a和b。a,b用空格分开。 Output 输出a+b和a-b的计算结果,各占一行。 Sample Input 1 2 Sample Output 3-1 HINT Append Code #include printf(”%dn“,a+b); printf(”%dn“,a-b);} 25 Problem C: 它满足条件吗? Description 需要判断给定的一个整数是否同时满足如下三个条件: 1.它是一个完全平方数。2.它是一个偶数。3.它是一个正数。 注:若一个数能表示成某个自然数的平方的形式,则称这个数为完全平方数。例如: 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484,529 Input 一个int范围内的整数。 Output 如果输入的数字满足条件,则输出yes,否则输出no。 Sample Input 100 Sample Output yes HINT 注意逻辑表达式判断三个条件的顺序。如果你不会使用分支语句,同样可以使用条件运算符实现该程序。 库函数sqrt()可以用于求一个数的平方根。 Append Code #include if(a==sqrt(a)*sqrt(a)&&a%2==0&&a>0) printf(”yes“); else printf(”no“);} 26.Problem F: 多路分支 Description 编写一个完整的程序,运行时向用户提问”你考试考了多少分?(0-100)“接受输入后判断其等级并显示出来等级: 优:90<=分数<=100 良:80<=分数<90 中:60<=分数<80 差:0<=分数<60 Input 输入任意一个整数分数值,显示等级;再输入任意一个整数分数值,显示等级;....直到测试数据较充分,可输入-1止。 Output 对任意输入的分数值,输出对应的等级,直到输入的数为-1时才退出运行.Sample Input 102 100 90 80 70 60 50 0-80-1 Sample Output grad must between 0 and 100 优 优 良 中 中 差 差 grad must between 0 and 100 grad must between 0 and 100 HINT Append Code #include int x; while(scanf(”%d“,&x)!=EOF) { if(x<0||x>100) printf(”grad must between 0 and 100n“); else if(x>=90) printf(”优n“); else if(x>=80) printf(”良n“); else if(x>=60) printf(”中n“); else if(x>=0) printf(”差n“); } return 0;} Problem D: 有多少人? Description 学校举行运动会,如果全体学生按照3人一队列队,则多了1个人;如果按照4人一队列队,则多了2个人;如果按照5人一队排队,则多了3个人。请问这个学校有多少学生? Input 一个int类型的正整数N,是学生人数的上界,即:该校学生数不超过N。 Output 所有可能的学生数,每个数占一行。 Sample Input 200 Sample Output 58 118 178 HINT Append Code #include int n,i; scanf(”%d“,&n); for(i==1;i<=n;i++){ if(i%3==1&&i%4==2&&i%5==3) printf(”%dn“,i);} return 0;} Problem C: 正负数各有几个? Description 输入若干个整数,求其中正数、负数的个数。 Input 输入分为2行:第一行是一个数字N>0,表示下面有N个整数。第2行是N个整数,都是int类型的。 Output 输出所输入的N个整数的正数个数和负数个数,并用空格分开2个输出。Sample Input 10 2 3 4 5-1-2-3-4-5 Sample Output 5 5 HINT 貌似还有一种叫做0的数。 Append Code #include int n,a,i,num1=0,num2=0; scanf(”%d“,&n);for(i=0;i { scanf(”%d“,&a); if(a>0) num1++; else if(a<0) num2++; } printf(”%d %dn“,num1,num2); return 0;} Problem A: A+B Problem(III): Input/Output Practice Description 计算a+b,0<=a,b<1000。 Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。当测试样为0 0时表示输入结束,0 0不参与运算。 Output 每行输出一个a+b的值,顺序与输入对应。 Sample Input 1 2 10 20 0 0 Sample Output 3 30 HINT 练习break的使用。 Append Code #include { if(a!=0||b!=0) } printf(”%dn“,a+b); else break; return 0;} 30 Problem B: A+B Problem(IV): Input/Output Practice Description 计算a+b,0<=a,b<1000。 Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。 Output 每行输出一个a+b的值,顺序与输入对应。每个格式样例之间用一个空行分隔开。 Sample Input 1 2 10 20 15 35 Sample Output 3 30 50 HINT 由于输出的和比空行多一个,所以全部计算放在一个循环里是不行的,必须要特殊处理开头或者结尾。 Append Code #include n++; if(n==1) printf(”%dn“,a+b); else printf(”n%dn“,a+b); } return 0;} Problem C: n个数的最大值和最小值 Description 找出n个数中最大的数和最小的数,并将它们的值输出出来。 Input 输入为n+1个整数,都在int类型范围内。这些数可能用若干空格或者换行符分隔开。输入的第1个数为n,表示后续有n个数输入。从输入的第2个数开始,求出直到第n+1个数中最大的数和最小的数。 Output 输出为两行,格式见sample。 Sample Input 3 0 1-1 Sample Output The maximum number is 1.The minimum number is-1.HINT 分隔符是空格还是回车都是空白符,对scanf(”%d“)来说没有区别;先读入n,然后用for循环就很容易控制读入n个数的过程。 Append Code #include int n,i,max,min; scanf(”%d“,&n); int a[n]; for(i=0;i scanf(”%d“,&a[i]); max=a[0]; min=a[0]; for(i=0;i { if(max max=a[i]; if(min>a[i]) min=a[i]; } printf(”The maximum number is %d.n“,max); printf(”The minimum number is %d.“,min); return 0;} 32.Problem D: 求100以内的素数 Description 素数是只能被1和自身整除的正整数,根据数学定义1不是素数。素数也叫质数。 Input 输入为两个整数m和n,满足0<=m<=n<=100。 Output 从大到小输出m~n之间的所有素数,一个素数一行。如果m~n之间没有素数,则不输出任何数。 输出的所有数在两行“=====”之间。 Sample Input 2 12 Sample Output ===== 11 7 5 3 2 ===== HINT 利用素数的数学规律可以很容易的解出此题,题目给出的数据范围是关键。 Append Code #include t=0; for(j=2;j<=sqrt(i);j++) if(i%j==0) t=1; if(t==0&&i>1) printf(”%dn“,i);} printf(”=====“);return 0;} 33.Problem E: 是否构成三角形? Description 给出三个整数,代表三条边的长度,判断这三条边的长度是否能构成一个三角形? Input 第一行是n(1<=n<=100),表示有n组测试数据 接下来有n行,每一行包含三个整数,表示三个边长(1<=边长<=100) Output 如果三条边能构成三角形,输出YES,否则输出NO Sample Input 3 1 2 3 2 8 7 20 20 1 Sample Output NO YES YES HINT Append Code #include {scanf(”%d%d%d“,&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a) printf(”YESn“);else printf(”NOn“);} return 0;} 34.Problem C: 简单的整数排序 Description 对给出的若干整数按从小到大排序。 Input 输入的第一个数为n(n<=1000),后接n个整数。 Output 按从小到大的顺序输出这些整数,每两个整数之间用一个空格分隔开,最后一个整数后面没有空格。 Sample Input 10 3 9 1 5 2 8 5 6 7 3 Sample Output 1 2 3 3 5 5 6 7 8 9 HINT 排序前必须把所有的整数都存储下来。因为只有最多1000个数,1秒的时间足够任何排序算法运行处结果来。 Append Code #include int c,i,n,j; int a[1000]; scanf(”%d“,&n); for(i=0;i scanf(”%d“,&a[i]); for(i=1;i<=n-1;i++) { for(j=0;j { if(a[j]>a[j+1]) { c=a[j]; a[j]=a[j+1]; a[j+1]=c; } } } printf(”%d“,a[0]); for(i=1;i printf(” %d“,a[i]); return 0;} 35.Problem A: Description 购物的路程 Saya和Kudo一起去购物。假定她们逛的街是一条直线,而商铺是这条直线上的一些点。她们将车停在该直线最左端的店铺处,然后从左向右开始逛每一个店铺,然后从最右边的店铺再返回到停车处。你的任务是计算她们走了多少路。 Input 输入有多组。每一组的第一行是N(0 Output 对每组输入,输出她们走的路长。 Sample Input 4 13 89 37 6 7 30 41 14 39 42 0 Sample Output 152 70 HINT Append Code #include int n,i,max,min,a[100001]; while(scanf(”%d“,&n)&&n!=0) { scanf(”%d“,&a[0]); min=max=a[0]; for(i=1;i { scanf(”%d“,&a[i]); if(a[i]>max) max=a[i]; if(a[i] min=a[i]; } printf(”%dn“,(max-min)*2); } return 0;} 36.Problem B: 求累加和 Description 编程求min~max的累加和(含min和max),其中max>=min>0。部分程序已经给出,请填充其中的空白语句,并提交填充后的完整程序。 Input 输入为多行。第一行是一个整数N>0,表示后面有N个测试用例。后面有N行,每行包含2个整数,分别是min和max。 Output 输出为N行,每个测试用例的计算结果占据一行。每行的格式为: case i:sum=s.其中i表示测试用例的编号(从1开始),s是该测试用例对应的累加和(设不超过int的表示范围)。 Sample Input 3 1 10 1 100 1 1 Sample Output case 1:sum=55.case 2:sum=5050.case 3:sum=1.HINT Append Code #include int n,i,j,max,min,sum; scanf(”%d“,&n); for(i=0;i { sum=0; scanf(”%d%d“,&min,&max); if(max==min) printf(”case %d:sum=%d.n“,i+1,min); else { for(j=min;j<=max;j++) sum=sum+j; printf(”case %d:sum=%d.n“,i+1,sum); } } return 0;} 37.Problem G: 顺序输出字母 Description 按字母顺序输出两个字母st和ed之间的所有字母,但不包括st和ed。不输出逆序。 Input 两个字母st和ed,都是大写字母,用一个空格分开。 Output 在一行内按顺序输出st和ed之间的所有字母,但不包括st和ed。例如: 输入为A和E,则输出为BCD; 输入为A和B,则什么字母也不输出,只有一个空行; 输入为E和A,也是什么字母也不输出,只有一个空行。最后要输出一行(行尾不回车): ***END*** Sample Input A C Sample Output B ***END*** HINT Append Code #include char st,ed,a; int i; scanf(”%c%c%c“,&st,&a,&ed); { for(i=st+1;i printf(”%c“,i); printf(”n***END***“); } return 0;} 38.Problem F: 单字母变换 Description Tom和Jack是密码学爱好者,他们在聊天时经常使用一些暗语。他们使用的一种最简单的暗语是:将要说的每句话里面的英文字母变成这个字母之后的某个字母。现在要求你写一个程序,将一个字母变成它之后的某个字母。 Input 输入有2个:一个大写字母c和一个正整数d(0 Output 输出字母c之后的第d个字母。大小写与c一致。如果c之后的某个字母已经超出'Z',则再从字母'A'开始计数。 如:c='A',d=3,则输出应为:D。若:c='Y',d=3,则输出应为:B。 Sample Input A 3 Sample Output D HINT Append Code #include char c; int d; scanf(”%c%d“,&c,&d); if(c+d<='Z') printf(”%c“,c+d); else printf(”%c“,c+d-26); return 0;} 39.Problem B: 登录密码验证 Description 编写一个程序,模拟用户登录系统的密码验证过程。系统提供给用户的密码长度最长为20个字符,若密码输入错误可以再次输入。但为了保证用户密码安全,若连续输入密码错误超过5次就会锁定账号一段时间。 Input 输入为若干个串,至EOF结束。输入的第一个串是用户的正确密码,后面的串为模拟用户登录时的输入的密码。 Output 每次输入错误的密码,输出一个“Wrong!”,若输入的密码为正确的,输出一个“Welcome!”,并结束密码测试。若前5次输入的密码都是错误的,则后面的输入中不管是否有正确的密码都输出“Out of limited!”。 Sample Input abcdefg 123456 kkkkkkkk abcdefg Sample Output Wrong!Wrong!Welcome! HINT 输入可以用scanf(”%s“)处理,密码比较用字符串的比较可以完成。 Append Code #include char a[20],b[20]; int i,j=1; scanf(”%s“,a); while(scanf(”%s“,b)!=EOF) { if(j<=5) { if((strcmp(a,b)==0)) { printf(”Welcome!n“); break; } else printf(”Wrong!n“); j++; } else printf(”Out of limited!n"); } } 40.Problem C: 兔子的繁殖问题 Description 假设一对兔子每月能生一对小兔(一雌一雄),每对小兔出生后的下一个月是没有繁殖能力的,至出生后的第三个月开始又可以每月生一队小兔,问从一对刚出生的小兔开始,经过若干个月后一共有多少兔子(假设在此过程中兔子没有死亡)? 这个问题是意大利数学家菲波那契(Fibonacci)在他1202年出版的《算盘全书》中提出来的,从第一对刚出生的小兔开始每月的兔子数被乘坐菲波那契序列。 Input 输入的第一个数为n,接下来有n个数字。每个数字为一个月份m(m<=45)。 Output 输出为n行,每行为第m个月后的兔子总数。 《C 语言程序设计》主要在计算机软件、计算机网络、计算机应用、通信技术、智能电子、电子信息工程、多媒体以及核工程与核技术等专业中开设,是电子信息类、机械类等工科专业的重要专业基础课。 本校从2001至今,每年都开设《C语言程序设计》课程,由于,我校最开始时的特殊情况,主要把重点放在C语言中的各类重点、难点的语法、语义上,使得学生经过比较复杂和痛苦的过程后,对C语言在使用上很难做到自己编写程序。而且很多学生产生了畏惧心理。 2004年,学院成立计算机科学与技术系,为了更好学习和掌握C语言,计算机科学与技术专业和计算机维护专业(计算机应用技术前身)除了开设《C语言程序设计》课程外,在后续一学期还开设了《C语言程序设计课程设计》,使得计算机专业学生编程思想和能力得到了极大提高。 2005年,为了让我院工科学生更好的掌握C语言编程以及通过四川省计算机二级考试,在《C语言程序设计》课程后设置《C语言程序设计课程设计》,极大地提高了学生的动手机会和能力,过级率显著提高! 2007年,依托我校建设精品课程的契机,我们将C语言中的各个知识点进行重新规整,提出适用于三本院校学生的语言设计学习的方法。我们提出,先了解C语言,再学习C语言,再用C语言的思想。即在开始时让学生初步知道C语言,然后引入比较简单的运算符以及基本输入、输出和简单的顺序结构程序设计。通过这样的方式,我们发现,学生在C语言的学习就不会从开始的时候陷入大量难懂的语法、语义和数据结构中。有了以上铺垫再层层进入,最终进入复杂的各类数据结构以及指针等学习。通过以上的内容规整后,教学效果有明显提高。 《C语言程序设计》教学的几点体会 江西司法警官职业学院欧阳群 摘要:随着科学技术的发展,计算机已普及到各行各业,深入到各级层次,越来越多高校把《C 语言程序设计》作为使用学习编程的入门语言,《C语言程序设计》课程已成为当近计算机教育的一门必修基础课。因而,搞好该门课程的教学具有非常重要而深远的意义。 关键字:C 语言程序设计 教学 算法引言 学习计算机程序设计语言是提高人们计算机知识水平的关键步骤。C语言作为当今最流行的程序设计语言之一,不但成为计算机专业的必修课。而且也越来越多的成为非计算机专业的学习课程。C语言简洁,紧凑使用起来方便,灵活,运算符和数据结构丰富,可移植性好,硬件控制能力高,表达和运算能力强。其运算速度也优于C++。但同时,C语言又是一门学习起来难度较大的语言,同学们反映,学习过程中经常会出现一些问题,对语句没有直观的理解,而是死记硬背,缺乏对一些算法的清楚认识以及缺少对运算符等语法方面的理解,造成编写程序时无法理清楚解题思路,无从入手,在程序调试的过程中不认真分析出错原因,面对枯燥的程序题,便失去了积极性。鉴于上面一些问题,下面笔者从激发学生的学习兴趣、培养学生对方法的理解、如何让学生 处理好语法与算法的关系、加强实践操作等几方面谈谈我的教学体会: 2、在教学过程中要激发学生的学习兴趣 有句话说的好“兴趣与爱好是最好的老师”。为了使学生能尽快地掌握计算机知识,进入计算机的应用领域,在课程讲授过程中,要特别注意培养学生的学习兴趣。很多学生和我说过,他们学习计算机就是从玩游戏开始的。学生们刚接触计算机时都会感到新奇、好玩。这还不能说是兴趣,只是一种好奇。随着课程的不断深入,概念、语法规则、算法等知识的学习加大学习难度,使一部分(甚至是大部分)学生对课程学习产生厌倦情趣。为了把学生对计算机程序设计初期产生的好奇心转变为学习兴趣,授课时我们可以把对定义和规则的讲解与具体问题结合起来,努力把枯燥无味的“语言”讲的生动、活泼。在第一节课上,我们可以给同学展示一些已经做好的程序,让同学们对C能做出些什么程序有一定的了解,并把C和学生曾经学过的其他课程联系起来。例如数学中的很多问题,是C语言初期学习算法时比较好的引例。在课程的进行中,引导学生学一种算法,就尝试在同行课程中应用。我们还可以经常介绍一些趣味性算例,如: “菲波纳契兔子问题”、“水仙花数”、“竞赛记分”等,培养学生的学习兴趣,让大家积极主动、自觉独立地获取知识,打好学习程序设计语言的基础。整个教学过程中应该把解题思路、方法和步骤(即“算法”)当作授课的重点,从而让学生明白如何分析并解决实际问题,逐渐培养学生进行程序设计的正确思维模式。 2、在教学过程中要加强学生对程序的理解 对于一门艺术性的语言,它的价值便是它的实用性和美感。众所周知,英语的美感在于它的发音、而汉语则在于它的象形,它们给人的一种直观感觉就是美。C语言作为一门计算机语言,它的美又在哪里呢?那便是它的可持续性,正确性与实用性,也就是说一个程序我们一眼看上去就能理解它想表达的是什么,所以在教学过程,如何让学生理解好程序,成了入门最重要的一步,例如:我们在学习两个数交换时: main() {int a=1,b=2.c; c=a; a=b; b=c;} 如果只是看c=a,a=b,b=c是相当难理解的,但是,若是加以联想,我有两杯水,要将杯中的水相互交换,便要引入一个空杯了,而这个空杯子正是C,这样问题被轻而易举地理解了,又如,我们在学习排序方法时,由于算法理解起来比较复杂,此时我们要联系生活中的例子,以上体育课中排 队为例按个子高低从小到大排列,并结合程序考虑该如何移动位臵。通过与生活实际相结合,理解相对枯燥难懂的程序算法,放弃传统的死记硬背的方法,无疑可以使原本吃力的学习得到一定的缓解。 3、在教学过程中要让学生正确处理语法与算法的关系。教学中对程序课程教学的一项基本目的是要让学生掌握设计程序的思路并对待处理实现的任务能用计算机语言编写出程序。要让学生完成程序,如何处理算法与语法之间的关系显得犹为重要。算法是程序的核心与灵魂,是程序精华的体现,语法仅仅是一种程序工具,我们在教学过程中不应把重点放在语法规则的教学上,语法是重要,不掌握语法规则就无法编写出正确的程序,但是只学会语法,甚至能把语法背得滚瓜烂熟,也不可能编写好程序。我们应该把重点放在解题思路上,即算法的讲解及算法优化上,对于一个经典的算法,需要通过大量的例题进行学习。在学习开始时没必要在语法细节上死背死抠,毕竟让学生能编出程序才是最重要。一些语法细节是需要通过长期实践才能掌握的。在学生对算法能够较好理解后,再层层深入,让学生去加强对语法的理解。 4、在教学过程中要突出实践操作的重要性 程序设计课程实践性很强,同学在学习过程中只听不练根本达不到预期的学习效课,每次上机前,都要根据教学计 划布臵与理论教学配套的实践作业,让学生明确上机任务,编写好上机调试的程序,使学生在每次上机实习中有收获,加强对理论的理解。我们可以在机房中设立教师机,让学生在教师机上建立以学号和姓名为文件名的文件夹,以后每节课作业都存入其中,课程结束后按作业的多少、优劣来评定实习成绩。针对程序设计中的一些操作难点,可以让学生分组讨论并集中演示,这可以起到事半功倍的效果。课程结束前我们把教师机中学生作业完成情况及所学的内容作一个分析,并进行有针对性的讲解,前后联系起来,使学生对课程内容能够融汇贯通。我们要让学生用积极的思维解决出现问题,程序报错不能运行时,认真检查核对语法错误;程序能运行却得不到正确的结果时,认真检查核对算法的疏漏,使学生知道可能往往程序中一个小小标点或者字母的失误,都可能导致整个程序出现问题。 5、结束语 在对学生进行C语言教学时,除了采取以上措施外,笔者认为由于该课程涉及内容太多,在学时较少的情况下,可以对一些应用性教差及教难的问题适当带过,如果,过分强调那些难点问题,必然影响学生对基本知识的理解,并且也会加大学生学习负担。学生掌握好程序设计中最基本、最常用的部分后已经可以解决大多数的问题。在学生熟练地掌握了基本知识后再去学习较难的部分也会使难点问题简单很 多。“授之鱼、不如授之以渔”,在教学中除了要加强学生对知识的理论学习外,最重要的是培养学生从计算机的角度去考虑如何解决问题、培养学生良好的思维习惯。 参考文献 [1]谭浩强.C语言程序设计.清华大学出版社, 2002 [2] 石爱容, C语言程序设计课程教学探析.警官教育论坛,2006年第2期 [3] 吴丽丽.论职业技术教育中《C语言程序设计》的教学.科技信息(学术版).2006第9期 [4] 张海玉.C语言程序设计教学方法探析.山西财政税务专科学校学报.2006年 第8卷 第1期 [5] 孙锋.C 语言程序设计教学的几点体会.教育与培训.2006 第7期 作者简介: 欧阳群, 女, 江西司法警官职业学院司法信息系,助理讲师第四篇:C 语言程序设计
第五篇:《C语言程序设计》教学的几点体会