




已阅读5页,还剩92页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第一章C语言概述,北京大学计算机系代亚非,2,算法和程序初步,例1.1求一个班学生的平均成绩。设A等(85分)12人,B等(70分)16人,C等(60分)6人,D等(按50分计算)5人。如图1.3,开始,A=12,B=16,C=6,D=5,SUM=85A+70B+C60+D50,AVER=SUM/(A+B+C+D),输出AVER的值,结束,A,A,3,算法和程序初步,例1.2输出一个数的绝对值。,开始,输入X,X=0吗?,Y,N,结束,输出-X,输出X,4,算法和程序初步,例1.3输入10个数,把其中的正数输出。,开始,N=0,N10吗?,X=0吗?,N=N+1,输出X,输入X,N,结束,Y,Y,5,算法和程序初步,例1.4输入10个数,求它们的平均值。,6,算法和程序初步,例1.5输入50个学生的成绩,统计出得优秀的人数,7,算法和程序初步,课堂练习1、对一个班40个学生逐个检查,将身高1.60米以上的学生挑出来。2、求Y的值,X由用户给出1(x0)3、求1+3+5+.99,8,算法和程序初步,1、对一个班40个学生逐个检查,将身高1.60米以上的学生挑出来。,9,算法和程序初步,2、求Y的值,X由用户给出1(x0),10,算法和程序初步,3、1+3+5+99,11,简单的C程序介绍,例1.5main()printf(“Thisisacprogram”);,例1.6main()/*求两个数之和*/inta,b,sum;a=123;b=456;sum=a+b;printf(“sumis%dn”,sum);,sumis579,Thisisaprogram,12,简单的C程序介绍,main()是主函数,一个C程序只有一个主函数/*/是注释行,编译系统不对其进行分析inta,b,sum;在C中,变量必须先定义,后使用printf()也是一个函数,它被主函数调用,()中是参数.printf(“sumis%dn”,sum);C语言是有格式输出.,13,第二章数据类型、运算符与表达式,14,C的数据类型,15,常量与变量,常量和符号常量在程序运行过程中,其值保持不变的量。1,0,123为整型常量4.6,1.23为实型常量a,d为字符常量#definePRICE255A=PRICE*B+6C=PRICE+C/120.E=165/PRICE+A*CPRICE是标识符,亦代表常量,叫符号常量习惯上用大写字母表示。,A=255*B+6C=255+C/120.E=165/255+A*C,16,常量与变量,变量在程序运行过程中其值可以改变的量。变量有自己的名字,一个变量对应一定的内存存储单元。例如sum=10sum=20sum所对应的内存单元的内容不再是10而是20。变量名:以字母或下划线开头,后续字母、数字或下划线。,17,常量与变量,合法的变量名由字母、数字、下划线组成,不能用保留字,不能数字开头例如:average,abd,a,s2,student_name,_init不合法的变量名:M.D.John,1a,#33,ab习惯上用小写字母表示在C中标识符通常可以写任意长,但有些系统只识别前8个。将名字反映变量的含义:如:sum,name等,而不要使用a,b,c,d等,18,整型数据,整型常量十进制整数:123,-456,0八进制整数:以0开头的数据,如:-011,0167十六进制整数:以0 x开头的数据,如:0 x123根据数据的数值的大小,分配相应的内存空间。例:main()inta;a=012+0 x12+12;printf(“%dn”,a);,40,19,整型数据,整型变量(常用的)基本型:以int表示长整型:以long表示无符号型:只能存放正整数,它的表示是在上述三种类型之前加上unsigned,如:例如intsum,longdistance,unsignedx,y;,20,整型数据,每种类型所占内存空间和表示的数的范围:数据类型所占位数数的范围int16-3276832768long64-21474836482147483648unsignedint16065535unsignedlong3204294967295,21,整型数据,整型变量的定义对变量的定义一般放在函数的开头部分,例2.1main()inta,b,c,d;unsignedu;a=12;b=24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%dn”,c,d);,不同类型的数可以直接运算,a+u=22,b+u=14,22,实型数据,实型常量实型数又称浮点数。它有两种表现形式:十进制形式(必须包含小数点)。如:0.123、.123、123.0、123.、0.0.都是合法的十进制数表示。指数形式(用exx来表示十的幂次方)如:123e3或123E3都表示123103。,23,实型数据,实型变量C的实型变量分为单精度和双精度两种。单精度占4字节,提供7位有效数字,表示数的范围为10381038。双精度占8字节,提供1516位有效数字,范围为1030810308。实型变量的定义用float表示单精度,double表示双精度如:floatx,y;doublez;,24,实型数据,实型常量不分float和double,根据范围赋值给相应的变量。如:floata;doubleb;a=111111.111;b=111111.111a中实际存储的是111111.1(7位有效)b中实际存储的是111111.111(全部有效),25,字符型数据,字符型常量用单引号括起来的单个字符如a,x,D,#。一些特殊的字符常量以“”开头的字符序列,有特殊的含义,叫转义符。例2.2n表示换行。,26,字符型数据,字符变量一个字符变量只能存放一个字符。它的定义形式如下:charc1,c2;字符变量的赋值形式如下:c1=a;c2=b;c3=101;一个字符占一个字节。字符数据的存储形式在内存中字符变量的存储形式是ASCII码。,27,字符串型数据,字符串常量用双引号括起来的字符序列。如:“Howdoyoudo”,“CHINA”,“a”,“$123.34”等字符串可以一次输出如:printf(“Howdoyoudo”);注意a是字符常量,“a”是字符串常量,二者不同。,28,变量初赋值,在变量定义的同时可以为变量赋初值。如:inta=3;(相当于inta;a=3;)floatf=3.56;charc=a;inta,b,c=5;表示只给c赋初值。(相当于inta,b,c;c=5;),29,各类数值间的混合运算,不同类型的数据(整型、实型、字符型)可以进行混合运算。如10+a+1.58765.1234*b必须首先将它们转换成同一类型的数值。都变成双精度。转换原则是由低向高转换,运算结果为最高级别的类型。,30,各类数值间的混合运算,如:10+a+i*f-d/e,int,double,double,double,+,double,31,算术运算符和算术表达式,算术运算符和算术表达式基本的算术运算、*、%是模运算,既求余运算,要求整数。如7%4的结果是3。说明:5/3的结果仍是整数,小数部分被忽略。5.3/3或5/3.0的结果为double型。什么是表达式?用算术运算符将运算对象按C的语法规则连接起来的式子叫算术表达式。例如:a*b/c1.5+a,32,优先级(算术运算):()*/%+在同一级别中,采取由左至右的结合方向。如:a-b+c相当于(a-b)+c,算术运算符和算术表达式,33,2.8算术运算符和算术表达式,自增、自减运算符:使变量的值加1或减1。如:i,i在使i之前,先使i的值加(减)1i,i在使i之后,再使i的值加(减)1例如:i的值为3,则j=+i;j的值为4,i的值为4j=i+;j的值为3,i的值为4又如:printf(“%d”,+i);输出结果为4printf(“%d”,i+);输出结果为3注意:()和()只能用于变量,34,2.9赋值运算符和赋值表达式,复合的赋值运算在赋值符号前加上其它运算符号则构成复合赋值运算例如:a+=3;等价于a=a+3;x*=y+8;等价于x=x*(y+8);x%=3;等价于x=x%3;,35,2.9赋值运算符和赋值表达式,练习:inta=12;求下列符合运算的结果,aaa*a(设a为12),aaa*a(a为12-12*12=-132),a-132,aa(-132),a-264,36,本章要点,1.常用的数据类型整型(-3276832767)、实型、无符号、字符、字符串2、定义变量,使用变量3、转义符(重点、n,aaa)4、类型转换由低向高系统自动用户强制5、自增、自减6、表达式7、复合运算,37,第三章最简单的C程序设计,38,C语言概述,例求园的面积#DEFINEPI=3.1415926main()floatr,s;r=20;s=r*r*PI;printf(“area=%f”,s);,area=1256.637,39,3.3赋值语句,赋值表达式后面加上分号,构成赋值语句.功能:将数据赋给变量。如:x=3.1;a=d+123+b/d;程序中基本的命令行必须是一个语句,表达式不能单独构成语句.例如:d+123+b/d是一个表达式a=d+123+b/d;是一个赋值语句,40,3.4输出语句,C语言通过调用四个系统函数来实现输入输出。printf(),scanf(),getchar(),putchar()putchar()向终端输出一个字符。例如:putchar(c);,例3.1#include“stdio.h”main()chara,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);,BOY,41,BOY,3.4输出语句,putchar(a);putchar(n);putchar(b);putchar(n);putchar(c);putchar(n);输出其它转义字符putchar(101);输出A;putchar();输出单引号putchar(015);使输出回车,不换行,42,3.4输出语句,printf函数可以按规定格式向终端输出任意类型的数据,一般格式:printf(控制格式,输出列表),被输出的数据,可以是常量、变量、表达式。,用双引号括起的转换控制字符串,它包括两种信息:,格式说明,由%开始。如:%d,%f,%c,普通字符,要输出的字符,43,12,123,12345,3.4输出语句,格式字符(1)d格式符,用来输出十进制数。%d按整型的实际长度输出。a=12,b=123,c=12345;printf(“%d,%d,%d”,a,b,c);12,123,12345%md按给定长度m输出,数字不够长,左边补空格;数字长度大于m,按原长度输出。printf(“%4d%4d%4d”,a,b,c);,44,3.4输出语句,(5)c格式符,用来输出一个字符。如:charc=a;printf(“%c”,c);a,printf(“%3c”,c);,例3.3main()charc=a;inti=97;printf(“%c,%dn”,c,c);printf(“%c,%dn”,c,c);,a,97a,97,45,CHINA,3.4输出语句,(6)s格式符,用来输出一个字符串。例如:%s:按实际长度输出printf(“%s”,“CHINA”);CHINA%ms:当字符串长度小于m时,左边补空格。printf(“%7s”,“CHINAn”);%-ms:当字符串长度小于m时,右边补空格printf(“%-7s”,“CHINAn”);%m.ns输出占m列,但只取字符串左端的n个,并向右对齐。%-m.nsm和n的含义同上,但向左对齐。若n大于m,取m等于n.,46,3.4输出语句,例3.4main()printf(“%3s,%7.2s,%.4s,%-5.3sn”,“CHINA”,“CHINA”,“CHINA”,“CHINA”);,47,3.4输出语句,(7)f格式符,用来输出实数(单精度、双精度),以小数形式输出。%f:不指定宽度,整数部分全部输出,输出6位小数。单精度时,7位数字有效,双精度时,16位数字有效。,例3.5main()floatx,y;x=111111.111;y=222222.222;printf(“%f”,x+y);,例3.6main()doublex,y;x=1111111111111.1111111111;y=2222222222222.2222222222;printf(“%f”,x+y);,333333.328125,3333333333333.333010,48,3.4输出语句,%m.nf整个数据占m位,其中小数占n位,向右对齐。%-m.nf意义同上,向左对齐main()floatf=123.456;printf(“%f%10f%10.2F%0.2f%-10.2fn”,f,f,f,f,f);,49,3.5输入语句,getchar函数(字符输入函数)一般格式:getchar(),例3.8#include“stdio.h”main()charc;c=getchar();putchar(c);,putchar(getchar();输出从键盘得到的值,但不赋给任何变量,a,50,例3.9main()inta,b,c;scanf(“%d%d%d”,345,345,3.5输入语句,scanf格式输入函数一般格式:scanf(格式控制,地址列表)scanf(“%f,%f,%f”,输入为:3,4,6输出为:a=3.00,b=4.00,c=6.00,s=6.50area=5.33,3.5输入语句,53,3.5输入语句,3.11从键盘上输入一个大写字母,分别用大小写字母形式输出,同时输出它们的ascii码。main()charc1,c2;c1=getchar();printf(“%c,%dn”,c1,c1);c2=c1+32;printf(“%c,%dn”,c2,c2);,A,65a,97,54,3.5输入语句,例3,.12求ax2+bx+c=0方程的根,a,b,c由键盘键入,设b2-4ac0#include“math.h”main()floata,b,c,disc,x1,x2,p,q;scanf(“a=%f,b=%f,c=%f”,x1=-1.00 x2=-2.00,55,3.5顺序结构的程序设计,顺序结构:按语句排列的先后顺序执行,写在前面的语句先执行。当计算需要引用一个变量时,该变量一定要事先定义、赋值,然后才能出现在表达式中.,A,B,传统的流程图,A,B,N-S图,56,本章要点,掌握C语言的一般结构函数、说明部分、语句部分(执行部分)输入输出语句的使用对整数、浮点数、字符和字符串的输出格式要掌握。顺序执行程序的特点按照程序书写的顺序逐条执行,直至main()的最后一条语句。,57,第四章逻辑运算和判断选取控制,58,关系运算实际上是两个量的比较,比较的结果只有两种可能:真、假例如a3?当a=5时,比较的结果为真,当a=1时,结果为假。有六种关系运算符(,=,)(=,!=)关于优先次序,=为同一级别,=和!=为同一级别.在同一级别中,采取由左至右的结合方向.,4.1关系运算符和关系表达式,59,4.1关系运算符和关系表达式,例:ca+bc(a+b)ab!=c(ab)!=ca=bca=(bc)(赋值运算级别最低)关系表达式用关系运算符将两个表达式连接起来,叫关系表达式。,60,4.1关系运算符和关系表达式,合法的关系表达式:ab,a+bb+c,(a=3)(b=5),(a=3)(b=5),ab)(b=0的值为真(在计算机中记为1)。,61,4.1关系运算符和关系表达式,例:a=3,b=2,c=1,则:ab的值为1(ab)=c的值为真(即1)ab的值为1,c也为1,(ab)=c相当于1=1,结果为真,即(ab=c)的值为1。b+cb中d的值为ab的值,为。f=abc中的值为c的值,为。,62,4.2逻辑运算符和逻辑表达式,逻辑运算-产生真假值的运算逻辑运算符,70,P,Y,N,A,B,4.3if语句,2.if(表达式)语句1else语句2条件满足时执行语句1,然后继续执行if以下的语句。条件不满足时,执行语句2,然后继续执行if以下的语句。例如:输出两个数中较大的一个if(xy)printf(“%d”,x)elseprintf(“%d”,y);,71,4.3if语句,3.if语句1;elseif语句2;elseif语句3;elseif语句4;else语句5,商场促销,购物500元以上,8折购物300元以上,85折购物100元以上,9折购物50元以上,95折购物50元以下,不打折设:消费量为money折扣为cost实际花费price,72,4.3if语句,例:根据消费量,计算优惠率。if(money500)cost=0.2;elseif(money300)cost=0.15;elseif(money100)cost=0.1;elseif(money50)cost=0.05;elsecost=0;price=money-(money*cost);另外一种写法:if(money500)cost=0.2;if(money300)cost=0.15;if(money100)cost=0.1;if(money50)cost=0.05,elsecost=0;(这样写对不对?为什么?),cost=0;,73,4.3if语句,说明:表达式指的是关系表达式或逻辑表达式,条件满足指的是表达式的值为真,即表达式的值是一个非值。例如:if(3)printf(“O.K”);输出O.K(永真)if(a)printf(“%d”,a);输出97(永真)if(0)printf(“false”);(永假)if的条件满足后执行的语句并非指单一的一条语句,可以是多个语句,只要用括起即可。,74,4.3if语句,if(a+bc),例4.1输入两个数,按数值大小次序排列输出.main()floata,b,t;scanf(“%f,%f”,输入为3.6,-3.2输出为-3.20,6.20,75,4.3if语句,例4.2输入三个数,按由小到大次序排列并输出。,76,4.3if语句,if语句的嵌套if()if()语句1else语句2elseif()语句3else语句4,内嵌if,内嵌if,else总是从最内层开始结合if(a)if(b)语句1elseif(c)语句2else语句3,什么条件执行语句1,什么条件执行语句2,3?,内嵌if,77,4.3if语句,if(a)if(b)语句1elseif(c)语句2else语句3,(与第一行的if配对,因为限制了内嵌if语句的范围),什么条件执行语句1,什么条件执行语句2,3?,78,main()nitx,y;scarf(“%d”,x=4,y=1,4.3if语句,当条件区间不能一次划分时,要逐步划分。第一种情况,先将x=0划分出来.,79,4.3if语句,条件运算符max=(ab)?a:b;条件表达式当(ab)为真时,表达式取a的值当(ab)为假时,表达式取b的值条件运算符是三目运算符表达式1?表达式2:表达式3条件运算符的结合方向为“从右向左”例如:ab?a:cd?c:d相当于ab?a:(cd?c:d)如果a=1,b=2,c=3,d=4,则条件表达式的值为4。,80,4.3if语句,例4.4输入一个字符,判断大小写,如是大写,则转换成小写,输出。,main()charchi;scarf(“%c”,printf(“%c”,ch),if(ch=Aprintf(“Enteryourgraden”);scanf(“%c”,default:printf(“errorn”),如:case85100:prinf(“An”);(错,因为case不能表示范围,成绩不能表示成常数表达式)。,4.4switch语句,例:根据成绩等级打出成绩范围,83,4.4switch语句,关于switch的说明switch后面的表达式一般情况下应该是有序型的量,目前学到的有序型是整数、字符。常量表达式的值必须互不相同。必须break语句用终止多个case连续执行,否则只要有一个case满足后,以下的语句全部无条件执行。,84,4.4switch语句,例:switch(grade);caseA:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年环境保护培训试题及答案
- 2025年创业教育考试题目及答案
- 预拌商品混凝土生产成本控制方案
- 汽车零部件生产建设项目建设工程方案
- 离婚协议书:针对跨国婚姻的财产分配及子女监护协议
- 临时租房合同范本:城市青年短期租住协议
- 系统化处理哺乳期离婚财产分割及子女抚养合同范本
- 离婚协议书:共同财产生意分割及子女抚养权明确协议
- 二手房买卖合同签订中的合同履行与违约责任承担
- 合同管理制度培训与合同管理师职业素养提升
- 专家讲座:小学数学新课程标准解读
- GB 45669.4-2025黄河流域工业用水定额第4部分:水泥
- 消化诊断内镜技术操作规范2023版
- 收割芦苇施工方案
- 湖北省公务员遴选考试题目及答案
- 医疗机构小儿推拿技术规范-公示稿
- 吊篮临时用电施工方案
- 2025-2030中国小麦加工行业市场发展分析及发展趋势与投资前景研究报告
- 肠系膜上动脉夹层护理查房
- 减盐减油知识课件
- 焊接过程化学反应
评论
0/150
提交评论