【精品】c语言程序设计(可编辑.ppt
《【精品】c语言程序设计(可编辑.ppt》由会员分享,可在线阅读,更多相关《【精品】c语言程序设计(可编辑.ppt(172页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言程序设计什么是程序 q程序一词来自生活,通常指完成某些事务的一种既定方式和过程q在日常生活中,可以将程序看成对一系列动作的执行过程的描述 2qVC+环境下开发应用程序的步骤建立项目-新建源文件-编码-编译-连接-运行q项目和源程序文件的关系一个项目对应一个程序(即生成一个可执行文件),它可以包含多个源文件或头文件等,但只能有一个main()函数。注:当前我们暂时只会用到一个项目只包含一个源程序文件开发环境的使用3程序编制要求初步q从主函数入手,要求先用注释的形式将算法的思路写出,再分别对算法的每一步用代码实现;q编码风格:特别注意代码行的缩进和空行。4变量q为什么要使用变量?编写程序时,
2、常常需要将数据存储在内存中,需要在程序中访问内存单元,但内存地址是不便于记忆并且让程序员直接管理内存非常复杂。因此让内存地址有一个直观易记的名字且便于访问,而引入了变量。q通常使用变量来存储数据。使用变量可以引用存储在内存中的数据,并随时根据需要显示数据或执行数据操纵。q变量具有三要素:名字、类型、值。5变量的正确使用q变量基本类型的确定(根据问题分析确定)q变量定义的位置一般放置于函数所有语句之前,规范化要求:不允许在函数的其它位置定义变量。q变量命名如无特别含义,建议对变量在程序中代表的含义进行注释8基本输入输出语句的使用qPrintf(“”,)和scanf(“”,)基本格式q格式字符和输
3、出值列表以及地址列表的关系(一一对应原则)q输入提示语句的使用错误用法:printf(“please input a:%d”,w);scanf(“%d”,&w);9printf 函数int visitor_count=150;printf(%d,visitor_count);printf将一些信息按照指定的格式送到标准输出(显示器)%d visitor_count将按指定的格式显示该变量的值转换转换字符串字符串说说 明明%d将参数按整数形式转换输出,对应参数应是int 类型%ld将参数按长整数形式转换输出,对应参数应是long 类型%c输出一个字符,对应参数应该是一个字符%s输出一个字符串,对
4、应参数应该是一个字符串%f将参数按带小数点数形式输出,对应参数应是double 类型,默认情况下精确到 6 位小数10转义序列转义转义序列序列名称名称描述描述a 警告产生一则警告。b 退格将光标回退一格。f 换页将光标移到下一页的第一格。n 换行将光标移到下一行的第一格。r 回车将光标移到当前行的第一格。t 水平制表 将光标移到下一个水平制表位置。v 垂直制表将光标移到下一个垂直制表位置。单引号产生一个单引号。双引号产生一个双引号。?问号产生一个问号。反斜线产生一条反斜线。0 空产生一个空字符。11基本运算符的使用q“/”运算符的特殊情况(两个操作数均为整型为作整除运算)q“%”运算符的要求(
5、两个操作必须为整型)q“+”和“-”运算符一般用于计数器,尽量减少在比较复杂的表达式或语句中使用12类型转换q自动类型转换(隐式转换)q原则:把表示范围小的类型的值转换到表示范围大的类型的值q short int long float double如果需从范围较大的类型值转换为范围较小的类型值,则用下面的强制类型转换。q强制类型转换(显式转换)q语法:(类型名)变量或数值 q例如:int a=5,b=3;float qu=(float)a/b;13字符输入输出函数的使用qgetchar()和putchar()函数的格式q输入缓冲区的正确理解 要求:在字符型数据输入前建议使用缓冲区清空函数ffl
6、ush(stdin)14getchar()和putchar()qgetchar()是从标准输入设备读入一个字符;putchar()是将字符输出到标准输出设备上。qgetchar()函数没有参数;putchar()有一个参数。qgetchar()执行时,虽然是读入一个字符,但并不是直接从键盘上输入一个字符就读入一个字符,而是等到输入完一行按回车后该行字符被送到输入缓冲区后,再从缓冲区取出一个字符,因此为了避免错误的发生,有时需在用此函数前,先清空缓冲区fflush(stdin);qch=getchar();相当于scanf(“%c”,&ch);qputchar(ch);相当于printf(“%c
7、”,ch);15字符型和整型的关系q字符型数据在内存中的表示形式(ASCII码)qASCII码是整数的子集,因此也可以作整数的一般运算q在一般情况下,可以理解为字符型和整型为等价类型,区别在于各自所占的内存单元数存在差异16q“=“判等运算符与“=”赋值运算符的区别 if(operator=-)/将条件换成operator=-表达式结果如何?result=num1-num2;printf(n结果为%d。n,result);else if(operator=+)result=num1+num2;printf(n结果为%d。n,result);else printf(运算符错误,无法计算!n);(
8、教材P197第二题)“=”的正确使用17逻辑运算符 运算运算运算符运算符表达式表达式逻辑“与”&operand1&operand2逻辑“或”|operand1|operand2逻辑“非”!operand1 q逻辑运算符用于连接一个或多个条件,判断这些条件是否成立q逻辑运算符的类型为:18逻辑运算符的正确使用if(a=b)&(a=c)/能否写成(a=b=c|a=c=b)?printf(n%d 为位于最大的数n,a);if(b=a)&(b=c)printf(n%d 为位于最大的数n,b);if(c=b)&(c=a)printf(n%d 为位于最大的数n,c);19条件结构 2-1 q条件结构就是需
9、要根据不同条件进行判断,然后执行不同的操作q简单 if 语句的一般形式为:if()如果条件为真,if 语句执行一个语句或一组语句;如果条件为假,则执行 if 语句后面的语句(如果有)。20条件结构 2-2 q if-else 语句的一般形式为:语句的一般形式为:if()else 如果条件为真,执行 if 后面的一个语句或一组语句;如果条件为假,则执行 else 后面的语句。21IF结构语法注意事项if(xy)/能否在此语句后加分号“;”/*交换x,y的值*/t=x;x=y;y=t;/括号能否省略?if(xz)/*交换x,z的值*/t=z;z=x;x=t;if(yz)/*交换z,y的值*/t=y
10、;y=z;z=t;22IF语句的执行流程 total_cost=cost1+cost2+cost3;discount=0;/此语句能否省略?作用是什么?if(ch=y)|(total_cost=100)discount=total_cost*0.1;if(ch=y)&(total_cost=100)discount=total_cost*0.2;pay=total_cost-discount;printf(n 购物总额=%1.2f 元n,total_cost);printf(n 折扣金额=%1.2f 元n,discount);printf(n 应付总额=%1.2f 元n,pay);23 int
11、 item;float tot_amt,discount,pay_amt;printf(n 请输入购买商品的件数:);scanf(%d,&item);printf(n 请输入购物总金额:);scanf(%f,&tot_amt);if(item=10&tot_amt=10000)discount=(float)(tot_amt*0.10);pay_amt=tot_amt-discount;?printf(n 可得到折扣额=%1.2f$.n,discount);printf(n 折扣后应付金额=%1.2f$.n,pay_amt);24sizeof 运算符 sizeof(int);float num
12、;sizeof(num);24char1int2short int2long4float4double8sizeof 运算符返回的大小q使用 sizeof 运算符可以获得数据类型占用内存空间的大小。其一般形式为:sizeof(type_name)qsizeof 运算符的结果以字节为单位显示注意:在32位计算机中,int类型的变量占4字节的内存大小,和long类型的大小一样,所以现在基本上可以直接使用int类型,而不需要使用long类型。25运算符优先级运算符运算符描述描述结结合性合性()圆括号自左向右!,+,-,sizeof逻辑非,递增,递减,求数据类型的大小自右向左*,/,%乘法,除法,取余
13、自左向右+,-加法,减法自左向右,=小于,小于等于,大于,大于等于自左向右=,!=等于,不等于自左向右&逻辑与自左向右|逻辑或自左向右=,+=,*=,/=,%=,-=赋值运算符,复合赋值运算符自右向左26运算符优先级小结q一般情况下,算术运算符关系运算符逻辑运算符q算术运算符中,自增自减运算符乘除余运算加减运算q关系运算符中,等于和不等于运算最低q逻辑运算符中,取反运算符与运算符或运算符q一切运算,()运算符优先级最高q一切运算,赋值运算符优先级最低27多重ifq要处理多重条件判断的情况,需要使用多重条件结构多重条件结构嵌套 ifswitch结构多重条件结构多重条件结构多重条件结构多重条件结构
14、28if(num5)dcount=0;else if(num=5)&(num=10)&(num=20)&(num5)dcount=0;else if(num=5)&(num=10)&(num 0)if(y 1)z=1;else/*这个 else 部分属于哪个 if?*/z=2;嵌套 if 结构C语言规定,每个 else 部分总属于前面最近的那个缺少对应的 else 部分的 if 语句。提倡使用大括号括起来以避免看起来有二义性。32计算表达式的值如果等于常量1 如果等于常量2 如果没有找到匹配的值 switch(表达式)case 常量 1:语句;break;case 常量 2:语句;break;
15、default:语句;33switch 结构 3-3q在使用switch结构时应注意以下几点:q在case后的各常量表达式的值不能相同,否则会出现错误;q在case后,允许有多个语句,可以不用括起来;q每个case语句后都必须有一个break语句,否则会出现错误;q各case和default子句的先后顺序可以变动,而不会影响程序执行结果;qdefault子句可以省略;34Switch语句的正确使用int a;printf(请输入今天星期几(1-7):);scanf(%d,&a);switch(a)case 1:printf(星期一:青菜n);break;case 2:常量表达式和值的类型应匹配
16、,如果将a改为字符型,此题应作怎样的修改?35 scanf(%d,&a);switch(a);/此处能否使用分号?case 1:printf(星期一:青菜n);break;case 2:36 printf(n 请输入员工级别:);scanf(%c,&grade);if(grade=A)amt=salary+(salary*0.45);printf(n 级别%c 的薪水是%6.2fn,grade,amt);else if(grade=B)amt=salary+(salary*0.40);printf(n 级别%c 的薪水是%6.2fn,grade,amt);else printf(n无效的等级n
17、);红色代码可否放在IF结构外执行?原因?37补充:字母大小写转换函数tolower()和toupper()如grade=A|grade=a等价于 tolower(grade)=a或toupper(grade)=A38 switch(month)/*先计算某月以前月份的总天数*/case 1:sum=0;break;default:sum=-1;break;红色代码在此段程序中的作用?(标志用以区分月份的正确与否)if(sum!=-1)sum=sum+day;/*再加上某天的天数*/elseprintf(data errorn);39if(year%400=0|(year%4=0&year%1
18、00!=0)&month2)/*判断是不是闰年*/此处应注意条件的写法,尤其是括号的正确使用/*如果是闰年且月份大于2,总天数应该加一天*/sum+;printf(这天是当年的第%d 天。n,sum);/这两条语句能否用一条语句实现?elseprintf(这天是当年的第%d 天。n,sum);40循环的必要性q为避免繁琐的代码重复,需提供一种机制来解决这种需要重复执行执令的情况,即循环。q循环允许将一组指令重复执行特定次数或直到某个条件为止,应避免死循环。q循环三要素:循环体(即重复执行的指令)、循环条件(即循环结束条件取反)、循环初始化(循环执行前的准备)41while 循环1 while(
19、表达式)循环体语句;while 循环的一般语法:while(index 100).index+;计算表达式的值,当值为真(非0)时,执行循环体语句,一旦条件为假,就停止执行循环体。如果条件在开始时就为假,那么不执行循环体语句直接退出循环。工作原理示例42while 循环 2循环条件循环条件每次循环执行的语句(即循环体)每次循环执行的语句(即循环体)循环前的语句(包括循环初始化)循环前的语句(包括循环初始化)假假真真返返回回循循环环条条件件判判定定循环之外的语句循环之外的语句43while 循环 3 while(循环条件)循环条件中使用的变量需要经过初始化44while 循环4while(ind
20、ex 100).index+;while 循环主体中的语句必须修改循环条件的值,否则会形成死循环while(1)真真45while 循环示例1-1要求输出一个从1-10分别乘以10所得的乘法表分析:分析:输出:1 10 102 10 203 10 304 10 405 10 506 10 607 10 708 10 809 10 9010 10 1001、重复进行的指令(循环体)、重复进行的指令(循环体)执行运算:整数值执行运算:整数值*10=乘积乘积输出:该乘法表达式输出:该乘法表达式2、重复的次数(循环条件及初始化)、重复的次数(循环条件及初始化)整数值为可变的值,因此需使用一变量整数值为
21、可变的值,因此需使用一变量来存储,其来存储,其初始值为初始值为1,并且取值变化,并且取值变化必须是从必须是从1到到10(变量值变量值=10);每次执行乘法以后该变量值应加一每次执行乘法以后该变量值应加一,当,当变量值为变量值为11时应停止重复指令时应停止重复指令46while 循环示例1-2#includevoid main()int num=1,result;while(num=10)result=num*10;printf(%d 10%d n,num,result);num+;内存内存numresult1null102输出:1 10 102 10 203 10 304 10 405 10
22、506 10 607 10 708 10 809 10 9010 10 1001110047while 循环示例2-1问题描述:问题描述:写一个程序,要求它从摄氏温度写一个程序,要求它从摄氏温度0 度到度到250 度,每隔度,每隔20 度度为一项,输出一个摄氏温度与华氏温度的对照表,同时要求对照表中为一项,输出一个摄氏温度与华氏温度的对照表,同时要求对照表中的条目不超过的条目不超过10条。条。1、重复进行的指令(循环体)、重复进行的指令(循环体)执行运算:华氏温度执行运算:华氏温度=(摄氏温度)(摄氏温度)*9/5+32输出:华氏温度和摄氏温度的对照信息,并计数输出:华氏温度和摄氏温度的对照信
23、息,并计数2、重复的次数(循环条件及初始化)、重复的次数(循环条件及初始化)摄氏温度为可变的值,因此需使用一变量来存储,其摄氏温度为可变的值,因此需使用一变量来存储,其初始值为初始值为0,并且取值变化必须是从,并且取值变化必须是从0到到250(摄氏温度摄氏温度=250););另需设置一变量来作为另需设置一变量来作为计数器计数器,以统计当前对照表中条目数目,以统计当前对照表中条目数目,其其初始值为初始值为0,并且取值不能超过,并且取值不能超过10(计数器计数器=10);每次执行指令以后每次执行指令以后摄氏温度应加摄氏温度应加20且计数器加且计数器加1,当变量值超过,当变量值超过250时或计数器超
24、过时或计数器超过10应停止重复指令应停止重复指令分析:分析:48#include void main()int c=0,count=0;double f;while(c=250&count number)printf(太大n);else if(guess number)printf(太小n);while(guess!=number);printf(您猜中了!答案为%dn,number);猜一个介于猜一个介于 1 与与 10 之间的数之间的数请输入您猜测的数:请输入您猜测的数:3太小太小请输入您猜测的数:请输入您猜测的数:5您猜中了您猜中了!答案为答案为 5输入数字 5 后,dowhile 循环
25、中的条件为假,输出结果消息后,程序终止。54do-while 循环小结qdo-while 循环先执行后判断qwhile 语句后必须有一个分号q其余注意事项和while 循环相似55嵌套 while 循环q 嵌套 while 循环的语法while(i=10).while(i=j).外循环内循环只有在内循环完全结束后,外循环才会进行下一趟。56问题描述:用“*”打印一个直角三角形图案。图案如下所示:*嵌套 while 循环示例 void main()int nstars=1,stars;while(nstars=10)stars=1;while(stars=nstars)printf(*);sta
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 语言程序设计 编辑
限制150内