一、利用无限可控循环
在一般有实用性的c语言程序中都用到字幕选择交互屏幕来使得程序更友好,人机互动性更强。
而符合有效得控制字母选择屏幕的循环输出则显得尤为重要。而利用无限可控循环则是一种高效的方法之一。其基本思路是。在生成字母屏幕的函数中创建一个无限循环,在循环体内利用switch,case语句或者if,else语句来控制选择结果的动态处理。如果要要用户更加灵活的使用是否来决定程序的继续运行与否,则可在循环体内在套一层循环来实现。当内层循环break到外部循环的时候程序继续正常运行。当内部循环改变了外部循环的条件并且满足终止条件时外部的无限可控循环结束。程序正常运行结束。
请看以下代码实例:
int menu_select() /*菜单函数*/ {
char c;
do{
system("cls"); /*运行前清屏*/
printf("\\\\t\\\\t**** 商品系统****\\\\n"); /*菜单选择*/
printf("\\\\t\\\\t | 1.输入数据 |\\\\n");
printf("\\\\t\\\\t | 2.显示数据 |\\\\n");
printf("\\\\t\\\\t | 3.插入数据 |\\\\n");
printf("\\\\t\\\\t | 4.删除数据 |\\\\n");
printf("\\\\t\\\\t | 5.查找数据 |\\\\n");
printf("\\\\t\\\\t | 6.统计并显示进货时间最早且最接近保质期中止时间的货物 |\\\\n");
printf("\\\\t\\\\t | 7.写入文件 |\\\\n");
printf("\\\\t\\\\t | 8.读文件 |\\\\n");
printf("\\\\t\\\\t | 9.对读入的文件进行排序 |\\\\n");
printf("\\\\t\\\\t | 0.退出 |\\\\n");
printf("\\\\t\\\\t*****************************************\\\\n");
printf("\\\\t\\\\t\\\\t请选择(0-9):");
c=getchar(); /*读入选择*/
}while(c"9"); return(c-"0"); /*返回选择*/ } //到此以上是定义的产生字幕屏幕的函数 。。。
int main() /*主函数*/ {
int n=0;
for(;;)
{
switch(menu_select()) /*选择判断*/
{
case 1:
printf("\\\\t\\\\t\\\\t输入最初商品\\\\n"); /*输入若干条记录*/
n=Input(gs,n);
break;
case 2:
printf("\\\\t\\\\t\\\\t显示所有商品\\\\n"); /*显示所有记录*/
Display(gs,n);
break;
case 3:
printf("\\\\t\\\\t\\\\t插入\\\\n");
n=Insert_a_record(gs,n); /*插入*/
printf("\\\\t\\\\t\\\\t");
system("pause");
break;
case 4:
printf("\\\\t\\\\t\\\\t删除\\\\n");
n=Delete_a_record(gs,n); /*按商品名称查找,删除*/
printf("\\\\t\\\\t\\\\t");
system("pause");
break;
case 5:
printf("\\\\t\\\\t\\\\t查找并显示\\\\n");
Query_a_record(gs,n); /*查找并显示*/
printf("\\\\t\\\\t\\\\t");
system("pause");
break;
case 6:
printf("\\\\t\\\\t\\\\t统计并显示进货时间最早且最接近保质期中止时间的货物\\\\n");
printf("\\\\t\\\\t\\\\t共有 %d 件商品.\\\\n",n); /*总共记录数*/
printf("\\\\t\\\\t\\\\t进货时间最早且最接近保质期中止时间的货物:\\\\n");
printf("\\\\t\\\\t\\\\t商品名称r:%s\\\\n",gs[0].name);
printf("\\\\t\\\\t\\\\t进货时间:%d\\\\n",gs[0].time);
printf("\\\\t\\\\t\\\\t生产日期:%d\\\\n",gs[0].year);
printf("\\\\t\\\\t\\\\t保质期:%d\\\\n\\\\n",gs[0].no);
printf("\\\\t\\\\t\\\\t");
system("pause");
break;
case 7:
printf("\\\\t\\\\t\\\\t写到文件中\\\\n");
WritetoText(gs,n); /*循环写入数据*/
printf("\\\\t\\\\t\\\\t");
system("pause");
break;
case 8:
printf("\\\\t\\\\t\\\\t文件中读数据\\\\n");
n=AddfromText(gs,n);
printf("\\\\t\\\\t\\\\t");/*文件中读数据*/
break;
case 9:
printf("\\\\t\\\\t\\\\t\\\\n");
Sort_by_time(gs,n);
printf("\\\\t\\\\t\\\\t");/*对读入的文件进行排序*/
break;
case 0:
printf("\\\\t\\\\t\\\\t结束退出!\\\\n"); /*结束程序*/
printf("\\\\t\\\\t\\\\t");
system("pause");
exit(0);
}
} } //在主函数中,主函数接受来自定义字幕屏幕函数的参数,通过对参数的动态控制来达到控制整个字幕屏幕的结果的效果。
二、函数调用
除了以上的利用可控无限循环来控制整个字幕的循环输出外,还可以利用函数调用的方法来达到相同的效果。当然这个思想的难度较上一个方法小一些,不过这种方法在我个人认为比较易理解,高效,简便。用起来比较方便和灵活。
思想如下:
将程序中在不同的地方并且会多处用到的函数功能相同或相近的函数(功能相近的意思是可以利用变化的参数来控制这种差别)抽象出来用一个由多个参数控制的函数来统一表达。定义好该函数之后,只需要在需要用的地方传参调用的即可。需要注意的是,在此方法中需要对方法进行提前声明。否则可能会出现异常。
请看以下代码实例:
#include #include #include #include #include
//declare all the function that will be defined later void save(char *name, int n); int readout(char *name, char *type); void insert(char *name); void deletedata(char *name); void rankout(char *name); void deletefile(char *name); void fileinitialize(char *name); void update(char *name); void cleanscreen(); void makechoice(char *name); int main(); 。。。
//以上是程序开头的函数声明
。。。
int readout(char *name, char *type) {
int i;
FILE *fp;
if ((fp = fopen(name, type)) == NULL) {
printf("cannot open file\\\\n");
exit(0);
}
printf("\\\\n=========================================\\\\n");
printf("name\\\\tid\\\\tchinese\\\\tmath\\\\tenglish *\\\\n");
for (i = 0; fread(&info[i], sizeof (struct student_info), 1, fp) != 0; i++) {
printf("%s\\\\t%d\\\\t%d\\\\t%d\\\\t%d\\\\t*\\\\n", info[i].name, info[i].num,
info[i].Chinese, info[i].math, info[i].english);
}
printf("=========================================\\\\n");
printf("Total %d record(s)\\\\n\\\\n", i);
fclose(fp);
return i; } //以上便是对需要多次调用的函数进行的定义 。。。
void insert(char *name) {
//defien the insert() function to insert the record
//to the file you"ve appointed from the end of the file
FILE *fp;
int i, n;
p = "r";
strcpy(type, p);
readout(filename, type);
printf("Enter the number of record you want to insert\\\\nnumber=");
scanf("%d", &n);
for (i = 0; i
printf(">NO_%d ", i + 1);
scanf("%s%d%d%d%d", info[i].name, &info[i].num, &info[i].Chinese,
&info[i].math, &info[i].english);
}
if ((fp = fopen(name, "a+")) == NULL) {//try open the file and ready to write
printf("cannot open file\\\\n");
exit(0);
}
for (i = 0; i
if (fwrite(&info[i], sizeof (struct student_info), 1, fp) != 1)
printf("file write error");
}
fclose(fp);
printf("after insert the new data,data of the file like following:\\\\n");
p = "r";
strcpy(type, p);
readout(filename, type);
makechoice(filename); } //在以上函数的红色部分便是对函数的传参调用
我接触c语言时间不长以上文间有什么错误的地方还请各位大虾海涵 QQ:670161519
第一章 绪论
一、教学目标:要求学生对C语言及C语言程序有一概括的的了解,并掌握C语言环境的功能及使用方法,为以后熟练地使用它进行上机练习做准备。
二、教学重点:掌握简单C语言程序的结构,及C语言的上机步骤。
三、教学难点:C语言编程环境的熟悉。
四、课程:讲授新课。
五、学时:两学时。
六、教学过程:
第一节 C语言概述
一、C语言简史
二、C语言的特点(优点、缺点)
(1) 语言简洁紧凑,使用方便、灵活。
(2) 运算符丰富。
(3) 数据结构丰富。
(4) 具有结构化的控制语句。
(5) 语法限制不太严格,程序设计自由度大。
(6) C语言能进行位操作,可以直接对硬件进行操作。
(7) 生成目标代码质量高,程序执行效率高。
第二节 C语言程序
举例如下所示:
main() { int a,b,c; scanf(“%d,%d\\\\n”,&a,&b); c=max(a,b); printf(“max=%d\\\\n”,c); } int max(int x,int y) { int z; if(x>y) z=x; else z=y; return(z); }
一、源程序的书写格式
(1) C程序是由函数构成的。一个C源程序至少仅包含一个main函数,也可包含一个main函数和若干其他函数。
(2) 函数名后必须有一对圆括号“(”和“)”,这是函数的标志。
(3) 函数必须由左大括号“{”和“}”结束。
(4) 程序中的每个语句必须有一个分号“;
”。
(5) C程序书写格式自由,一行内可写多个语句,一个语句可以写在多行上。
(6) C语言本身没有输入输出语句。输入输出函数由库函数scanf和printf等函数来完成。
(7) 可以用/*„*/对C程序中的任何部分作诠释。
举例:举出例子,由学生说出所举例子程序书写格式的错误。
学时:两课时
二、函数的定义形式
C语言函数由两部分组成。
(1) 函数的首部,即函数的第一行,包括函数名,函数类型,参数名,参数类型。
(2) 函数体:即大括号弧内{„}的部分。如果一函数有多个大括号弧,最外层的一对{ }号函数体的范围。
举出例子:int max(int x,int y)由学生说出函数的组成。
{ }
第三节 上机操作
一、上机步骤安排如下:
1、打开Turboc2环境;
2、输入程序;
3、保存文件“Alt+F”选择,F2进行保存;
4、选择compile菜单下的“compile to OBJ”,然后再选择“compile/Link EXE file”,得到EXE文件。
5、执行程序,选择Run或“Alt+F9”按“Alt+F5”得到执行结果。
布置几个程序,由学生输入,运行,检查其结果。
七、小结:通过本章的学习,要求学生必掌握C语言的书写格式及其结构介绍,并能输入程序在Turboc环境下调试运行。
八、“教学后记:在本章的学习过程中,学生基本能熟练操作Turboc环境,并能输入程序进行调试,但由于对C语言程序结构未能完全理解,调试过程常遇到错误。
C语言程序设计
教 案
课程名称:C语言程序设计 适用专业:环境、信息等 适用年级:二年级 学年学期:
任课教师:顾建新、邹家宁等 编写时间:2005年3月
《C语言程序设计》
第一章 C语言概述(2学时)
本章的教学目标:
①了解C语言的历史背景。
②掌握C语言的特点。
③了解C程序的组成。
本章基本要求:
①学会TC启动、退出,程序输入、编译和运行。
本章各节教学具体内容
1.1 C语言出现的历史背景 教学内容:
①C语言的功能 ②C语言的发展历史
1.2 C语言的特点
1.3 简单的C程序介绍
①通过例1.1, 1.2, 1.3了解c程序
1.4 C程序上机步骤
①程序输入、编译、运行
本章教学内容的重点
①C程序的组成和特点。
本章教学内容的深化和拓宽:TC环境下菜单项功能,程序调试和程序输入的快捷方式。
本章教学方式:多媒体授课 课时分配:2学时
本章教学过程中应注意的问题:培养学生随时保存文件 本章的主要参考书目:
①C语言实用教程 ②C程序设计
本章的思考题:
①C语言的特点是什么? ②C语言的用途和构成?
- 1
《C语言程序设计》
第四章 最简单的C程序设计(4学时)
本章的教学目标及基本要求
①掌握各种类型C语句 ②掌握赋值语句
③掌握putchar() getchar()函数 ④掌握printf() scanf()函数 ⑤掌握顺序结构的程序编写
本章各节教学内容
4.1 C语句概述 4.2 赋值语句
4.3 数据输入输出的概念及在C语言中的实现 4.4 字符数据的输入输出 4.5 顺序结构程序设计举例
本章教学内容的重点:
①字符数据输入输出、格式输入输出。
本章教学内容的深化和拓宽:
①正确使用格式符,防止不正确赋值和数据溢出。
本章教学方式:多媒体授课 课时分配:
①第
1、2为1学时 ②第
3、
4、5为3学时
本章的主要参考书目:
①C语言实用教程
②C程序设计
本章思考题:
①在printf函数中格式符的作用是什么?
②在scanf函数中忘记了变量名前面取址符号的后果是什么?
- 3
《C语言程序设计》
第六章 循环控制(4学时)
本章的教学目标及基本要求
①掌握循环控制的作用。
②熟练掌握GOTO、while、do-while、for语句使用方法。
③使用循环语句解决实际问题。
本章各节教学内容
6.1 goto 语句
6.2 while语句 6.3 do while语句 6.4 for语句 6.5 循环的嵌套
6.6 break和continue语句
教学内容的重点:
①掌握每一个语句的使用方法。
②多重循环执行流程,如何防止死循环。
教学内容的深化:
①使用循环解决实际问题。
教学方式:多媒体授课 课时分配:
①第
1、
2、3节2学时 ②第4节1学时 ③第
5、6节1学时
本章的主要参考书目:
①C语言实用教程
②C程序设计
本章思考题:
①当型和直到型循环有什么区别 ②break和continue语句有什么区别
- 5
《C语言程序设计》
第八章 函数(4学时)
本章的教学目标及基本要求
①掌握函数定义的一般形式。
②掌握函数参数和函数的值的概念。
③掌握函数的调用方式。
④熟练函数的嵌套调用和递归调用方法。
⑤掌握数组作为函数参数方法。
⑥掌握变量的区域性和存储类别
本章各节教学内容及学时分配
8.1 函数概述
8.2 函数调用的一般形式 8.3 函数参数和函数的值 8.4 函数的调用 8.5 函数的嵌套调用 8.6 函数的递归调用 8.7 数组作为函数参数 8.8 局部变量和全局变量 8.9 变量的存储类别 时间分配:
①第
1、
2、
3、4节1学时 ②第
5、6节1学时 ③第7节1学时 ④第
8、9节1学时
本章重点与难点
①函数的递归调用
②多维数组名做函数参数。
③全局变量和局部变量
教学方法与教学手段:多媒体授课 本章的主要参考书目:
①C语言实用教程
②C程序设计
本章思考题:
①数组名和普通变量作为函数参数有什么不同 ②默认的变量作用域和存储类别是什么
- 7
《C语言程序设计》
第十章 指针(6学时)
本章的教学目标及基本要求
①掌握和理解指针的概念与用途。
②掌握指向变量与一维数组的指针。
③掌握多维数组的指针、指向字符串指针和指针数组。
④能使用指针的应用。
本章各节教学内容及学时分配
10.1 地址和指针的概念
10.2 指向变量的指针变量 10.3 数组指针 10.4 字符串指针 10.5 指向函数的指针 10.6 指针数组
学时分配
①第
1、2节1学时 ②第3节2学时 ③第4节1学时 ④第5节1学时 ⑤第6节1学时
本章重点与难点
①二维数组的指针 ②字符串指针。
③指针数组。
本章教学方法与教学手段:多媒体授课 本章的主要参考书目:
①C语言实用教程
②C程序设计
本章思考题:
①指针数组和指向数组的指针有什么区别
②多维数组的数组名的意义和维度的关系是什么
- 9
《C语言程序设计》
第十二章 位运算(1学时)
本章的教学目标及基本要求
①掌握按位与运算符&和按位或运算符|。
②掌握异或运算符^、取反运算符、左移、右移运算符。
③掌握位运算赋值运算符。
本章各节教学内容及学时分配
12.1 位运算符和位运算
12.2 位运算符的应用 本章为1学时
本章重点与难点
①位运算法则
②算数与逻辑右移的区别
本章教学方法与教学手段:多媒体授课 本章的主要参考书目:
①C语言实用教程
②C程序设计
本章思考题:
①位运算符和逻辑运算符的区别 ②使用位运算的优点是什么
- 11
C语言程序设计教程
课程性质:基础课
学时分配:4学时/周(授课2学时,上机2学时) 适用专业及层次:非计算机专业本专科
相关课程:计算机导论、程序设计基础、数据结构
教材:《C语言程序设计教程》(第二版),李丽娟编著,人民邮电出版社,2009 推荐参考书:
C语言程序设计教程(第2版)习题解答与实验指导
王敬华编著 清华大学出版社 C语言程序设计(第2版) 谭浩强
高等教育出版社 C高级实用程序设计
王士元
清华大学出版社
C语言程序设计教程(第2版)
王敬华编著 清华大学出版社
一、教学目标:
通过理论授课和上机实践,使学生掌握C程序的全部语法和程序设计的基本方法,能够比较熟练地使用C语言编写程序,培养出扎实的软件开发基本技能,并养成良好的编程风格。
通过学习了解程序设计语言、程序设计的思想、结构化程序设计方法和流程图画法、C语言的特点及基本程序结构。掌握C语言所用的基本数据类型:整型常量、实型常量、字符常量、字符串常量、符号常量和整形变量、实型变量、字符变量、指针变量。以及C语言算术运算符、逻辑运算符、位运算符、赋值运算符、地址运算符和运算符的优先级和数据类型的转换、表达式语句、格式化输入输出函数、字符输入输出函数。掌握C语言中三种基本结构及多种变换形式。在此基础上进一步掌握C语言中数组和函数的应用、掌握C语言中指针和结构体、共用体及枚举类型数据在程序设计中的应用。了解C语言中文件的使用。
二、教学重点与难点:
第一章 引言
1 C语言的发展过程 2 C语言的特点
3 简单的C语言程序 4 C语言程序的结构 5 C语言程序的执行
难点:C语言程序的结构和执行。
第二章 基本的程序语句 1.用二进制表示的数
2.基本数据类型及取值范围 3.标识符、变量和常量
4.基本运算符、表达式及运算的优先级 5.标准输入/ 输出函数简介
难点:基本数据类型及取值范围、标准输入输出函数。
第三章 程序的简单算法设计 1.结构化算法的性质及结构 2.结构化算法流程图 难点:流程图的画法。
第四章 分支结构
1.if语句的基本结构 2.if~else语句基本结构 3.if语句的嵌套结构
4.switch语句的基本结构 难点:if语句和switch基本结构 第五章 循环结构
1.for循环语句结构 2.while循环语句结构 3.do-while循环结构
4.break和continue语句的作用 5.循环结构的嵌套 难点:各语句的功能。
第六章 函数与宏定义 1.函数的概念
①函数的声明和调用
②函数的传值方式
2.变量的作用域和存储类型 3.内部函数与外部函数 4.递归函数的设计和调用 5.预处理
难点:递归函数的设计与调用 第七章 数组
1.一维数组的概念
2.二维(多维)数组的概念 3.字符数组的概念
4.数组作为函数参数的作用 5.不同类型数组的区别
难点:数组的概念,数组作为函数参数的作用 第八章 指针
1.指针的概念
2.指针与变量的关系
3.指针的使用方法和运算
4.指针的作用
5.指针与函数的关系
6.指针与数组的关系
难点:指针的概念,指针与函数和数组的关系。
第九章 构造数据类型
1.了解结构数据类型的定义及使用。 2.了解结构数据类型的意义及作用。
3.了解结构变量与函数的关系。
4.掌握链表的作用及操作。
5.了解联合数据类型的定义及使用。 6.了解枚举类型的定义及使用。
难点:链表的作用及操作 第十章 文件操作 1.能够建立新文件和更新文件内容 2.能够从顺序文件中读取数据 3.了解对文件进行操作的步骤
4.熟悉对顺序文件进行操作的方式 5.了解对随机文件进行操作的方式 6.了解对文件的低级读写操作 难点:对文件进行操作的步骤。
第十一章 位运算 1.按位取反运算 2.按位左移运算 3.按位左移运算 4.按位与运算 5.按位或运算 6.按位异或运算 7.复合位运算 难点:常用的位运算
三、主要教学方法
采用多媒体方式授课结合上机实验训练。
四、教学课时
第一章 引言 (2学时) 1 C语言的发展过程 2 C语言的特点
3 简单的C语言程序 4 C语言程序的结构 5 C语言程序的执行
第二章 基本的程序语句(4学时) 1.用二进制表示的数
2.基本数据类型及取值范围 3.标识符、变量和常量
4.基本运算符、表达式及运算的优先级 5.标准输入/ 输出函数简介
第三章 程序的简单算法设计(2学时) 1.结构化算法的性质及结构 2.结构化算法流程图 第四章 分支结构(2学时) 1.if语句的基本结构 2.if~else语句基本结构 3.if语句的嵌套结构
4.switch语句的基本结构 第五章 循环结构(2学时) 1.for循环语句结构 2.while循环语句结构 3.do-while循环结构
4.break和continue语句的作用 5.循环结构的嵌套
第六章 函数与宏定义(2学时) 1.函数的概念
①函数的声明和调用
②函数的传值方式
2.变量的作用域和存储类型 3.内部函数与外部函数 4.递归函数的设计和调用 5.预处理
第七章 数组(6学时) 1.一维数组的概念
2.二维(多维)数组的概念 3.字符数组的概念
4.数组作为函数参数的作用 5.不同类型数组的区别 第八章 指针(6学时) 1.指针的概念
2.指针与变量的关系
3.指针的使用方法和运算
4.指针的作用
5.指针与函数的关系
6.指针与数组的关系
第九章 构造数据类型(2学时)
1.了解结构数据类型的定义及使用。 2.了解结构数据类型的意义及作用。
3.了解结构变量与函数的关系。
4.掌握链表的作用及操作。
5.了解联合数据类型的定义及使用。 6.了解枚举类型的定义及使用。
第十章 文件操作(2学时)
1.能够建立新文件和更新文件内容 2.能够从顺序文件中读取数据 3.了解对文件进行操作的步骤
4.熟悉对顺序文件进行操作的方式 5.了解对随机文件进行操作的方式 6.了解对文件的低级读写操作 第十一章 位运算(2学时) 1.按位取反运算 2.按位左移运算 3.按位左移运算 4.按位与运算 5.按位或运算 6.按位异或运算 7.复合位运算
c语言教案模板(共19篇)
for循环教学设计(共4篇)
循环教学计划(共5篇)
f0r循环教学设计(共5篇)
岗位职责pdca循环编写(共4篇)
相关热词搜索: 教案 循环 模板 语言 控制