1、学时安排n总学时:64学时n周学时:4学时n理论教学:32学时n实践教学:32学时n课程类型:必修课(期中、期末均上机考试)n平时:期中:期末40:20:40n注意:每旷课一次从成绩中扣除6分,每迟到或早退一次从成绩中扣除3分C语言的学习内容nC语言的学习内容n专业技能(学什么知识)n基础语法知识、三大程序设计结构、数组、函数、指针、结构体、文件相关内容n以项目驱动形式组织学习过程n职业能力(掌握什么与职业相关的能力)n理解简单算法的编程思想并用C语言实现之n熟练掌握在VC环境下调试程序的能力n养成良好的编程习惯和编程风格n培养一定的团队协作及沟通能力怎样学习C语言n怎样学习C语言n 读、仿、
2、改、编四字诀n多读关键:理解程序思路n模仿关键:复制程序思路n改写关键:不改变程序思路,只改变思路中的某个具体步骤n编写关键:重组思路,创造新的产品n通过小组合作,共同学习,多和别人交流,这样才能碰撞出思想的火花来n态度决定一切,增强信心,努力会使一切成为现实怎样学习C语言n怎样学习C语言n多读n大量阅读别人写的程序,代码量由小到大,初学时读简单的程序,慢慢过渡到读一些经典的算法程序。关键是要边读边理解别人解决问题的思路,并记住这种思路。n模仿n读完别人的程序后,模仿着写出同样的程序。在模仿的过程中也是要根据你读程序时理解到的思路来写程序。怎样学习C语言n怎样学习C语言n改写n能够比较熟练地模
3、仿后,就可以自问自答,“如果要加一个什么功能,我应该怎么去编写程序?”、“如果要实现那个功能,应该怎么做?”等,写完后进行调试。n编写n根据所掌握的一些常见编程思路,独立编写简单的程序,或者将几个简单的功能通过某种方法组合到一个程序中。不断地训练这种能力,就能够写出越来越复杂的程序了。编程环境 Visual C+6.0 Visual C+6.0环境使用演示 创建工作区 创建项目 创建.c源文件 编辑源代码,并保存 编译 链接 执行演示项目 演示项目一 在屏幕上显示“你好,欢迎使用Visual C+6.0”字样。/*本程序将在屏幕上显示本程序将在屏幕上显示“你好,欢迎使用你好,欢迎使用Visua
4、l C+6.0”字样字样*/#include main()printf(“你好,欢迎使用你好,欢迎使用Visual C+6.0n”);演示项目 演示项目详解 在屏幕上显示“你好,欢迎使用Visual C+6.0”字样。/*本程序将在屏幕上显示本程序将在屏幕上显示“你好,你好,欢迎使用欢迎使用Visual C+6.0”字样字样*/#include main()printf(“你好,欢迎使用你好,欢迎使用Visual C+6.0n”);程序注释(程序注释(/*/是段注释是段注释,/是行注释是行注释)预编译语句,包含预编译语句,包含stdio.h文件到程序文件到程序中中函数首部。函数首部。main是
5、主函数,每个是主函数,每个C程序有且只能有一个程序有且只能有一个main函数函数:函数代码的起始处:函数代码的起始处:函数代码的结束处:函数代码的结束处printf:系统提供的输出函数:系统提供的输出函数演示项目 演示项目一详解 程序架构/*程序注释程序注释*/#include 预编译语句预编译语句main()主函数头主函数头左括号左括号一条或多条语句;一条或多条语句;右括号右括号演示项目 演示项目详解 printf函数讲解printf(“你好,欢迎使用你好,欢迎使用Visual C+6.0n”);函数名双引号内是想要输出的文字n是要输出换行符,即换行语句末尾必须要有分号结束printf的使用
6、格式为:的使用格式为:printf(“想要输出的文字及换行符想要输出的文字及换行符”);演示项目 从键盘上输入两个整数,计算并输出它们的乘积。/*本程序将从键盘上输入两个整数,计算并输出它们的乘积本程序将从键盘上输入两个整数,计算并输出它们的乘积*/#include main()int x,y,fac;printf(“请输入两个整数:请输入两个整数:”);scanf(“%d%d”,&x,&y);fac=x*y;printf(“两个数的积两个数的积%d*%d=%dn”,x,y,fac);:函数代码的结束处:函数代码的结束处:函数代码的开始处:函数代码的开始处注释注释预编译语句预编译语句主函数头部
7、主函数头部语句语句项目实践n1、在屏幕上输出”hello,neusoft!”字样。n2、在屏幕上输出如下的图形:n3、在屏幕上列出自己的以下信息:姓名:NNN专业:MMMMM班级:CCCCC住址:AAAAAAAAAAAn4、想个办法,用printf语句,在屏幕上拼出一个简单的字符图形。课后项目n完成VC6.0的环境安装n将课堂练习编写的程序输入到计算机中,编译、链接、执行,观察结果是否符合要求。C语言的应用范围C语言UNIX操作系统动画制作软件中的脚本嵌入式系统计算机游戏机器人工厂电影特效计算机语言开发硬件驱动程序2008年在51job上对北京、上海、大连三地各IT公司进行的调查数据2008年
8、10月TIOBE编程语言排行榜发布,前三甲依然被Java、C和C+占据,占比分别为20.949%、15.565%、10.954%.整型数据输入输出目录 回顾 计算器项目简介 数据类型介绍 变量定义和使用 输出变量的值 输入变量的值 项目小结 课后项目回顾 VC的使用 C程序的基本架构 printf函数的简单使用计算器项目简介项目名称:计算器项目项目简介:使用C语言,编写一个字符界面的计算器程序,包括加、减、乘、除等基本的算术运算。后期还需要加上累加、阶乘等运算。本项目涉及的的C语言知识 数据类型 变量定义和引用 变量值的输出 变量值的输入 无参无返回值的函数 分支结构和循环结构数据类型C C数
9、数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型void定义类型定义类型typedef字符类型字符类型char枚举类型枚举类型enum整整 型型实型实型单精度型单精度型float双精度型双精度型double数组数组结构体结构体struct共用体共用体union短整型短整型short长整型长整型long整型整型int数据类型 C语言的数据类型的常量表示 整型:-999 10000 0 55 浮点型:1.53.141597.8421 0.25 字符型:A B X m t 3 7#,*n 0 t b变量定义和使用 变量:程序执行过程中,存储会改变值的标识符,称为变量。标识符
10、的命名规则:标识符仅由大小写英文字母、数字字符和下划线组合而成。数字不允许放在标识符的首位。系统提供的关键字不能作为标识符。标识符练习:合法的标识符:num x2 time_for_exec _minid Double For 不合法的标识符:2m ttime.xy abcert int for float double 变量定义和使用 变量定义 单变量定义格式:数据类型变量名;多变量定义格式:数据类型变量名1,变量名2,变量名3;注意:多个变量名之间用逗号隔开。几种常用的基本数据类型的关键字:整型:int 长整型:long 单精度浮点型:float 双精度浮点型:double 字符型:cha
11、r变量定义和使用 变量定义 整型变量定义:int a;/定义了一个整型变量a int num1,num2;/定义了两个整型变量num1,num2 单精度浮点型变量定义:float fNumber;/定义了一个单精度浮点型变量 float x,y,t,k;/定义了四个单精度浮点型变量 字符型变量定义:char cx;/定义了一个字符型变量 char m,n,zck;/定义了三个字符型变量变量定义和使用 变量定义练习 定义两个双精度浮点型变量,变量名请自定 定义三个长整型变量,变量名自定 定义两个单精度浮点型变量hight和weight分别表示一个人的身高和体重变量定义和使用 变量初始化和赋值 初
12、始化:在定义变量的同时,给变量赋相应的值。int s_c=77;/定义了整型变量s_c,并赋初始值77 相当于以下两步操作:int s_c;s_c=77;/=代表赋值,并非数学上的“相等”变量初始化练习:修改前面的各个变量定义,对其初始化相应的值。演示项目/*本程序在屏幕上显示两个变量的值本程序在屏幕上显示两个变量的值*/#include main()float hight=172.7,weight=70.4;/定义变量并初始化定义变量并初始化printf(“您好您好:n”);/输出固定的字符串输出固定的字符串printf(“您的身高是:您的身高是:%fn”,hight);/输出变量输出变量h
13、ight的值的值printf(“您的体重是:您的体重是:%fn”,weight);/输出变量输出变量weith的值的值/printf(“%f ,%f n“,hight,weight);/一次将两个变量的值输出一次将两个变量的值输出演示项目 演示项目详解 使用printf函数输出变量的值格式:格式:printf(“%f ,%f n“,hight,weight);要输出变量值的地方用要输出变量值的地方用“格式修饰符格式修饰符”占住位置,不同变量需要使用不一样的占住位置,不同变量需要使用不一样的格式修饰符格式修饰符除格式修饰符除格式修饰符外的普通字符外的普通字符原样输出原样输出转义字符按照转义字符的
14、真转义字符按照转义字符的真实意义输出实意义输出“”“”后面的变量表用于将变量的后面的变量表用于将变量的值替换对应的格式修饰符。值替换对应的格式修饰符。演示项目 演示项目详解 几种基本数据类型对应的格式修饰符 整型:%d 长整型:%ld 单精度浮点型:%f 双精度浮点型:%lf 字符型:%c演示项目 定义两个整型变量s_c,s_math,分别代表C语言和数学成绩,然后将其值显示在屏幕上。/*本程序在屏幕上显示两个变量的值本程序在屏幕上显示两个变量的值*/#include main()int s_c,s_math;/定义变量定义变量s_c=76;s_math=98;printf(“your c s
15、core is:%dnyour math score is:%dn”,s_c,s_math);/一次将两个成绩输出一次将两个成绩输出演示项目 定义单精度浮点型变量hight和weight,代表身高和体重,从键盘上输入身高和体重,然后将其值显示在屏幕上。/*本程序从键盘上输入两个变量的值,然后显示两个变量的值本程序从键盘上输入两个变量的值,然后显示两个变量的值*/#include main()float hight,weight;/定义变量定义变量scanf(“%f%f”,&hight,&weight);/输入两个值到变量中去输入两个值到变量中去printf(“您好您好:n”);/输出固定的字符
16、串输出固定的字符串printf(“您的身高是:您的身高是:%fn”,hight);/输出变量输出变量hight的值的值printf(“您的体重是:您的体重是:%fn”,weight);/输出变量输出变量weith的值的值/printf(“%f ,%f n“,hight,weight);/一次将两个变量的值输出一次将两个变量的值输出演示项目 演示项目详解 使用printf函数输出变量的值格式:格式:scanf(“%f%f“,&hight,&weight);要输入变量值的地方用要输入变量值的地方用“格式修饰符格式修饰符”占住位置,不同变量需要使用不一样的占住位置,不同变量需要使用不一样的格式修饰符
17、格式修饰符“”“”后面的变量地址表后面的变量地址表用于将变量的值保存起用于将变量的值保存起来。来。演示项目 定义两个整型变量s_c,s_math,分别代表C语言和数学成绩,从键盘上输入这两门成绩,然后将其值显示在屏幕上。/*本程序在屏幕上显示两个变量的值本程序在屏幕上显示两个变量的值*/#include main()int s_c,s_math;/定义变量定义变量scanf(“%d%d”,&s_c,&s_math);/输入两门成绩输入两门成绩printf(“your c score is:%dnyour math score is:%dn”,s_c,s_math);/一次将两个成绩输出一次将两
18、个成绩输出项目实践 实践:编写符合下列要求的C程序 1:定义一个整型变量age代表年龄,从键盘上输入一个年龄值,然后将其显示在屏幕上。2:定义一个双精度变量radius代表圆的半径,从键盘上输入一个半径,然后将其显示在屏幕上。3:定义一个长整型变量length代表距离,从键盘上输入大连到东京的距离,然后将其显示在屏幕上。4:定义两个字符变量cUpper和cLower分别代表大写和小写字母,从键盘上分别输入一个大写和小写字母存储到这两个变量中,然后将它们输出到屏幕上。教师提示:两个字符的分隔 字符输入输出的其它形式(getchar、putchar等)项目小结 小结本项目的知识点及技能要求 1:掌
19、握基本数据类型及其变量的定义 2:掌握基本数据类型对应的关键字和格式修饰符 3:熟悉VC6.0的简单使用 4:掌握printf语句的灵活使用 评价总结项目完成质量及情况课后项目 编写程序达到以下要求:1、定义两个整型变量a和b,从键盘上输入它们的值,并将其值显示在屏幕上。2、定义两个单精度浮点型变量m和n,从键盘上输入它们的值,试着计算它们的和(sum)、差(diff)、积(multi)、商(div),然后并将结果显示在屏幕上。运算符目录 回顾 运算符总览 算术运算符 赋值运算符 类型转换 自加/自减运算符 关系运算符 逻辑运算符 项目小结 课后项目回顾 变量的定义和引用 printf函数的灵
20、活使用 scanf函数的灵活使用项目导引 问题:要计算两个数的和、差、积、商,该怎么编写程序实现?答案:需要使用C提供的算术运算符和赋值运算符。运算符总览C运运算算符符算术运算符:(算术运算符:(+-+-*/%+-/%+-)关系运算符:(关系运算符:(=!=!=)逻辑运算符:(!逻辑运算符:(!&|&|)位运算符位运算符 :(:(|&|&)赋值运算符:(赋值运算符:(=及其扩展)及其扩展)条件运算符:(条件运算符:(?:?:)逗号运算符:(逗号运算符:(,)指针运算符:(指针运算符:(*&)求字节数求字节数 :(:(sizeofsizeof)强制类型转换:(类型)强制类型转换:(类型)分量运算
21、符:(分量运算符:(.-.-)下标运算符:(下标运算符:()其它其它 :(:(()-()-)运算符总览 学习运算符应注意的问题:运算符的功能 运算符的运算规则 运算符的优先级 运算数的个数 结合方向 运算结果的数据类型算术运算符、/、%均是两个运算数,自左向右结合 注意:/:整数/整数结果为整数,其余情况下为浮点数。例:5/3结果为1,2/5结果为012/5结果为2 5.0/3结果为1.666667 2/5.0结果为0.400000 12.0/5.0结果为2.400000%:求余运算 左右两边的运算数均只能是整数 例:7%4结果为38%4结果为07%5结果为2 7.2%3错误算术运算符 是赋值
22、运算符 赋值运算符的含义:将赋值运算符右边表达式的值送到左边变量名所代表的存储单元中。如:a=b+1;x=x+1;求值规则:赋值表达式的值就是赋值号右边表达式的值,如:a=(b=3*2)+1;优先级:14 赋值运算符的优先级小于算术运算符,如:a=b+1;结合性:赋值运算符的结合性是自右至左,如:int a,b=2;a=b=3;运算符实践 编写程序:从定义两个变量,从键盘输入它们的值,然后分别计算其和、差、积、商及余数,并输出结果。#include main()float a,b;/两个变量两个变量float sum,diff,multi,div,res;/各种计算值各种计算值scanf(“%
23、f%f”,&a,&b);/输入输入a,b的值的值sum=a+b;/求和求和diff=a b;/求差求差multi=a*b;/求积求积div=a/b;/求商求商res=(int)a%(int)b;/求余数。(求余数。(int)这是什么玩意?这是什么玩意?/输出结果(自己用输出结果(自己用printf函数试试)函数试试)强制类型转换 强制类型转换是要把某种类型的数据转换为其他类型 格式(要转换成的类型)表达式 例如:想把一个int类型的值转换为float类型 int x=7;x/3 (结果为?)(float)x/3(结果为?)(float)(x/3)(结果为?)隐式类型转换 隐式类型转换是指系统根
24、据运算规则,自动将某些数据类型转换为其他类型的处理方式。隐式类型转换由下面的转换方向决定,隐式转换只能由低等级转换为高等级charintlongdoublefloat级别高级别高级别低级别低隐式类型转换隐式类型转换是指系统根据运算规则,自动将某些数据类型转换为其他类型的处理方式。float f,g;int i,j;f=5/2;/f的值为2.000000i=3.5;/i的值为3g=f+i;/g的值为5.000000j=g/2;/j的值为2自加/自减运算符:自加运算符,每次给变量自增1:自减运算符,每次给变量自减1使用格式 后缀用法:变量+或 变量 前缀用法:+变量或变量例:int m=9,x,y
25、;x=m+;(x为?m为?)y=+m;(x为?m为?)逗号运算符 语法:e1,e2,e3 求值规则:从左至右依次计算各个表达式的值,最后一个表达式的值是整个逗号表达式的值 优先级:15 最低 结合性:左结合 例1:3+2,5-4,5*3 例2:int i=2,j=5;j=(i=5,i+5,i*4);项目实践 按照要求完成以下程序:1、求一元二次方程 3.2X2+2.1X-8.4=0 两个实根。2、求任意一元二次方程度两个实根。关系运算符、=、b (ab)=c b+cb f=abc注意:C语言中连续比较可能会产生意想不到的结果 如:974的结果为0逻辑运算符&(与)、|(或)、!(非)运算数分为
26、两类:0即是“假”,非0即是“真”运算结果亦两类:结果为真,用1表示;结果为假,用0表示运算规则如下:aba&ba|b!a!b真真真真真真真真假假假假真真假假假假真真假假真真假假真真假假真真真真假假假假假假假假假假真真真真逻辑运算符逻辑运算符之间的优先级:!(最高)、&(次之)、|(低)查看正面运算的优先级,用括号标识出来 a=x&xb&xy a=b|x=y!a|ab计算下列各式的值 a=4;b=5;!a a&b a|b!a|b 4&0|2 53&2|8b)&(n=cd)项目小结 小结本项目的知识点及技能要求 1:掌握基本运算符 2:掌握简单程序编写的方法 评价总结项目完成质量及情况课后项目
27、编写程序达到以下要求:1、编写程序求任意半径的圆的面积。2、定义一个身高变量hight和一个体重变量weight,从键盘上输入hight的值,根据公式 体重(身高100)计算weight的值,然后输出结果。顺序结构及无参无返回值函数目录 回顾 顺序结构编程思路 计算器项目功能实现 无参无返回值函数实现计算器项目 项目小结 课后项目回顾 常用的运算符 算术运算 自加/自减运算符 关系运算符 逻辑运算符 各运算符的具体符号及运算规则?顺序结构编程思想 所有现实中的问题通过 顺序、选择(分支)、循环三种基本程序结构的不同组合,均可得到解决方案。顺序结构:顺序结构程序设计适合于只需要按照先后(从上到下
28、)的顺序来执行语句,即可解决问题的情形。顺序结构也是计算机编程中最基础的编程结构。顺序结构编程思想 顺序结构编程的基本思想:按照解决问题的先后顺序,写出每一步的语句。一个顺序结构的C程序的基本思路(四步曲)定义变量(非常简单的问题也可能不需要定义变量)输入某个(些)变量的值(也可能是用赋值语句直接赋值)计算其他变量的值 输出计算结果分析讲解项目 项目一 计算长方形的面积和周长 项目构思:从键盘上输入长方形的长和宽,然后计算面积和周长,最后将结果输出 项目设计(1)定义变量chang,kuang,mianji,zhouchang(2)输入chang和kuang的值(3)计算mianji和zhou
29、chang的值(4)输出mianji和zhouchang的值分析讲解项目项目一 计算长方形的面积和周长 项目实现/*计算长方形的面积和周长*/#include main()double chang,kuang,mianji,zhouchang;printf(“请输入长和宽的值:”);scanf(“%lf%lf”,&chang,&kuang);mianji=chang*kuang;zhouchang=2*(chang+kuang);printf(“面积为:%lfn周长为:%lfn”,mianji,zhouchang);项目运行 输入长宽分别为 55.5 20 试试分析讲解项目 项目二 温度转换
30、项目构思:从键盘上输入一个摄氏温度c,将它转化为华氏温度f。转化的公式为 f=9(c+32)/5。项目设计(1)定义变量c和f(2)输入变量c的值(3)计算变量f的值(4)输出结果分析讲解项目 项目二 温度转换 项目实现/*由摄氏温度转化为华氏温度*/#include main()double c,f;printf(“请输入一个摄氏温度:”);scanf(“%lf”,&c);f=9*(c+32)/5;printf(“转换后的华氏温度为:%lfn”,f);项目运行 输入几个摄氏温度,并查看结果实践项目 项目三 简单计算器 项目构思:从键盘上输入两个整数,分别计算它们的和、差、积、商、求余,并将结
31、果输出在屏幕上。项目设计(1)定义变量x,y,he,cha,ji,shang,yu(2)输入x,y的值(3)计算和、差、积、商、余数(4)输出结果实践项目 项目实现:#include main()int x,y,he,cha,ji,shang,yu;printf(“请输入两个整数:”);scanf(“%d%d”,&x,&y);he=x+y;cha=x y;ji=x*y;shang=x/y;yu=x%y;printf(“he=%d,cha=%d,ji=%dn”,he,cha,ji);printf(“shang=%d,yu=%dn”,shang,yu);项目运行 输入几组x,y查看结果分析讲解项目
32、 项目四 用函数来实现简单计算器 当碰到某个问题比较复杂时,通常会将问题细化到很容易解决的每一步,然后将这些步骤有机组合起来,就可以解决整个问题了。在C语言中,需要用到函数来细化问题 项目构思:用函数来实现简单计算器。把加、减、乘、除、求余运算分别写成一个函数,然后再在main函数中调用它们,从而实现与之前一样的简单计算器 。分析讲解项目 项目四 用函数来实现简单计算器 项目设计:在C语言中,所有的函数与main函数的编程思路都是类似的。本项目 中,我们设计五个函数来分别计算和、差、积、商、求余,每个函数都遵循与main函数类似的“四步曲”编程思路。加法函数:void add();减法函数:v
33、oid sub();乘法函数:void multiply();除法函数:void divide();求余函数:void remain();分析讲解项目 项目四 用函数来实现简单计算器 函数基础 C语言中函数用下面的格式来定义:返回值类型 函数名(参数 );返回值类型 是指这个函数执行完后,是否要带回一个指定值给调用它的函数(如main函数)。返回值类型可以是任何已知类型,例如:int代表返回整型数据 double代表返回双精度浮点型数据 char代表返回字符型数据 等 void代表没有返回值(就这个是特殊的)函数名与变量名命名规则一样 括号中的东西称为参数:若括号里没有东西,就称为无参数。vo
34、id add()这类函数称为无参数无返回值函数。分析讲解项目 项目四 用函数来实现简单计算器 项目实现 一个函数(如add函数)的实现(其他函数类似)/*加法函数的实现*/void add()int a,b,s;printf(“请输入两个整数:”);scanf(“%d%d”,&a,&b);s=a+b;printf(“%d+%d=%dn”,a,b,s);分析讲解项目 项目实现 一个函数(如add函数)的调用/*实现了加法函数的计算器*/#include void add();/*加法函数的声明*/*分别声明减、乘、除、求余函数*/main()add();/*调用加法函数*/*分别调用减、乘、除、
35、求余函数*/void add()/*加法函数定义*/int a,b,s;printf(“请输入两个整数:”);scanf(“%d%d”,&a,&b);s=a+b;printf(“%d+%d=%dn”,a,b,s);/*分别编写减、乘、除、求余函数*/请在相应位置补请在相应位置补充全其他函数充全其他函数项目实践1、完善用无参无返回值函数编写的简单计算器。2、分别编写无参无返回值的函数,实现从键盘上输入圆的半径,计算圆的面积和圆的周长。项目设计 计算圆的面积的函数可定义为:void mianji_circle();计算圆的周长的函数可定义为:void zhouchang_circle();3、编写
36、无参无返回值的函数,实现从键盘上三角形的三边,计算三角形的面积。项目设计 计算三角形的面积的函数可定义为:void mianji_triangle();三角形面积计算方法为,若a,b,c为三边,则计算公式为:s=(a+b+c)/2,面积sqrt(s*(s a)*(s b)*(s c)另外,因为用到了sqrt函数,需要在程序开头增加#include 语句项目小结 小结本项目的知识点及技能要求 1:掌握顺序结构程序设计的基本思路 2:掌握无参无返回值函数的使用方法 函数声明 函数定义 函数调用课后项目 将简单计算器修改为可以对浮点数进行计算的计算器。(提示:求余运算需要用到强制类型转换)分支结构程
37、序设计目录 回顾 分支结构的引入 分支结构 计算器项目功能完善 分支结构程序设计 项目小结 课后项目回顾无参无返回值函数的应用 函数声明 函数定义(编写)函数调用简单分析讲解 函数的调用过程main()add();sub();multiply();divide();remain();void add()int a,b,s;scanf(“%d%d”,&a,&b);s=a+b;printf(“%d+%d=%dn”,a,b,s);void sub()int a,b,s;scanf(“%d%d”,&a,&b);s=a-b;printf(“%d-%d=%dn”,a,b,s);分支结构的引入 运行计算器程
38、序,在执行除法时,输入 22 0 两个数,看会出现什么结果?引出:在程序中要通过代码来处理类似出错的这种情况,例如上面的 除数为0 的错误。这种情况下,就要判断 除数是否为0,根据判断结果进行相应的处理。这时要用到 分支结构。出错!得不到正确结果!出错!得不到正确结果!分支结构 分支结构是三种程序设计结构中的一种。分支结构的形式 双分支结构(if else)单分支结构(if)多分支结构(if else if、switch)分支结构主要是要判断条件,条件可以是关系表达式,也可以是逻辑表达式或其他任意的表达式。分支结构 双分支结构(if else)格式:if (e )/e是一个表达式A;/e为真时
39、执行 elseB;/e为假时执行eAB真真假假执行流程执行流程分支结构 单分支结构(if )格式:if (e )/e是一个表达式A;/e为真时执行 eA真真假假执行流程执行流程分析讲解项目项目一项目一 修改计算器项目中的除法函数修改计算器项目中的除法函数项目构思:修改计算器项目中的除法函数,使其能够分辨出除数为0的情况,若除数为0,则输出“除数不能为0”的提示信息,若除数不为0,则输出正常的除式。项目设计(1)定义a,b变量(2)输入a和b的值(3)用表达式 0=b判断b是否为0,若是,则输出错误提示,若不是,则输出除式分析讲解项目项目实现实现divide函数#include void div
40、ide()int a,b;printf(“请输入两个整数:”);scanf(“%d%d”,&a,&b);if (0=b)printf(“0 不能作除数!n”);elseprintf(“%d/%d=%d n”,a,b,a/b);项目实践项目二项目二 修改求余函数修改求余函数求余函数remain也有类似的不能除0的问题,请用if-else分支结构修改求余函数项目三项目三 修改求三角形面积的函数修改求三角形面积的函数在mianji_triangle函数中,考虑三边是否能构成三角形,若可以,则正常计算三角形面积,若不能构成三角形,则输出错误提示”你输入的三边不能构成三角形“。(提示:构成三角形的条件是
41、 a+b c&a+c b&b+c a)用if else 结构改写函数项目实践项目四项目四 偶数输出偶数输出项目构思:从键盘上输入一个整数,若它为偶数,则输出在屏幕上,否则,不作任何处理。项目设计(1)定义变量num(2)输入变量num的值(3)用 表达式 num%2=0 判断num是否为偶数,若是则输出项目实现#include main()int num;printf(“请输入一个整数:”);scanf(“%d”,&num);if (num%2=0)printf(“你输入的是偶数,它是:%dn”,num);请将程序修改为无请将程序修改为无参无返回值的函数参无返回值的函数形式形式项目实践项目五项
42、目五 比较两个数的大小比较两个数的大小项目构思 从键盘上输入两个数,输出其中较大的一个。项目设计 定义两个变量num1和num2 输入num1和num2的值 比较 num1 num2的关系,若成立,则输出num1,否则就输出num2项目实现 用无参无返回值的函数编写代码项目 运行项目实践项目六项目六 两个数排序两个数排序项目构思 从键盘上输入两个数,将它们按从大到小的顺序输出在屏幕上。项目设计 定义两个变量num1和num2 输入num1和num2的值 比较 num1=18,则输出”你已经是成人,应该规划好自己的未来“的提示,否则,输出“你还不到18,要准备学习如何规划自己了”的提示。(注意:
43、以上均写成无参无返回值的函数形式)课后项目 写一程序,从键盘上输入一年份year(为十进制数),判断其是否为闰年。(闰年的条件是:能被4整除、但不能被100整除,或者能被400整除),条件表达式为:(0=year%4 and 0!=year%100)|(0=year%400)从键盘输入x的值,求y的值并输出。3x3+x2+2x+5 (x 0)分支结构程序设计目录 回顾(if-else,if结构)分支结构(if-else-if,switch结构)if嵌套语句使用 switch语句使用 项目小结 课后项目94回顾if-else结构if (e )/e是一个表达式A;/e为真时执行 elseB;/e为
44、假时执行if结构if (e )/e是一个表达式A;/e为真时执行分支结构(if嵌套)当某个问题用一个简单的if-else或if无法一次解决时,就可能要用到多次判断。如:成绩等级问题。从键盘上输入一个学生的成绩,判断其成绩所对应的级别是什么。成绩和级别之间的对应关系如下表所示:解决办法:用多个if-else嵌套起来判断各个对应关系(记住,一个if-else只能将问题一分为二)。成绩成绩级别级别90100A8089B7079C6069D059E小于小于0或大于或大于100非法输入非法输入if-else和if结构之间可以相互嵌套,嵌套可以出现在if分支中,也可以出现在else分支中。嵌套形式可能出现
45、以下几种:if(e1)if(e2)s1;elses2;if(e1)s1;elseif(e2)s2;if(e1)if(e2)s1;else s2;elses3;if(e1)s1;else if(e2)s2;else s3;if(e1)if(e2)s1;if(e1)if(e2)s1;else s2;分支结构(if嵌套)if嵌套中要注意的问题:养成良好的编程习惯,在每个分支上加。若有的程序在嵌套分支上未加,则嵌套的规则为:else与最近的未与其他else配对的if进行配对。(这种法则实际上与()的匹配规则一样,只需要把if当成“(”,把else当成“)”就可以正确找到与某个else配对的if,从而正
46、确理解整个程序的结构。分支结构(if嵌套)例例:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);修改:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);实现实现if else if else 正确配对正确配对方法:加方法:加 分支结构(if嵌套)例 考虑下面程序输出结果:main()int x=100,a=10,b=20;int v1=5,v2=0;if(ab)if(b!=15)if(!v1)x=1;else if(v2)x=10;x=-1;printf(“%d”,x);结果:结果:-1分支结
47、构(if嵌套)一种特殊的if嵌套形式(if else if)格式:if (e1)s1;else if(e2)s2;else if(e3)s3;else if(e4)s4;elsesn;e1e2e3e4s1s2s3s4s5if-else-if后的其他语句后的其他语句真真假假真真假假真真假假真真假假分析讲解项目项目一:用if-else-if语句解决成绩等级问题(自己改写成函数形式)/*成绩等级问题成绩等级问题*/#include main()int score;printf(“请输入一个成绩:请输入一个成绩:”);scanf(“%d”,&score);if(score 100)printf(“非法
48、输入非法输入n”);else if(score=90)printf(“An”);else if(score=80)printf(“Bn”);else if(score=70)printf(“Cn”);else if(score=60)printf(“Dn”);else printf(“En”);分析讲解项目项目二 处理一元二次方程 项目构思:从键盘输入一元二次方程的三个系数a、b、c,求方程的根。考虑二次项系数是否为零和判别式正负的问题。项目设计 解决此问题的NS流程图如下:定义变量定义变量a,b,c,x1,x2,p;输入输入a,b,c的值的值;a=0真真假假输出输出“这不是这不是一个二次方程
49、一个二次方程!”求判别式求判别式p的值的值;p=0真真假假求求x1,x2并输出并输出输出输出“no real root!”假假项目二 处理一元二次方程(自己改写成函数形式)项目实现#include#includemain()float a,b,c,x1,x2,p;printf(“请输入请输入a、b、c的值的值:”);scanf(“%f%f%f”,&a,&b,&c);p=b*b-4*a*c;if(a=0)printf(“不是二次方程!不是二次方程!”);else if(p=0)x1=(-b+sqrt(p)/(2*a);x2=(-b-sqrt(p)/(2*a);printf(“x1=%f,x2=%
50、f”,x1,x2);else printf(“no real root!”);项目一 判断一个三角形的类型项目构思:项目构思:根据输入的三个边长a、b、c,判断他们能否构成三角形;若能构成三角形,继续判断该三角形是等边、等腰还是一般三角形的程序流程图。请参考程序流程图编写相应的程序。项目实践 项目二 求分段函数的值 项目构思:根据以下函数关系,对输入的每个x值,计算出y值。x y2x=10 x(x+2)-1x=2 2xx60n”);break;.例例 switch(score)case 5:printf(“Very good!”);case 4:printf(“Good!”);case 3:p