C语言程序设计案例教程(一)ppt.ppt_第1页
C语言程序设计案例教程(一)ppt.ppt_第2页
C语言程序设计案例教程(一)ppt.ppt_第3页
C语言程序设计案例教程(一)ppt.ppt_第4页
C语言程序设计案例教程(一)ppt.ppt_第5页
已阅读5页,还剩155页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,Date: April 19, 2019,C语言程序设计案例教程(一),Date: April 19, 2019,第一章 c语言程序设计基础,授课要点,C语言的应用及学习方法 C语言教学组织形式、考核方式 第一个C程序,C语言游戏案例演示,中国象棋 贪吃蛇 推箱子游戏 求解最优交通路径 常胜将军,目标案例:学生成绩管理系统,学生成绩管理系统具有以下基本功能: (1)初始化 (2)录入学生信息 (3)计算每位学生(假设四门课程)的总成绩和平均成绩 (4)对学生的基本信息进行添加、删除、修改 (5)查看全部学生或者某个学生的成绩 (6)安全退出系统,教学目标,熟练使用编程工具进行程序的录入、编译、调试、运行 培养良好的调试与规范化编程习惯 运用一定算法完成求最大值、制作菜单、字符串操作、排序等常见任务 能用C语言编写出类似“计价器”、“学生成绩管理系统”等软件,三种能力:编码能力、调试能力、阅读代码能力,为什么要学习C语言,1. C语言与UNIX的发展与历史 2. C编程技能对学生个人发展的影响 (1)本专业的毕业生的就业技能包括哪些,在就业市场的定位 (2)C语言编程技能对就业技能的影响 (3)C语言学习对后续课程学习的作用,就业品质和技能,1.诚信 2.勤奋 3.有创新能力和创造性 4.熟悉软件设计开发流程和方法; 5.具有较强的专业技能,JAVA/C/C+基础扎实 ; 6.沟通能力强,有良好的团队协作精神; 7.良好的英语或日语听说读写能力 8.有开发工作经验者优先,C语言编程技能对就业技能的影响,对于那些要求具有高效率、良好实时性或者说与操作系统内核紧密关联的程序来说,c是很好的选择。这类语言对程序员(或者企业)来说具有无可替代的价值。,C语言学习对后续课程学习的作用,课程要求,仔细阅读教材,做到课前预习、课后复习 认真、独立、按时完成并提交作业 重视上机实践,有效利用宝贵的上机时间,教学组织形式:小组教学模式,促使全体同学积极、努力学习。 锻炼全体同学的团队协作和沟通协调能力。 最根本的目的是以良好的学习效果来为家长、为自己负责。,组长职责,组长是全体组员的直接领导。 组长直接对老师负责,要与老师保持良好的沟通。 组长拥有对组员进行考核甚至开除的绝对权力。 组长必须以身作则为组员做好榜样。,本周内,组长自愿报名,由组长在教学班范围内“招兵买马”确定自己的组员,各小组45人。 没有加入任何小组的学生平时成绩不得超过15分 执行一段时间后,若组长不负责任,表现不好,可以更改,但必须由所有组员向教师提出申请,由教师批准并产生其他组员,组长的产生,学习方法,勇于发现问题 独立思考(分析问题) 注重实践(编写程序、解决问题) 小组学习方法(教师-组长-组员),案例演示:第一个C程序,/* example1.1 The first C Program*/ #include void main() printf(“This is a C program.n”); ,输出: This is a C program.,例1.1运行结果演示,学生模仿,在屏幕上输出两行信息! (在作业本上完成),讨论并总结,1C语言的重要性 2. 学习C语言的方法 3C语言主要用在哪些方面 4目前流行的编程语言有哪些,学以致用,讨论程序设计语言的用途,对比学生成绩管理系统,如果是通讯录,应该有哪些功能?,作业每人必做,阅读教材1页至9页,Date: April 19, 2019,第一章 c语言程序设计基础,授课要点,标准格式输出函数printf(),案例回顾,【例1】原样输出一行语句。 程序名为1_3.cpp。 #include /*文件包含*/ void main() /*主函数*/ printf(“Hello,world!.n“); /*输出信息*/ 程序输出结果: Hello,world!,【模仿练习】输出自己的姓名。 运行显示如图所示:,C程序的基本结构,2.C程序的书写格式,1.C程序的结构特点,C程序的结构特点,1. C程序是由函数构成的。 2. C程序总是从main函数开始执行。 3. C程序语句和数据定义必须以分号“;”结束。 4.C语言严格区分大小写。 5.C语言用/*注释内容*/形式进行程序注释。,一个C源程序可由一个main函数和若干个其他函数组成,其中必须有一个且只能有一个main函数。,main函数始终是C程序执行时入口处。,C语言中,分号是程序语句的结束标志,也是C语句的必要组成部分。,如变量a和变量A系统认定为两个不同的变量。,在“/*”和“*/”之间的所有字符都为注释符,C系统不对注释符进行编译 。,C语言程序的构成: 程序 文件 函数 语句 单词 字符,C程序的结构特点,任何函数(包括主函数main())都是由函数说明和函数体两部分组成。 其一般结构如下:,函数类型 函数名(函数参数表) /*函数说明部分*/ 说明语句部分; /*函数体部分*/ 执行语句部分; ,C程序的书写格式,1. C程序书写格式自由。 2.C程序书写采用缩进格式。 3.程序中适当使用注释信息。,根据语句的从属关系,程序书写时采用缩进格式,使程序语句的层次结构清晰,提高程序的可读性。同一层次语句要左对齐,不同层次的语句要缩进若干个字符,这样程序层次清楚,便于阅读和理解。,对于短语句可以多条语句书写在同一行,也可以将长语句分写在多行。但需要注意,分行时不能将一个单词分开,也不能将双引号引起来的字符串分开。我们提倡一行一条语句的风格。,标准格式输出函数printf(),【例2】输出十进制整数。 程序名为1_4.cpp。 #include /*文件包含*/ void main() /*主函数*/ int iNum1 = 10, iNum2 = 5; /*定义整型变量*/ printf(“%dn”,iNum1); /*输出iNum1*/ printf(“%d,%dn”,iNum1,iNum2); /*输出iNum1、iNum2*/ printf(“%dt%dn”, iNum1,iNum2); /*输出iNum1、iNum2*/ 程序输出结果:,标准格式输出函数printf(),【模仿练习】输出三名学生的成绩(整数)。 运行结果如下图所示:,标准格式输出函数printf(),【例3】输出十进制浮点数。 程序名为1_5.cpp。 #include /*文件包含*/ void main() /*主函数*/ float fNum1 = 10.679, fNum2 =5.3124; /*定义实型变量*/ printf(“%fn”, fNum1); /*输出fNum1*/ printf(“%f,%fn”, fNum1, fNum2); /*输出fNum1、fNum2*/ printf(“%ft%fn”, fNum1, fNum2); /*输出fNum1、fNum2*/ 程序输出结果:,标准格式输出函数printf(),【模仿练习】输出三名学生的成绩(浮点数)。 运行结果如下图所示:,【说明】要控制显示位数见教材表1.6,标准格式输出函数printf(),【例4】输出一个字符。 程序名为1_6.cpp。 #include /*文件包含*/ void main() /*主函数*/ char ch=a; /*定义字符型变量*/ printf(“ch=%cn”,ch); /*输出字符*/ 程序输出结果:,标准格式输出函数printf(),【例5】输出一个字符串。 程序名为1_7.cpp。 #include /*文件包含*/ void main() /*主函数*/ char str10=“abcde”; /*定义一个字符串变量*/ printf(“%sn”,str); /*输出字符串*/ 程序输出结果:,标准格式输出函数printf(),【模仿练习】输出两名学生的姓名。 运行结果如下图所示:,标准格式输出函数printf(),C语言本身没有输入和输出语句,而输入和输出的操作是由库函数scanf和printf等函数来完成的。程序在调用这些库函数时,必须在源文件的开始处加上头文件的“包含命令”,格式如下: #include 或#include “库函数头文件名“ 格式输出函数printf()解释,printf()函数的作用:向计算机系统默认的输出设备(一般指终端或显示器)输出一个或多个任意类型的数据。,printf()函数的一般格式如下: printf(“格式字符串” ,输出项表);,讨论并总结,输出函数printf()的格式应注意什么? 转义字符的使用,学以致用,寻找身边的例子,实现信息的输出: 例如:输出显示自己的名片,输出一棵圣诞树等等,格式自由发挥,作业每人必做,见习题word文档第2次,Date: April 19, 2019,第一章 c语言程序设计基础,授课要点,标准格式输入函数scanf( ) 单个字符输出函数putchar() 单个字符输入函数getchar(),标准格式输入函数scanf(),【例6】输入一个十进制整数。 程序名为1_8.cpp。 #include /*文件包含*/ void main() /*主函数*/ int iNum; /*定义整型变量*/ scanf(“%d”, /*输出iNum*/ 程序输出结果:,标准格式输入函数scanf(),【例7】输入两个十进制整数。 程序名为1_9.cpp。 #include /*文件包含*/ main() /*主函数*/ int iNum1,iNum2; /*定义整型变量*/ scanf(“%d%d”, /*输出iNum1,iNum2*/ 程序输出结果:,标准格式输入函数scanf(),【例8】输入两个十进制整数。 程序名为1_10.cpp。 #include “stdio.h“ /*文件包含*/ void main() /*主函数*/ int iNum1,iNum2; /*定义整型变量*/ scanf(“%d,%d”, /*输出iNum1,iNum2*/ 程序输出结果: 注意输入时避免如下错误:,标准格式输入函数scanf(),【模仿练习】按如下要求输入两名学生的成绩(整数)并输出显示在屏幕上。 运行结果如下图所示:,标准格式输入函数scanf(),【例9】输入十进制浮点数。 程序名为1_11.cpp。 #include “stdio.h“ /*文件包含*/ void main() /*主函数*/ float fNum1, fNum2; /*定义实型变量*/ scanf(“%f%f”, /*输出fNum1、fNum2*/ 程序输出结果:,标准格式输入函数scanf(),【模仿练习】按如下要求输入两名学生的成绩(浮点数)并输出显示在屏幕上。 运行结果如下图所示:,标准格式输入函数scanf(),【例10】输入一个字符。 程序名为1_12.cpp。 #include “stdio.h“ /*文件包含*/ void main() /*主函数*/ char ch; /*定义字符型变量*/ scanf(“%c”, /*输出字符*/ 程序输出结果:,标准格式输入函数scanf(),【思考】以下程序应如何输入? #include void main() char ch1,ch2; scanf(“%c%c“, 正确输入后的程序结果显示如右图:,【思考】产生右图结果的原因是什么?,标准格式输入函数scanf(),【例11】输入一个字符串。 程序名为1_13.cpp。 #include “stdio.h“ /*文件包含*/ void main() /*主函数*/ char str10; /*定义一个字符串变量*/ scanf(“%s”,str); /*输入一个字符串*/ printf(“你输入的字符串是%sn”,str); /*输出字符串*/ 程序输出结果:,标准格式输入函数scanf(),【模仿练习】按如下要求输入一名学生的姓名并输出显示在屏幕上。 运行结果如下图所示:,【注意】s遇空格、回车表示结束。 运行结果如右图所示:,标准格式输入函数scanf(),格式输入函数scanf()解释,格式控制输入函数scanf作用是:按指定的格式从标准输出设备(键盘)输入数据。,函数scanf()的使用格式为: scanf(“格式控制”,地址列表) ;,单个字符输出函数putchar(),【例12】输出一个字符。 程序名为1_14.cpp。 #include “stdio.h“ /*文件包含*/ main() /*主函数*/ char ch1,ch2,ch3; /*定义字符变量*/ ch1=O; /*为字符变量赋初值*/ ch2=K; ch3=n; putchar(ch1); /*输出字符变量值*/ putchar(ch2); putchar(ch3); 程序输出结果:,单个字符输出函数putchar(),字符输出函数putchar()解释,字符输出函数putchar的一般格式为: putchar(c) putchar作用:在标准输出设备(显示器)上输出c对应的一个字符。 用putchar()函数可以输出字符变量、控制字符。 如,char c=Y;putchar(c);输出结果为Y。 如, char c=n;putchar(c);输出结果为一换行符。,单个字符输出函数putchar(),【模仿练习】用putchar()函数输出自己的英文名字: 屏幕显示如下:,单个字符输入函数getchar(),【例13】从输入设备读入字符后输出该字符。 程序名为1_15.cpp。 #include “stdio.h“ /*文件包含*/ main() /*主函数*/ char ch; /*定义字符变量*/ ch=getchar(); /*输入一个字符*/ putchar(ch); /*输出字符变量值*/ 程序输出结果:,单个字符输入函数getchar(),字符输入函数getchar()解释,字符输入函数getchar的一般格式为: getchar( ) getchar作用:在标准输入设备(键盘)读入一个字符。 如: char c; c=getchar(); 执行时,要求输入一个字符,如输入:3, 则输入的字符3就赋给了变量c。,【注意】在一个函数中要用到getchar()、putchar()函数时,应该在函数的前面(或在本文件开头)用#include,讨论并总结,输出函数scanf()的格式应注意什么? 使用putchar()时应注意什么? 使用getchar()应注意什么?,学以致用,寻找身边的例子,实现信息的输出: 例如:输出显示自己的名片,输出一棵圣诞树等等,格式自由发挥,作业每人必做,实现学生基本信息的输入、输出,Date: April 19, 2019,第二章 数据类型及表达式,基本数据类型 常量 变量,授课要点,【例2.1】关于常量、变量及数据类型说明的程序实例。 #include main() int iNum=108; /*定义整型变量iNum并赋予常量值108 */ float fGrade=95.5; /*定义单精度实型变量fGrade并赋予实型常量值95.5 */ char ch=A; /*定义字符变量ch并赋予字符常量值A */ char str10=“WenHe”; /*定义字符数组str10 */ printf(“学号:%dn“,iNum); /*输出各变量的值 */ printf(“姓名:%sn“,str); printf(“成绩:%fn“,fGrade); printf(“等级:%cn“,ch); ,案例回顾,问题分析(能否缺少数据类型定义),将【例2.1】的变量定义部分删掉,程序改为: #include void main() printf(“学号:%dn“,iNum); /*输出各变量的值 */ printf(“姓名:%sn“,str); printf(“成绩:%fn“,fGrade); printf(“等级:%cn“,ch); ,编译结果,结论:变量在使用之前必须先定义!,程序举例,【例2.2】关于常量、变量及数据类型说明的程序实例。 #include void main() int a=3; /*定义整型变量a并赋予常量值3 */ short r=6; /*定义短整型变量r并赋予常量值6*/ char c=a; /*定义字符变量c并赋予字符常量值a */ float pi=3.14; /*定义单精度实型变量pi并赋予实型常量值3.14 */ double s; /*定义双精度实型变量s */ s=pi*r*r; /*将pi*r*r值赋给s */ printf(“int:%d,short:%d,char:%d,float:%d,double:%dn”,sizeof(a),sizeof(r),sizeof(c),sizeof(pi),sizeof(s); /*输出各变量占内存的字节数 */ printf(“a=%d,r=%d,c=%c,pi=%f,s=%lfn“,a,r,c,pi,s); /*输出各变量的值 */ ,问题分析(不同类型的表示),结果分析:变量可以被定义成不同的数据类型并赋值,不同类型的数据在内存中所占的字节数不同,通过sizeof()求得数据宽度。短整型、整型、字符型、单精度实型、双精度实型在内存中分别占2字节、4字节、1字节、4字节和8字节(不同运行环境结果会有所差异,这里仅是Visual C+6.0的结果)。同时,这些数据在输出时所使用的输出格式控制符也不相同,分别为%d、%d、%c、%f和%lf形式。由此可见,数据表现为常量或变量,数据又具有不同的数据类型,不同数据类型的数据存储格式不同,数据的输出格式控制也不相同。注意:在Trubo C环境下,整型数据存储时在内存中占2字节。,运行结果,“数据类型”的意义: 定义了数据占用的内存空间大小 定义了数据在内存中的存储格式 决定了数据的运算规则(自身的行为) 为编译器提供了检查依据,数据类型的意义,数据类型是避免程序错误的初级(基本)手段,不是全部手段;,C语言的数据类型,单精度实型 (float),双精度实型 (double),整型 (int),字符型 (char),枚举类型,数组类型,结构体类型,共用体类型,实型,基本类型,构造类型,空类型 (void),指针类型,数据类型,1.整型数据,2.实型数据,3.字符型数据,数据的存储格式、范围,整型数据的取值范围实例,【例2.3】观察以下程序的运行结果。 #include main() short sNum=32768; printf(“%dn”,sNum); 运行结果如下图所示:,整型数据分类及取值范围,整型数据分为一般整型(int)、短整型(short)和长整型(long),并且每一种类型又分为带符号(signed)和无符号(unsigned)两种类型 。整型数据的特性见下表:,实型数据分类,实型数据分为单精度实型(float)、双精度实型(double)和长双精度实型(long double)。具体情况见下表所示 :,1.7103081.710308,字符型数据分类,字符型数据分为一般字符型(char)、带符号字符型(signed char)和无符号字符型(unsigned char)三种类型。具体情况见下表所示 :,基本数据类型 常量 变量,授课要点,标识符 定义:用来标识变量、常量、函数等的字符序列 组成: 只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线 大小写敏感 不能使用关键字 长度:最长32个字符 命名原则: 见名知意 不宜混淆 如l与I, o与0,例:判断下列标识符号合法性 sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123,M.D.John,3days,#33,char,$123,ab,常量与变量,常量,常量的存在形式 5 数字/整型常量 5.3 数字/浮点常量 “Black” 字符串常量 C 字符常量 推荐的常量表示 #define Max 100 Const int Max = 100; 使用命名常量的好处 增加程序可读性; 减少书写错误; 便于维护;,整型常量实例,在C语言中,整型常量有十进制、八进制、十六进制三种进制表示方法,并且各种数制均可有正(+)负(-)之分,正数的“+”可省略。,【例2.4】定义一个八进制常量并显示在屏幕上 。 #include void main() const int num1=89; const int num2=047; const int num3=0X8A; printf(“%dn%xn%0xn”,num1,num2,num3); 运行结果如下图所示:,字符型常量实例,【例2.5】观察以下程序的运行结果 。 #include main() const int num1=97; const char ch=a; printf(“%cn“,num1); printf(“%dn“,ch); 运行结果如下图所示:,字符型常量说明,(1)一般字符常量 :一般字符常量是用单引号括起来的一个普通字符,其值为该字符的ASCII代码值。如a、A、0、?等都是一般字符常量,但是a和A是不同的字符常量,a的值为97,而A的值为65。,字符型常量是由一对单引号括起来的一个字符。它分为一般字符常量和转义字符。字符常量在内存中占一个字节。,(2)转义字符 :C语言允许用一种特殊形式的字符常量,它是以反斜杠()开头的特定字符序列,表示ASCII字符集中控制字符、某些用于功能定义的字符和其他字符。如n表示回车换行符,表示字符“”。常用的转义字符见1.4.1中所叙。,ASCII表,字符串常量说明,字符串常量也称字符串,由一对双引号括起来(“”)的字符序列。 字符串常量中的字符是连续存储的,并在最后自动加上字符0作为字符串结束标志。如字符串“a”在计算机内存中占两个连续单元,存储内容为字符a和0。,基本数据类型 常量 变量,授课要点,(1)数据类型:C语言的合法数据类型。如例中的int、short、char、float、double等。 (2)变量名表:变量名是C语言合法的标识符。变量名表可以包含多个变量名,彼此之间使用逗号分开,表示同时定义若干个具有相同数据类型的变量,如: float a,b;,变量及类型定义,1. 变量定义,变量定义一般格式: 数据类型 变量名表; 如:int a; 对变量定义说明如下:,变量是指在程序执行过程中其值可以被改变的量。变量定义的实质是按照变量说明的数据类型为变量分配相应空间的存储单元,在该存储单元中存放变量的值。 C语言中,变量使用时遵循“先定义,后使用”的原则。,变量及类型定义,Memory,Value(5),Name (a),Type (int),int a = 5 ; /* 申请空间并初始化 */,一个变量必然包含以下概念: 名字(变量名) 类型(变量占用空间) 值(变量的内容) 地址(变量在内存中所处的位置),字节,Address,2. 变量的存储模式,变量及类型定义,3. 变量初始化及赋值,在【例2.2】中“s=pi*r*r;”语句是通过赋值运算符“=”将“pi*r*r”的值赋给变量s,即该语句实现了给变量s的赋值。所以,变量值可以通过初始化取得,也可以在定义后,通过给变量赋值的方法取得。,在【例2.1】中,“int num=108; float grade=95.5; char ch=A;”的“=”是赋值运算符,用来给变量赋值。所以,以上四条语句都是在定义变量的同时给变量赋了值,称为变量的初始化。变量初始化是指定义变量同时,给变量一个初始值。,模仿练习,定义学生的学号、姓名、性别、年龄、两门功课的成绩并进行输入和输出。,讨论并总结,为什么要定义数据类型? 不同数据类型的区别是什么? 常量在使用时和变量的区别是什么?,结论1定义数据类型的作用,定义了数据占用的内存空间大小 定义了数据在内存中的存储格式 决定了数据的运算规则(自身的行为) 为编译器提供了检查依据,结论2不同数据类型的区别,内存空间大小不同 数据表示有效位数不同 数据表示范围不同 对应的运算和操作不同,结论3常量和变量的区别,常量值在程序运行过程中不可改变,变量的值可改变 常量有直接常量和符号常量,通常用大写,变量通常用标识符表示,通常小写,学以致用,根据对学生基本信息的数据类型定义,扩展到对教师信息(姓名、年龄、工龄、工号、工资等信息)的各种数据进行定义,对学校信息(地址、名称、占地面积、类型、教职工人数、在校学生总数、部门个数等)的各种数据进行定义等等,作业每人必做,在一个程序中定义学过的简单数据类型变量各一个,给各变量赋值并输出。 在一个程序中定义学过的简单数据类型变量各一个,并且将各变量输入并输出,Date: April 19, 2019,第5次(VC的使用),授课要点,Visual C+ 6.0的使用方法 C语言程序的开发过程,C程序案例,2. C程序实例(2),1. C程序实例(1),案例回顾,/* example1.1 The first C Program*/ #include main() printf(“This is a C program.n”); ,输出: This is a C program.,例1.1运行结果演示,案例演示,【例1.2】输入两个整数,通过调用函数计算它们的和,然后输出和值。 程序名为1_2.cpp。 #include “stdio.h“ /*文件包含*/ int sum(int x,int y) /*定义sum函数*/ int z; /*声明定义变量z*/ z=x+y; /*计算z等于x与y的和值*/ return (z); /*将z的值返回,通过sum带回调用处*/ main() /*主函数*/ int a,b,c; /*声明定义变量a,b和c*/ scanf(“%d%d“, /*输出变量c的值*/ 运行程序输入: 90 7 程序结果: C=97,例1.2运行结果演示,案例演示,Visual C+ 6.0的安装,学生模仿,安装Visual C+ 6.0,Visual C+ 6.0集成环境,1. 启动Visual C+ 6.0环境,2. 编辑源程序文件,3. 编译和连接,4. 执行,利用Visual C+ 6.0集成环境开发C程序的过程如下:,Visual C+ 6.0集成环境,1.启动Visual C+ 6.0环境 方法:单击 “开始”-“程序”-“Microsoft Visual studio 6.0”-“Microsoft Visual C+ 6.0”命令,启动Visual C+,VC6主窗口如下:,Visual C+ 6.0集成环境,2. 编辑源程序文件 方法:单击 “开始”-“程序”-“Microsoft Visual studio 6.0”-“Microsoft Visual C+ 6.0”命令,启动Visual C+,VC6主窗口如下:,(1)建立新工程项目 单击“文件”-“新建”,弹出 “新建”对话框。,单击“工程”选项卡;单击 “Win32 Console Application” 选项;“工程”文件框中输入项 目名,如“gc1”和“位置”框输入 或选择新项目所在位置,单击 “确定”按钮。 弹出“Win32 Console Application Step 1of 1”对话框。,单击“An empty project”按钮和“完 成”按钮。系统显示“新建工程信息”对 话框。单击“确定”按钮。,Visual C+ 6.0集成环境,2. 编辑源程序文件,(2)建立新项目中的文件 单击“文件”-“新建”,弹 出“新建”对话框。, 选择“文件”选项卡。单击 “C+ Source File”选项,在 “文件”文件框中输入文件名, 单击“确定”按钮。系统自动 返回VC6主窗口。,显示文件编辑区窗口,在文件编辑 区窗口输入源程序文件。,Visual C+ 6.0集成环境,3. 编译和连接,方法一:选择主窗口菜单栏中“编译”菜单项;系统弹出下拉菜单,选择“构件”菜单命令。,方法二:单击主窗口编译工具栏上的 “Build”按钮进行编译和连接。,(1)系统对程序文件进行编译和连接,生成以项目名称命名的可执行目标代码文件.exe。 (2)编译连接过程中,系统如发现程序有语法错误,则在输出区窗口中显示错误信息,给出错误的性质、出现位置和错误的原因等。如果双击某条错误,编辑区窗口右侧出现一个箭头,指示再现错误的程序行。用户据此对源程序进行相应的修改,并重新编译和连接,直到通过为止。,Visual C+ 6.0集成环境,4. 执行,方法一:单击“编译”菜单中“执行”命令。 方法二:单击主窗口编译工具栏上的 “Build Execute”按钮来执行编译连接后的程序。,运行成功,屏幕上输出执行结果,并提示信息:“Press any key to continue”。此时按任意键系统都将返回VC6主窗口。,在执行程序过程中出现运行错误。用户要修改源程序文件并且重新编译、连接和执行。,C程序的开发过程,1.编辑 2.编译 3.连接 4.运行,C程序的开发过程,1.编辑 2.编译,(1)编辑指编辑创建源程序是将编写好的C语言源程序代码录入到计算机中,形成源程序文件。 (2)我们用Visual C+ 6.0环境提供的全屏幕编辑器。 (3)在VC 6.0环境中的源程序文件,其扩展名为.cpp,而在Turbo C 2.0环境中的源程序文件的扩展名为.c。,(1)编译源程序就是由C系统提供的编译器将源程序文件的源代码转换成目标代码的过程。 (2)编译过程主要进行词法分析和语法分析,在分析过程中如果发现错误,将错误信息显示在屏幕上通知用户。经过编译后的目标文件的扩展名为.obj。,C程序的开发过程,3.连接 4.运行,(1)连接过程是将编译过程中生成的目标代码进行连接处理,生成可执行程序文件的过程。 (2)在连接过程中,时常还要加入一些系统提供的库文件代码。经过连接后生成的可执行文件的扩展名为.exe。,运行可执行文件的方法很多,可在C系统下执行“运行”命令。也可以在操作系统下直接执行可执行文件。 可执行的程序文件运行后,将在屏幕上显示程序执行的结果。,学生模仿练习,练习使用Visual C+ 6.0执行上述案例程序,讨论并总结,在Visual C+6.0中新建C程序的方法(注意扩展名) 查看程序编译错误提示的方法 书写C程序应注意哪些问题,学以致用,设置障碍,使程序出现错误,查看编译错误提示,理解其含义。 例如:某个符号漏掉(例如分号),会出现什么样的错误提示?,作业每人必做,将教材中第一章的例题用Visual C+6.0环境编辑并运行,看看显示结果。 执行“学生成绩管理系统”,进一步体会其功能要求。,Date: April 19, 2019,第6次(结构体),本章主要知识点,基本的数据类型 常量和变量 结构体数据类型 C语言各种运算符和表达式的应用,数据类型结构体,复习 结构体类型 结构体变量及初始化,授课要点,问题引入,学生是一个由学号、姓名、性别等属性组成的整体,如何用一种数据类型来描述学生呢?,问题分析,学生的学号、姓名、性别等属性,都可以用基本数据类型来描述,如: 学号可以表示为char acNum15; 姓名可以表示为char acName20; 成绩可以表示为float fScore; 如果这些变量彼此独立,是不能描述学生这个整体的。我们如何将不同类型但彼此都属于同一个整体的信息表示出来呢? 结构体为我们提供了解决方案。,结构体类型的定义,定义的一般形式: struct 成员列表 ; Eg: struct tagStudent_t /*类型定义*/ char acNum15; /*学号为字符串*/ char acName20; /*姓名为字符串*/ float fScore; /*成绩为浮点型*/ ;,模仿练习,学生的学号、姓名、性别、年龄、家庭住址、成绩定义为一个学生结构体。,结构体类型定义总结,定义结构体的目的:将一些相关类型定义在一个整体里。 结构体类型用一片连续的存储空间存放不同类型的成员,结构体成员和普通变量的存储方式、运算规则相同。 结构体成员允许为各种类型,包括结构体类型,但不允许嵌套定义(不允许在定义结构体时,该结构体的成员变量定义结构体),结构体类型 结构体变量及初始化,授课要点,问题引入,定义了学生类型的结构体,如何使用这种类型呢?,问题分析,结构体类型的使用方法和其他基本类型一样,也必须定义结构体变量,才能使用。 上例学生类型的变量存储空间表示如下:,acNum,acName,acSex,fScore,结构体变量说明和引用,常用的说明方式: (1)定义后说明。 根据上面定义有:struct tagStudent_t stStu1,stStu2; (2)在定义的后面说明。在定义的分号前放上stStu1,stStu2 (3)在定义后说明可以省略结构体名。 (4)利用重命名类型说明 如: typedef struct tagStudent_t Student_t; Student_t stStu1,stStu2; 结构体变量的引用:结构体变量名.成员名 例:stStu1.sex=f;,结构体变量举例,定义学生类型结构体,并为一个学生的各项值赋值并输出 #include struct tagStudent_t /*结构体类型定义*/ char acNum15; char acName20; char acSex4; int iAge; ; void main( ) struct tagStudent_t stStu1; /*定义结构体stu,说明s1为结构体变量*/ strcpy(stStu1. acNum,“20030311”);strcpy(stStu1. acName,“xiaomin“); strcpy(stStu1. acSex,”男”); stStu1.iAge=20; printf(“Number=%snname=%sn“, stStu1.acNum, stStu1.acName); printf(“sex=%snage=%d“, stStu1.acSex, stStu1.iAge); ,模仿练习,定义学生结构体,成员包括学号、姓名、性别、年龄、两门功课的成绩,定义结构体变量并为该结构体变量赋值,然后输出所有信息。,结构体变量总结,说明一个变量类型为结构体类型,必须先有结构体的定义,才能有该类型的变量。在使用结构体类型名定义时,不能把struct漏掉。如 tagStudent_t stStu1,stStu2;为非法定义。 结构体变量的引用:结构体变量名.成员名 结构体每个成员变量必须单独赋值和使用,不允许对结构体变量整体赋值,除了定义时(结构体变量的初始化),不允许将一个结构体变量赋值给另一个结构体变量。,讨论并总结,结构体类型定义后还需要定义结构体变量吗? 输入输出结构体变量成员怎么表示?,结论1结构体类型与变量的区别,结构体类型必须先定义,才有变量定义 定义了结构体类型不分配存储空间,作用类似int等基本数据类型 定义结构体类型后必须定义该类型的变量,才分配存储空间,该存储空间的大小和结构由结构体类型确定 不能对结构体类型进行引用,结构体变量可引用 例如: Student_t.acNum是非法的,而stStuu1.acNum是合法的。,结论2输入输出结构体变量成员怎么表示?,结构体成员变量的引用方式为:结构体变量名.成员变量名 输入输出的方式根据成员变量的类型进行格式控制,其方法与普通变量相同,学以致用,根据对学生基本信息的数据类型定义为结构体,扩展到对教师信息(姓名、年龄、工龄、工号、工资等信息)定义为结构体,对学校信息(地址、名称、占地面积、类型、教职工人数、在校学生总数、部门个数等)定义为结构体等等,作业每人必做,完成学生信息结构体的程序 对教师信息(姓名、年龄、工龄、工号、工资等信息)定义为结构体,并输入和输出教师信息,Date: April 19, 2019,第7次(赋值运算符、算术运算符、自增自减运算符),本章主要知识点,基本的数据类型 常量和变量 结构体数据类型 C语言各种运算符和表达式的应用,在用C程序描述各种运算时将使用各种类型的运算符,其中包括赋值运算符、算术运算符关系运算符、逻辑运算符、条件运算符等,运算符和表达式,1.运算符,2.表达式,用运算符将操作对象连接起来、符合C语法规则的式子称为表达式。,问题引入,将华氏温度转换成摄氏度,如何求解? 摄氏温度=(5/9)(华氏温度-32) 解决上述问题需用到赋值运算符和算术运算符,复习 赋值运算符及表达式 算术运算符及表达式 自增、自减运算符及表达式,授课要点,问题引入,回顾前面所学,举例说明如何为变量赋值?,结论:运用赋值运算符及表达式,赋值运算符及赋值表达式,简单赋值运算符及其表达式,赋值运算符是“=”,其作用是将赋值运算符右侧的表达式的值赋给其左侧的变量。,值得注意的是:赋值运算符运算对象中的左侧对象一定是变量。如:a=b-c=5;相当于a=(b-c)=5);,由于表达式中出现将数值5赋给b-c表达式,因此,该表达式是非法的。,返回本节目录,赋值运算符及表达式 算术运算符及表达式 自增、自减运算符及表达式,授课要点,问题引入,如何编写一个能进行五则混合运算的简易计算器程序? 功能包括求两个数的和、差、积、商,如何表示?,结论:运用算术运算符及表达式,问题求解,/*和、差、积、商以及两数相除的余数*/ #include void main() /*操作数和存放结果的变量定义*/ double dOper1=10.5,dOper2=100,dAdd,dSub,dMult,dDiv,dMod; dAdd=dOper1+dOper2; /*两数和*/ dSub=dOper1-dOper2; /*两数差*/ dMult=dOper1*dOper2; /*两数积*/ dDiv=dOper1/dOper2; /*两数商*/ /*结果输出*/ printf(“n两数和为%lf,两数差为%lf,两数积为%lf,两数商为%lf,两数模为%lf”,dAdd,dSub,dMult,dDiv,dMod);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论