C语言程序设计( )课程教学大纲.doc
1成人高等函授教育成人高等函授教育程序设计基础程序设计基础自学指导书(函授)自学指导书(函授)适用(计算机科学与技术适用(计算机科学与技术 专科)专科)计算机科学与技术学院计算机科学与技术学院 20092009 年年 0808 月月 1616 日日2程序设计基础程序设计基础自学指导书自学指导书课程名称:程序设计基础课程类别:专业基础课适用专业:计算机科学与技术专业自学时数:60编写部门:计算机科学系一、前言一、前言1本课程的性质和任务程序设计基础是计算机专业必修的一门重要的基础课程。在本课程中讲授了大学期间第一门程序设计语言。本课程不仅是学习其它程序设计语言的基础,而且更是本专业多门后续核心课程(例如, 数据结构 、 计算机网络 、 操作系统 、 编译原理等等)的先导课程。同时计算机与自动化专业的几乎所有专业课程的内容都涉及到程序。此外,编程能力也是从事软件开发工作最重要、最基本的素质。程序设计基础课程的教学目的是通过本课程的学习,使学生掌握结构化程序设计语言的语句结构、程序设计的基本概念、方法和技巧,培养具有初步的应用高级语言进行程序设计解决实际问题的能力,从而为学生在本专业的软件开发、和众多后续课程的学习打下足够的基础。 程序设计基础课程的教学任务是利用 VC+编程环境(也可以用 Turbo C 环境) ,以 C 语言为载体来介绍高级程序设计语言的语句结构知识,和如何设计算法来解决实际问题。教学过程不过于注重语句、语法和一些细节,而是把重点放在解题思路上,即在 C/C+环境下,对问题进行分析,构建数学模型,理出算法并编程实现,着重培养学生的思维能力和动手能力,鼓励学生探索、研究和创新。基于“程序设计是练会的”思想,特别强调学生在学习过程中要大量上机编程实践,并要养成良好的编程习惯,和一定程度的调试程序的能力。为此,期末考试采用上机编程的形式,实实在在地测试学生的动手能力。2本课程与前修课程、后续课程的关系程序设计基础是计算机专业大学期间第一门程序设计语言。本课程本专业是数据结构 、 计算机网络 、 操作系统 、 编译原理等核心课程的先导课程。33自学方法为了学好本课程,首先要具有正确的学习目的和态度,在学习中要认真踏、虚心求教、持之以恒。在学习时要分析各种变量、常量、语句的定义方式,理解问题是如何提出和引申的,又是怎样解决和应用的;要注意各部分内容之间的联系,前后是如何呼应的;要重在理解,能提出问题,积极思考,不要死记;要注重各变量在程序中的变化,不要孤立地去看待一个变量,应有完整的系统概念。通过例题和习题巩固和加深对所学理论的理解,并培养分析能力和运算能力,应按要求完成布置的作业题。解题前,要对所学内容基本掌握;解题时注意分析,熟练应用各类变量和算法。除学习规定教材外,应参阅相关的参考书。如有条件,可通过实验验证和巩固所学知识,培养严谨的科学作风。通过各个学习环节,培养分析和解决问题的能力和创新精神。解决问题不是仅仅照着书本上的例题作练习题,而是要求使用已有的知识对提出的新要求能提出自己的思路和解决问题的方案,这是一个理解加创新的过程。4主要教学环节的安排和要求本课程主要讲授 C 语言的各种数据类型、各种常用语句、各种常用算法的编程等。通过学习,学生应掌握 C 语言的常用数据类型、选择和循环结构设计、数组应用、预处理命令、指针应用、结构体和公用体、文件操作、基础算法以及数据结构基础等应用。为学好这门课,学习时应注意以下几点:(一)要抓主要内容,有条件地略去一些次要因素,找出问题的本质。(二)要抓住重点,即应牢固掌握基本概念、基本算法和结构化语句。(三)要有良好的学习方法,可运用对比或比较的学习方法,找出各分支语句、循环语句、同一问题的不同算法的共性和差异,以加深对各种算法和语句的理解。(四)学习是要理论联系实际,重视实验和实际应用。5配套使用的教材(作者(多个作者以逗号隔开) 、书名、出版社所在地、出版社名称、出版年月) 。教材(以下三种教材各有优缺点,我们将综合它们的优点讲授。学生只需选用程序设计 (第三版) ,同时将提供与每一本教材紧密结合的 ppt 电子课件供同学多方面参考。其他两本作为参考教材。 )1)谭浩强, 程序设计 (第三版) ,清华大学出版社,2005 年,本书是全国高校 C 语言程序设计课程中使用量最大的一本教材; 42)吴文虎, 程序设计基础 (第二版) ,清华大学出版社,2004 年。本教材为清华大学信息科学技术学院教材,同时也是首批“国家精品课程”教材;3)王行言, 计算机程序设计基础 ,高等教育出版社,2004 年,本教材为普通高等教育“十五”国家级规划教材。二、自学进度建议二、自学进度建议自学周数 18 周,每周保证 3-5 学时,总计 60 学时。在自学过程中,除了保证时间外一定要多做练习,独立完成布置的作业分两次寄回学校。最好将各章后面的有关习题及所介绍参考书上的有关习题也做一下。只有通过练习才能达到对所学内容理解、消化的目的,进而掌握它。各章节学时安排如下(不包括作业)。自学进度建议作业测验实践教学安排周次自学内容自学时数作业内容时数交纳期限测验内容时数交纳期限实验、课程设计等环节的时间安排和预期准备工作要求1第一章 C 语 言 C 语 言 概 述 第一章 C 语言概述 C 语言的 特点、与 其它语言 的相同与 不同,C 程序的结 构格式、 主要部分 的含义, C 语言上 机步骤、2P12 14 15 164面授时交纳 5程序调试 方法。2第二章 算法 算法的定 义、算法 的特点、 算法的表 示(自然 语言、流 程图、 NS 流 程图) 、 结构化程 序设计方 法。2P37 2.4(2)(3) 2.8(2)4面授时交纳3-4第三章 数据类型、 运算符与 表达式 C 的数据 类型、常 量和变量 的定义和 使用方法、 整型数据、 实型数据、 字符型数 据、变量 赋初值。 各数据类 型混合运 算、算术 运算符和 算术表达 式、赋值 运 算符 和赋值表 达式、逗 号运算符 和逗号表 达式等。4P65 36 37 39 3128面授时交纳65第四章 顺序程序 设计 C 语句类 型、赋值 语句、字 符数据输 入/输出 函数、格 式输入/ 输出函数、 顺序程序 设计。4P84 4.2 4.6 4.8 4.108面授时交纳6第五章 选择结构 程序设计 关系运算、 逻辑运算、 if 语句、 switch 语 句的定义 和使用。4P105 5.3 5.4 5.6 5.1012面授时交纳7-8第六章 循环结构 C 语言的 goto 语句、 while 语 句、do while 语 句、for 语句、 break 语 句和 continue 语句、循 环嵌套、 各种循环 的相同和 不同 3-2 支路法6P120 62 63 6.4 6.816面授时交纳9第七章 数 组 一维数组 定义和引8P141 71 72 738面授7用、二维 数组的定 义和引用, 字符数组 的定义、 初始化、 字符数组 的输入/ 输出、字 符串处理 函数。时交纳10-11第八章 函数 C 语言的 函数格式、 函数参数、 函数值, 函数调用、 函数嵌套 调用和递 归调用。10P186 81 83 8916面授时交纳12第九章 预处理 C 语言的 宏定义、 “文件包 含”处理、 条件编译。2P199 92 934面授时交纳13-14第十章 指针 C 语言的 指针和地 址、指针 变量的定 义、数组 与指针的 关系、字 符串与指 针的关系、 指向函数 的指针10P258 101 103 10516面授时交纳15-16第十一章 结构体与6P296 11112面8共用体 C 语言的 结构体变 量的定义 和引用、 结构体数 组的定义 和引用、 指向结构 体类型数 据的指针、 用指针处 理链表 (建立链 表、输出 链表、对 链表删除 操作、对 链表插入 操作、综 合操作链 表) 。113 115授时交纳17-18第十二章 文件 C 语言的 文件类型、 文件的打 开和关闭 函数、文 件的读写 函数、文 件的定位。2理解例 题8面授时交纳三、三、课程内容指导课程内容指导第一章第一章 C C 语言概述语言概述1内容概要及说明C 语言的特点、与其它语言的相同与不同,C 程序的结构格式、主要部分的含义,C 语言上机步骤、程序调试方法。2重要知识点91)C 语言的结构和各部分的含义。2)C 语言的上机步骤和程序调试方法。3学习方法建议通过例题和习题理解 C 语言的结构和各部分的含义,通过实验熟悉上机步骤和 C 程序调试方法。4作业题自己写一个小程序。布置这个作业的目的是让学生了解什么是 C 程序,以及如何用算法来表达解决问题的步骤。第二章第二章 算算 法法1内容概要及说明1) 算法的概念2) 算法举例3) 算法的特征4) 算法的表示5) 结构化程序设计方法2重要知识点1)算法的三种描述方式。2)结构化程序设计方法。3典型例题解析例 有 50 个学生,要求将他们之中成绩在 80 分以上者打印出来。 S1: 1iS2: 如果 gi80,则打印 ni 和 gi,否则不打印S3: i+1iS4: 若 i50, 返回 S2,否则,结束。4学习方法建议对实际应用中的问题利用算法描述,通过例题和习题的算法描述理解算法的含义和描述方法。5作业题P372.4(2)(3)、2.8(2)。10第三章第三章 数据类型、运算符与表达式数据类型、运算符与表达式1内容概要及说明C 的数据类型、常量和变量的定义和使用方法、整型数据、实型数据、字符型数据、变量赋初值、各数据类型混合运算、算术运算符和算术表达式、赋值运算符和赋值表达式、逗号运算符和逗号表达式等。2重要知识点1)常量和变量的定义和使用方。2)各数据类型的定义方式和使用方式。3)各类运算符和表达式的使用方法。4)各数据类型的混合运算。3典型例题解析例 向字符变量赋以整数。 main()char a,b;a=120;b=121;printf(“%c,%cn“,a,b);printf(“%d,%dn“,a,b); 4学习方法建议利用简单的 C 程序设计输入/输出不同数据类型,进行各类混合运算,验证各类运算的含义和结果。5作业题P536 、37、39、312。6思考题11第四章第四章 顺序程序设计顺序程序设计1内容概要及说明C 语句类型、赋值语句、字符数据输入/输出函数、格式输入/输出函数、顺序程序设计。2重要知识点1)字符数据输入/输出函数。2)格式输入/输出函3)顺序程序设计。3典型例题解析例 从键盘输入一个大写字母,要求改用小写字母输出#includemain()char c1,c2;c1=getchar();printf(“%c,%dn”,c1,c1);c2=c1+32;printf(“%c,%dn”,c2,c2);输出:A,65a,974学习方法建议利用第三章的各种数据类型,通过实验输入各种不同数据类型,验证各数据类型的输入输出格式,同时加深理解各类混合运算的含义和结果。5作业题P84 4.2、4.6、4.8、 4.10。6思考题第五章第五章 选择结构程序设计选择结构程序设计121内容概要及说明C 语言的关系运算符和关系表达式、逻辑运算符和逻辑表达式、if 语句、switch 语句的定义和使用。2重要知识点1)关系运算符和关系表达式。2)逻辑运算符和逻辑表达式。3)if 语句和 switch 语句的使用。3典型例题解析例 1 输入两个实数,按代数值由小到大的次序输出这两个数 main()float a,b,t;scanf(“%f,%f“,if(a>b)t=a;a=b;b=t;printf(“%5.2f,%5.2fn“,a,b);例 2 输入三个整数,输出最大数和最小数。 main()int a,b,c,max,min;printf(“input three numbers: “);scanf(“%d%d%d“,if(a>b)max=a;min=b;elsemax=b;min=a;if(maxc)min=c;printf(“max=%dnmin=%d“,max,min);4学习方法建议利用第三章的各种数据类型,通过实验输入各种不同数据类型,用关系表达式和逻辑表达式作为选择条件,理解 if 和 switch 的含义和结果。5作业题P105 5.3、 5.4、 5.6、 5.10。6思考题第六章第六章 循环控制循环控制1内容概要及说明C 语言的 goto 语句、while 语句、dowhile 语句、for 语句、break 语句和 continue 语句、循环嵌套、各种循环的相同和不同。2重要知识点1)while 语句、dowhile 语句、for 语句。2)break 语句和 continue 语句。3)循环嵌套、各种循环的相同和不同。3典型例题解析例 1 用 while 语句求1001nnmain()int i,sum=0;i=1;while(i=0;i-)printf(“%d “,ai);运行结果:9 8 7 6 5 4 3 2 1 04学习方法建议通过例题和习题理解数组的定义和使用方法,对于同一题目使用循环和数组分别求解。在循环中完成数组的输入、运算、输出等。5作业题P141 71、72、73。6思考题第八章第八章 函函 数数1内容概要及说明C 语言的函数格式、函数参数、函数值,函数调用、函数嵌套调用和递归调用。2重要知识点1)函数参数、函数值。2)函数调用、函数嵌套调用和递归调用。3典型例题解析例16main()int a,b,c;scanf(“%d,%d”,c=max(a,b);printf(“Max is %d”, c);max(int x, int y)int z;z=x>y?x:y;return(z);输入:7,8结果:Max is 8解析:(1)在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。只有在发生函数调用时,函数 max 中的形参才被分配内存单元。在调用结束后,形参所占的内存单元也被释放。(2)实参可以是常量、变量或表达式。在调用时将实参的值赋给形参。(3)在被定义的函数中,必须指定形参的类型。(4)实参与形参的类型应相同或赋值兼容。(5)C 语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。4学习方法建议通过例题和习题理解函数的作用、定义、使用方法,对于同一题目使用函数方式完成求解和仅用 main 函数并分析相同点和不同点。5作业题17P186 81、83、89。6思考题第九章第九章 数预处理命令数预处理命令1内容概要及说明C 语言的宏定义、“文件包含”处理、条件编译。2重要知识点1)带参数的宏定义。2)“条件编译”的定义和使用。3典型例题解析例 1#define PI 3.1415926main()float l,s,r,v;printf(“input radius:“);scanf(“%f“,l=2.0*PI*r;s=PI*r*r;v=4.0/3*PI*r*r*r;printf(“l=%10.4fns=%10.4fnv=%10.4fn“,l,s,v);输出:input radius:4l= 25.1327s= 50.2655v= 268.0826例 2#define PI 3.1415926#define CIRCLE(R,L,S,V) L=2*PI*R;S=PI*R*R;V=4.0/3.0*PI*R*R*Rmain()18float r,l,s,v;scanf(“%f“,CIRCLE(r,l,s,v);printf(“r=%6.2f,l=%6.2f,s=%6.2f,v=%6.2fn“,r,l,s,v);输入:3.5输出:r=3.50,l=21.99,s=38.48,v=179.594学习方法建议通过例题和习题练习各种宏定义的使用,对于同一题目使用函数和宏定义分别求解,注重理解函数宏定义的不同。5作业题P199 92、93。6思考题第十章第十章 指指 针针1内容概要及说明C 语言的指针和地址、指针变量的定义、数组与指针的关系、字符串与指针的关系、指向函数的指针。2重要知识点指针和地址、指针变量的定义。数组与指针的关系。字符串与指针的关系。3典型例题解析例 1 设有指向整型变量的指针变量 p,如要把整型变量 a 的地址赋予 p 可以有以下两种方式:(1) 指针变量初始化的方法19int a;int *p=(2) 赋值语句的方法int a;int *p;p=例 2 main()int a,b;int*pointer_1, *pointer_2;a=100;b=10;pointer_1=pointer_2=printf(“%d,%dn“,a,b);printf(“%d,%dn“,*pointer_1,*pointer_2);输出:100,10100,10解析:1)在开头处虽然定义了两个指针变量 pointer_1 和 pointer_2,担它们并未指向任何一个整型变量。只是提供两个指针变量,规定它们可以指向整型变量。程序第 5、6 行的作用就是使 pointer_1 指向 a,pointer_2 指向b。 202)最后一行的*pointer_1 和*pointer_2 就是变量 a 和 b。最后两个printf 函数作用是相同的。3)程序中有两处出现*pointer_1 和*pointer_2,请区分它们的不同含义 4)程序第 5、6 行的“pointer_1=int count;leader3=“Li“,0,“Zhang“,0,“Fun“,0; main() int i,j; char leader_name20;for(i=1;isex='M'p->score=89.5;printf(“nNo:%ldnname:%snsex:%cnscore:%fn“,stu_1.num,stu_1.name,stu_1.sex,stu_1.score);printf(“nNo:%ldnname:%snsex:%cnscore:%fn“,(*p).num,(*p).name,(*p).sex,p->score);4学习方法建议通过本章和上一章的综合例题和习题理解指针的含义和使用方法,反复练习链表操作,指针和链表是 C 语言的难点和重点,也是后续课程的基础。5作业题P296 111、113、115。6思考题23第十二章第十二章 文文 件件1内容概要及说明C 语言的文件类型、文件的打开和关闭函数、文件的读写函数、文件的定位。2重要知识点1)文件的打开和关闭函数。2)文件的读写函数。3)文件的定位。3典型例题解析例 从键盘输入字符,逐个存到磁盘文件中,直到输入#“为止#include main() FILE *in, *out;char ch,infile10,outfile10;scanf(“%s“,infile);scanf(“%s“,outfile);if (in = fopen(infile, “r“)= NULL) printf(“Cannot open infile.n“);exit(0);if (out = fopen(outfile, “w“)= NULL) printf(“Cannot open outfile.n“);exit(0);while (!feof(in)fputc(fgetc(in), out);fclose(in); fclose(out);244学习方法建议通过例题和习题重点掌握文本文件的打开和关闭、文件的读写操作、文件的定位。理解对文件的读写操作的含义和使用方法。5作业题6思考题四、四、阶段测试题阶段测试题一. 选择与填空1已知 a 的值为 5 ,则表达式 a+=a*a 的值是_。 A. 0 B. 5 C. 15 D. 30 2下列运算符中优先级最高的是_。 A. B. + C. printf(“%dn“,(x- A.1 B.0 C.-1 D.2 4假定 x 和 y 为 double 型,则表达式 x=2,y=x+3/2 的值是_。 A. 3.500000 B. 3 C. 2.000000 D. 3.000000 5以下选项中合法的字符常量是_。 A. “B“ B. '010' C. 68 D. D 6以下程序段的输出结果是_。 int a=2,b=-1,c=2; if(a0;y-) if(y%3= =0) printf(”%d”,-y) ; continue; A. 875421 B. 963 C. 852 D. 741 8对以下程序,从第一列开始输入数据:2473,程序的输出结果是 _。 #include “stdio.h” void main() int c;while(c=getchar() )!=n )25 switch(c-2 ) case 0: case 1:putchar(c+4); case 2:putchar(c+4);break;case 3:putchar(c+3);default :putchar(c+2);break; printf(”n” ); A. 696 B. 66966 C. 6897 D. 668977 9若有 while(e), 则 e 等价于_。 A. e=0 B. e=1 C. e!=0 D. e!=1 10若 x 为 int 型,请以最简单的形式写出与逻辑表达式!x 等价的关系 表达式_。 11.(int) (5/2+8.345-1.456)=_。二. 阅读程序,写出程序的输出结果: 1. 程序运行结果_。 #include “stdio.h“ void main() int x=4;while(-x);printf(“%d”,x); 2.执行以下程序段后,输出'#'号的个数是_。 #include “stdio.h“ void main() int i,j; for(i=1; i void main() int x=0,y=5,z=3; while(z0FILE *fp; Fp=_(“letter.at”,”w”); If(fp=null) printf(“can not open file!”);exit(0);For(ch=A;ch<=Z;_)_(ch,fp);_(fp); 2、输入两个整数,按大小顺序输出(指针变量做参数) Swap(_,int *p2) _; Temp=*p1;*p1=*p2;_=temp; Main() int a,b;int *p1,*p2,*p; Scanf(“%d%d”,_); P1=p2= If(a<b)_; Printf(“na=%d,b=%dn”,a,b); 五、编写程序(共 29 分) 1、给出一百分制成绩,要求输出成绩等级A 、 B 、 C 、 D 、 E 。 90 分以上为A,80-89 分为B ,70-79 分为C ,60-69 分为D,60 分以 下为E 。 (9 分) 2、设有 10 个数,编程求出其中的最大值、最小值和平均值。 (要求使用子 函数和全局变量) (10 分) 3、候选人得票的统计程序。设有 3 个候选人,30 个选票,每次输入一个得 票的候选人的名字,要求最后输出个人的得票结果。 (要求使用结构体变量) (10 分)六、六、主要参考书主要参考书(一)教材教材(以下三种教材各有优缺点,我们将综合它们的优点讲授。学生只需选用程序设计 (第三版) ,同时将提供与每一本教材紧密结合的 ppt 电子课件供同学多方面参考。其他两本作为参考教材。 )1)谭浩强, 程序设计 (第三版) ,清华大学出版社,2005 年,本书是全国高校 C 语言程序设计课程中使用量最大的一本教材; 292)吴文虎, 程序设计基础 (第二版) ,清华大学出版社,2004 年。本教材为清华大学信息科学技术学院教材,同时也是首批“国家精品课程”教材;3)王行言, 计算机程序设计基础 ,高等教育出版社,2004 年,本教材为普通高等教育“十五”国家级规划教材。(二)主要参考书1、吕凤翥, 程序设计-基础理论与案例 ,清华大学出版社,2004 年;2、王敬华 等, 程序设计教程 ,清华大学出版社,2004 年;3、谭浩强, +程序设计 ,清华大学出版社,2004 年。4、吴文虎, 程序设计基础(第二版)习题解答与上机指导 ,清华大学出版社,2004 年5、谭浩强, 程序设计(第三版)题解与上机指导 ,清华大学出版社,2005 年6、孟威、王行言, 计算机程序设计基础习题解答与实验指导 ,高等教育出版社,2004 年编写人:马新娟编写人:马新娟 系主任审核签名:系主任审核签名:分管教学院长签名:分管教学院长签名: