分享
分销 收藏 举报 申诉 / 434
播放页_导航下方通栏广告

类型C语言编程入门教程精简版.ppt

  • 上传人:精***
  • 文档编号:12816632
  • 上传时间:2025-12-10
  • 格式:PPT
  • 页数:434
  • 大小:877KB
  • 下载积分:25 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    语言 编程 入门教程 精简
    资源描述:
    单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,C语言编程入门教程精简版,第一章 计算机语言与C语言概述,1.1 计算机语言概念,计算机语言定义,计算机能够识别和接受的语言。,要使计算机按自己的意图工作,必须使用计算机所能接受、理解和执行的指令指挥计算机工作。,计算机语言的种类,机器语言,低级语言,汇编语言,(,面向计算机,),BASIC,入门语言,F77,科学计算,高级语言,Foxpro,数据库管理,(,面向问题,),C,多用途,计算机语言,机器语言,最早问世,用二进制代码构成指令。,如:100000 (+)110000(-),用机器语言编程的缺点:,繁琐、不直观、不易调试。,如计算y=2x,2,+3x-1需要七八条指令。,移植性差。依赖于计算机。,汇编语言,用符号构成指令,如:,MOV、ADD,用汇编语言编程:,相对直观,但仍繁琐,仍是面向计算机的语言。,汇编语言是计算机间接接受的语言,高级语言,与低级语言相比,有根本性的区别:,是面向问题的语言。,高级语言的一条指令(语句):,y=2*x*x+3*x-1;,对应于:y=2x,2,+3x-1,y=sin(x);,对应于:y=sinx,用高级语言编程:,直观,、易懂、移植性好(不依赖于具体计算机),上机运行高级语言程序需经过,编译,:,编译,执行,要上机完成一个计算问题,主要的任务就是用高级语言编写出相应的,源程序。即至少要学会一种计算机语言。,高级语言源程序,机器指令,目的程序,结果,编译程序,1.2 C语言的特点,集高级语言和低级语言的优点于一身,:,能实现低级语言的大部分功能(如直接访问内存物理地址、进行位操作等)。,图形功能强。,运算符和数据结构丰富。,语法限制不太严格,程序设计自由度大。,生成目标代码质量高,程序执行效率高。,1.3 简单的C程序介绍,例1:,main(),主函数说明,程序框架,printf(“abcdef”);,函数体,语句,程序的功能是输出字符串:,abcdef,例2:求两数之和。,main(),int a,b,c;,a,a=100;b=50;,b,c=a+b;,c,printf(“n c=%d”,c);,程序运行结果:,c=150,例3:求两数中的最大值。,函数类型 函数名 形参,main(),int max (int x,int y),int a,b,c;,int z;,scanf(“%d,%d”,if(xy)z=x;,c=,max(a,b),;,else z=y;,printf(“nmax is:%d”,c);,return(z);,a,x,b,y,c,z,(两个函数组成),3,5,3,5,5,5,总结上例可知:,(1)C程序,由函数构成,。,(2)函数由两部分组成:,函数说明,部分:函数名、函数类型、形参名、形参类型。,函数体,:实现函数的具体操作;由语句构成。,(3)程序总是,从main函数,开始执行。,(4)书写格式自由。,(5)语句必须有分号。,:,第二章 算法,2,.1 算法的概念,要利用计算机处理问题,光学习语言的语法规则还不够,最重要的是要学会针对各类型的问题,拟定出有效的解题方法和步骤。,解题方法和步骤就是算法,。,算法,:,为了解决一个问题而采取的有限步骤。,计算机算法,:,如何使计算机一步一步地工作的具体过程。,利用计算机处理问题的步骤:,1)设计好算法,算法设计,;,2)用计算机语言实现算法,程序设计,。,算法必须是“有效”的。,算法设计还要充分考虑算法的好坏。,衡量算法好坏的主要标准:,程序简练。,执行速度快。,占空间少。,例:考虑 的算法。,算法,:,直接表达。,直接用语句 s=1+2+3+4+5+6+7+8+9+10,当项数较多时该算法不适用,s=,i,1,10,算法,:,迭代法(累加求和法),s=1+2+3+4+5+6+7+8+9+10,算法步骤:,s i,使s=0,+,使i=1,累加器 记数器,s+is,i+1i,若i10转,否则转,输出s,0,1,1,2,3,3,6,4,10,5,该算法通用,是好算法,2.2 算法的表示,算法需要有统一的表示方法,常用的表示方法有:,自然语言,流程图,结构化流程图,N-S流程图.,1、,自然语言,对于计算,s=1+2+3+4+5+6+7+8+9+10,用自然语言表示为:,使s=0,(s为累加器),使i=1,(i为计数器),s+is,(累加求和公式),i+1i,(计数器加1),若i10转,否则转,输出s的值,特点:通俗易懂、文字冗长、含义不大严格。,2、,流程图,用流程图符号表示算法。,常用的流程图符号,起止框,输入输出框,处理框,流程线,判断框,对于计算 s=1+2+3+4+5+6+7+8+9+10,用流程图表示为:,s+i,s,i+1,i,S+i,s,S+i,s,i,10,输出s,0,s,1,i,直观形象,易于理解,次序清楚,Y,N,3、,结构化流程图,传统的流程图有一个弊端:对流程线没有严格的限制,对于较复杂的算法可能会变成乱麻一般(BS型算法)。为克服这一弊端,提出了由三个基本结构组成算法流程图的思想:,结构化流程图,三个基本结构:,顺序结构,按固定顺序(从上到下或从左到右)执行的结构。,A,B,a,b,选择结构,根据条件P选择执行哪一个分支。,成立,不成立,p,A,B,a,b,成立,不成立,例:,计算,y=1/x 当x0时,y=10000 当x=0时 的算法流程图图:,选择结构,输入,x,X=0?,10000,y,1/x,y,输出,y,Y,N,循环结构,重复执行某些操作的结构。,分为两种:,当型循环,和,直到型循环,。,当型循环,直到型循环,P1,A,A,P2,a,a,b,b,Y,Y,N,N,可以看出,每个基本结构都只有一个入口和一个出口,因此,用三个基本结构构成的流程图不会象乱麻一般,用三个基本结构构成的流程图就成为,结构化流程图,,用结构化流程图描述的算法称为,结构化算法,,相应的程序设计就称为,结构化程序设计,。,观察前例,:,0,s,1,i,S+i,s,i+1,i,i,10,输出,s,顺序结构,循环结构,y,n,4,N-S流程图,N-S流程图的三个基本结构:,A,B,P,成立,不成立,A,B,A,B,当,P1,直到,P2,顺序结构,选择结构,循环结构,例:,计算,y=1/x 当x0时,y=10000 当x=0时,的N-S流程图:,输入,x,X=0?,是,否,10000,y,1/x,y,输出,y,例:计算 s=1+2+3+4+5+6+7+8+9+10,的N-S流程图:,i10,直到,i10,直到型,当型,0,s,1,i,输出,s,1,i,0,s,s+i,s,i+1,i,s+i,s,i+1,i,输出,s,第三章 数据类型,、,运算符,与,表达式,3.1 C 的数据类型,基本类型,(整型,、,实型,、,字符型,、,枚举型),构造类型,(略),指针类型,(略),空类型 各类型包含,常量,与,变量,3.2 常量与变量,常量与符号常量,常量,在程序运行过程中其值保持不变的量。,符号常量,用来代表一个常量的标识符。,#define PI 3.1415926,例:,#define,PI,3.1415926,main(),float,r,=2,c,;,c,=2*,PI,*,r,;,printf(“%f”,c,);,变量,其值可以改变的量。,变量的三要素:,变量名,每个变量有一个名字,作为识别该变量的标识符。,变量的值,每个变量有一个值,变量的值是随时可以改变的。,变量的存储单元,每个变量占据一个内存单元,用于存放变量的值,。,变量名,a,变量值,存储单元,3,变量的命名规则:,由字母、数字和下划线组成,以字母或下划线开头,a、x1、y_2、_b1、_1c 合法,1x、a+2、不合法,变量必须先定义后使用。,程序中何时使用常量?何时使用变量?,3.3 整型数据,整型常量,即整常数,c的整常数有三种形式:,十进制整数,与数学中的整数一致,如:100,123,15等。,八进制整数,以0开头的整数,如:010,07,020等。,十六进制整数,以0 x开头的整数,如:0 x10,0 xff,0 x2a等。,整型变量,用于存放整数的变量。,分4种类型:,基本型:int a,16位,可表示的数值范围:-3276832767,短整型:short int b,16位,可表示的数值范围:-3276832767,长整型:long int c,32位,数值范围:-21474836482147483647,无符号型:加上 unsigned,只存放正数。,如:,unsigned int x,变量x为无符号整数,16位全表示数码,,数值范围:065535,在程序设计中,如果要使用整型变量,必须首先选择以上类型符来定义变量,然后才能使用;,例:,main(),定义,int a,b,c;,a=100;b=50;,使用,c=a+b;,printf(“%d”,c);,一般根据什么原则选择变量的类型?,3.4 实型数据,实型常量,可使用两种形式表示:,小数形式:,如 1.23,3.1415926 15.48,指数形式:,如 1e-20 1.23e5,实型变量,用于存放实数的变量,分单精度和双精度两种:,float a,b,定义a和b为单精度型变量,32位,7位有效数字,,10,-38,10,38,double x,y,定义x和y为双精度型变量,64位,15位有效数字,,10,-308,10,308,例:,main(),float r,c;,double r,c;,r=5;,c=2*3.1415926*r;,printf(“%f”,c);,3.5 字符型数据,字符常量,用单引号括起来的一个字符。,a,x,*,1等,除此外,以开头的字符如n,t等,称为转义字符,祥见书表3.3,字符型变量,用于存放字符的变量。,char c1,c2,定义c1和c2为字符型变量,c1=a;c2=b;,字符赋值,字符型变量存放一个字符,占据一个字节,字符型数据的存储形式,存放ASCII码,不是 而是,如字符a在内存中存放,97,,b 存放,98,。,与整数的存储形式一致,它们之间可以通用,一个字符数据既可以作字符用,也可以作整数用(取其ASCII代码)。,如:32+a相当于 32+97,若 int x;char c;,则 x=a;c=97;x=97;c=a;都允许,a,97,字符串常量,用双引号括起来的字符序列。,如:,”abcde”,”china”,”,a,”也属字符串。注意,”a”,与,a,的区别。,对于:,char c;,c=”a”;,用法错误,字符串中每个字符各占一个字节,并且在字符串结尾加上一个结束标记,0,如:,”china”,在内存中占6个字节。,c h i n a 0,C语言中专门的字符串变量,可用字符数组存放(以后介绍)。,3.6 变量赋初值,在定义变量的同时给相应的变量赋初值。,如:,int a=3;,a,float b=5.2;,char c=a;,int x=y=z=6;,效果:,在给变量分配内存单元的同时在相应的单 元中存放初值。,3,3.7 各数值型数据间的混合运算,整型、实型、字符型数据间可以进行混合运算,如:,10-a*1.5,运算时,参加运算的两个数据如果类型不同,则首先将其类型转换成一致再运算,转换规则是:,将优先级低的类型转换到优先级高的类型,数据类型的优先级:,高,double float,long,unsignde,低,int char,3.8 算术运算符与算术表达式,基本的算术运算符,+-*/%,算术表达式,用算术运算符将运算对象连接起来的式子,用于表达数学公式的式子,如:2*x+y-1/a,表达式经过运算最终得到一个值:,算术表达式的值,运算符的优先级与结合性,优先级:,在对表达式求值时,如果存在多个运算符,则运算的先后次序按运算符的优先级别从高到底进行。,运算符的优先级关系为:,高:*/%,低:+-,如:a-2*x 先算*,2*(a+2)有括号的情况?,结合性:,如果在一个运算对象两边的运算符的优先级相同,则按规定的“结合方向”处理。,如:,a-b+c,b与,-,结合是从左到右,称“,左结合性,”。,b与+结合是从右到左,称“,右结合性,”。,每个运算符都有相应的优先级和结合性。,基本算术运算符都是,左结合性,。,计算表达式例:,2+A-1/2.0 1+3/2-1,构造表达式例,2x,2,+3x-1,a+b,a-b,a+b,a-b,x+y,x-y,a+b/a-b,?,(a+b)/(a-b),2*x*x+3*x-1,(*,不能省,),(a+b)/(a-b)/(x+y)/(x-y),(a+b)/(a-b)/(x+y)/(x-y),(a+b)/(a-b)/(x+y)*(x-y),强制类型转换,可以用强制类型转换运算符将一个表达式的值转换成所需类型:,如:,(int)(x+y),(float)(7%3),应用举例:,int a=200,b=300,c;,c=a*b/100;,?,可知,有自动转换和强制转换,,当自动转换达不到目的时,可用强制转换。,c=(long)a*b/100;,c=(long)(a*b)/100;,自增、自减运算符,自增运算符:,+,使变量值加1,自减运算符:,-,使变量值减1,两种用法:,+i,-i,先加(减)后用,i+,i-,先用后加(减),两种用法对i效果一样,但表达式的值不同。,例,:假设i的原值为5:,j=+i;j=?,j=i+;j=?,注意:,+和-只能用于变量。,如:3+和(a+1)+,不合法,+和-为右结合性。,(-i)+,-i+,-(i+),若i的原值是5,则该表达式的值是多少?,例:分析执行下列语句后的结果:,a=5;,a b c d,b=a+;,c=-a-b+;,d=(a+)-(+b)+c-;,5,5,6,5,0,6,7,-2,6,-1,两种特殊情况:,k=(i+)+(i+)+(i+),i+j,是,i+(+j),还是,(i+)+j,?,i+虽然与i=i+1等效,但使用自增自减运算符的代码优化程度好,因而经常使用;但用时需特别小心。,3.9 赋值运算符和赋值表达式,赋值运算符,“=”称赋值运算符,其作用是将一个数据赋给一个变量。,如:,a=5,不要理解为“等号”。,执行赋值运算的结果,是将右边的数据存入左边变量所对应的内存单元中。,赋值规则,如果赋值运算符两侧的类型不一致,则在赋值时要进行类型转换,转换规则为:,实型整变量,舍去小数部分。,int a=5.5;a中为5。,整型实变量,数值不变,以浮点形式存储。,字符型整变量,放在整形变量低8位。保持原值不变原则。,int a=A;,复合赋值运算符,在赋值运算符前加上其它运算符,可以构成复合赋值运算符。,a+=3,a=a+3,b-=x+5,b=b-(x+5),x*=c-6,x=x*(c-6),y/=a*4,y=y/(a*4),k%=b-2,k=k%(b-2),属于高效率运算符。,赋值表达式,主要实现赋值运算的表达式。,一般形式:,=,如:a=5 y=2*x+3 a=a+1,不是衡等,作用:,将右边表达式的值赋给左边的变量,。,赋值表达式的值取左边变量的值。,赋值表达式右边的可以是任何表达式,如:,a=(b=5),赋值表达式中包含赋值表达式,赋值运算符的优先级低于所有算术运算符,且是右结合性。,a=(b=5),与,a=b=5,等效。,例:计算以下表达式的值:,a=b=c=5,a=5+(c=6),a=(b=4)+(c=6),a=(b=4.5)+(c=6.5),(a、b、c为整型变量),a+=a-=a*a,(设a的原值为3),赋值表达式是C语言中的一个重要成分,在赋值表达式后加一分号就成为常用的赋值语句。如,y=2*x+1;,赋值表达式作为表达式的一种,可以出现在任何表达式中,如:,x+2-(b/3-(,a=k-5,)+b,3.10 逗号表达式,逗号也是一种运算符,用它对两个表达式实现连接运算。,3+5,6+8,称,逗号表达式,。,逗号表达式的一般形式:,表达式1,表达式2,取,表达式2,的值作为整个逗号表达式的值。,如:,a=3*5,a*4,逗号表达式的值为:,60,一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如:,(a=3*5,a*4),a+5,因此,逗号表达式的一般形式可以扩展为:,表达式1,表达式2,表达式3,,表达式n,取,表达式n,的值作为整个逗号表达式的值。,逗号运算符的优先级最低,且是左结合性。,逗号运算符只起到连接作用,没有实际操作,。,第四章 最简单的C程序设计,C 程序最基本的成分是语句,目前我们已掌握的语句:,变量说明语句:,int a,b,c;,表达式语句:,x+y;,特别地:,a=5;,赋值语句,可以编写简单程序如:,main(),int x,y;,x=5;,y=2*x*x+3*x-1;,该程序语法上完整,但还缺少输出。,数据的输出,用输出函数实现,其中的两种输出函数:,1.putchar 函数,(字符输出函数),用于输出一个字符。,如:,putchar(a);,putchar(100);,char c=b;putchar(c);,例,:输出单词Boy的完整程序:,#include“stdio.h”,注意该语句的作用,main(),char a,b,c;,a=B;b=o;c=y;,putchar(a);,putchar(b);,putchar(c);,2.printf,函数,(格式输出函数),任意类型、任意格式、任意个数。,例如:,int a=100,b=56;,printf,(,“a=%d,b=%d”,a,b,);,普通字符 格式说明,格式控制,输出表列,输出结果:,a=100,b=56,“%”后的字符称格式字符,不同格式字符对应不同的数据类型。,d,格式符:,按整数格式输出,几种用法:,%d,不指定宽度,按实际宽度输出,%md,按指定宽度输出,m为宽度,%ld,用于输出长整型数,例:,int a=125,b=453;,long c=65535;,printf(“a=%d,b=%5d,c=%ld”,a,b,c);,输出结果:,a=125,b=453,c=65535,%ld也可以按指定宽度输出:,printf(“c=%8ld”,c);,输出结果:,c=65535,注意:格式字符的类型要与对应的输出对象的类型一致。,c格式符:,用于输出字符,char c=A;,printf(“c=%c,%c”,c,B);,输出结果,:,c=A,B,输出对象既可以是字符变量、字符常量,还可以是整型表达式。,如:,int a=100;,char b=A;,printf(“n%d,%c”,a,a);,printf(“n%c,%d”,b,b);,输出结果:,100,d,A,65,s格式符:,用于输出字符串,%s,不指定宽度,%-ms,指定宽度,左靠齐,%ms,指定宽度,右靠齐,%m.ns,指定宽度m,只取左端n个字符,,右靠齐,%-m.ns,指定宽度m,只取左端n个字符,,左靠齐,例:,printf(“1:%s”,”abcd”);,printf(“2:%8s”,”abcd”);,printf(“3:%-8s”,”abcd”);,printf(“4:%8.3s”,”abcd”);,printf(“5:%-8.3s”,”abcd”);,1:abcd2:abcd3:abcd 4:abc5:abc,f格式符:,按小数形式输出实数,%f 由系统指定宽度(6位小数),%m.nf 指定宽度m,小数位数n,右靠齐,%-m.nf 指定宽度m,小数位数n,左靠齐,注意:宽度包括符号和小数点,。,例:,float a=3.141592654,b=14.326795,c=-125.2468;,printf(“na=%f,b=%8.3f,c=%-10.2f”,a,b,c);,输出结果:,a=3.141592,b=14.326,c=-125.24,完整前面的程序:,main(),int x,y;,x=5;,y=2*x*x+3*x-1;,printf(“n y=%d”,y);,程序设计例:,编写程序计算如图中的电流I,.,假设,U=220,R1=30,R2=60,R3=45,U,I,R1,R2,R3,算法设计,:,I=U/R1+U/R2+U/R3,程序设计:,main(),I=U/R1+U/R2+U/R3;,int U=220,R1=30,R2=60,R3=45;,float I;,printf(“n I=%f”,I);,正确的程序:,main(),int U=220,R1=30,R2=60,R3=45;,float I;,I=,(float),U/R1+,(float),U/R2+,(float),U/R3;,printf(“n I=%f”,I);,考虑通用,:,main(),int U,R1,R2,R3;,float I;,输入 U,R1,R2,R3,I=(float)U/R1+(float)U/R2+(float)U/R3;,printf(“n I=%f”,I);,数据的输入,getchar,函数(,字符输入,),#include“stdio.h”,main(),char c;,c=getchar();,等待键盘输入,putchar(c);,scanf,函数,(格式输入),与printf函数相反。,用于输入若干任意类型的数据。,scanf,(,“%d%d%d”,&a,&b,&c,);,格式控制,地址列表,scanf,(,“%d%d%d”,&a,&b,&c,);,执行此函数时,等待从键盘输入三个整数给a,b,c,若从键盘输入 3 5 8,则系统即从键盘缓冲区取出这三个数分别赋给a,b,c,注意与printf的区别,注意格式的匹配,如:,scanf(“%3d%2d%4d”,若从键盘输入123456789,a=123,b=45,c=6789,若想使a=12,b=5,c=100,则键盘输入应为:12 5 100,方便的输入格式一般不 指定宽度,,如:,scanf(“%d%d%d”,在键盘输入时,用分隔符把每个数据隔开,标准的分隔符是空格。,如:123 150 23,若想用逗号作分隔符,则:,scanf(“%d,%d,%d”,不要随便使用普通字符,如使用:,scanf(“a=%d,b=%d c=%d”,&a,&b,&c),对应数据输入:,a=123,b=150,c=23,前面的欧姆定律:,main(),int U,R1,R2,R3;,float I;,scanf(“%d%d%d%d”,I=(float)U/R1+(float)U/R2+(float)U/R3;,printf(“n I=%f”,I);,求三角形面积,#include “math.h”,main(),float a,b,c,area,s;,scanf(“%f,%f,%f”,s=1.0/2*(a+b+c);,area=,sqrt,(s*(s-a)*(s-b)*(s-c);,printf(“n area=%f”,area);,使用数学函数,使用三角函数,#include “math.h”,main(),float x,y;,scanf(“%f”,y=,sin(x*3.1415926/180,);以弧度为单位,printf(“n y=%f”,y);,第五章 选择结构程序设计,对于如下的函数计算,算法上属于一个选择结构。,y=,用于实现选择结构的主要是if语句。,1/x 当x0时,10000 当x=0时,if语句的最常见形式为:,if(,关系表达式,)语句1;,else 语句2;,如:,if(,x!=0,)y=1/x;,else y=10000;,其中,x!=0,就是一个关系表达式,!=,就是一个关系运算符,51 关系运算符和关系表达式,1、关系运算符,用于进行比较运算的运算符。共有六种:,=!=,优先级与结合性:,前4种大于后两种。,低于算术运算符而高于赋值运算符。,左结合性。,2、关系表达式,一般形式:,表达式关系运算符表达式,如:,ab a+bb+c,经过关系运算后最终有一个值-,关系表达式的值,。,关系表达式的值只有,0,(,假,)或,1,(,真,),例:,设 a=2,b=4,c=1 计算以下关系表达式的值:,ab,a+bb+c,ab,可以是字符表达式,(x=2)(y=5),可以是赋值表达式,(a(bc),甚至可以是关系表达式,ab=by,xy=yz=xz,yxz,(x=y-2)z+1=x+y,a=x+y=x+zx+1,52 逻辑运算符和逻辑表达式,有时,只用一个简单的关系表达式无法完整地表达一个条件,如:,y=,其中的条件需要用逻辑表达式来表达:,x!=0&a!=0,&,就是一种逻辑运算符。,1/x+1/a 当x0,a0时,10000 其它,1、逻辑运算符,&,逻辑与,两个操作数都为真时&运算结果为真。,|,逻辑或,两个操作数之一为真时即为真。,!,逻辑非 (,单目运算,),操作数为真(,假,)时为假(,真,)。,如:,若 a=2,b=3,c=0 则:,ab&bc,0,ab|bc,1,!(ab),0,优先级,(由高到低):,!逻辑非,算术运算符,关系运算符,&逻辑与,|逻辑或,赋值运算符,结合性:,左结合性,2、逻辑表达式,实际上,前面所举例子即为逻辑表达式,:,ab&bc ab|bc !(a=b=c,5=4=3,a=b&b=c,a=0&b!=0|a!=0&b=0,a*b=0,a*b=0&a+b!=0,对于,a=0&b!=0|a!=0&b=0,a=0可以用!a代替,a!=0可以直接用a,!a&b|a&!b,但必须是运算结果作为逻辑量的情况下。,y=(,a!=0,),与,y=,a,不等效,53 if语句,1、if语句的三种形式,if(,表达式,)语句;,有一分支为空。,scanf(“%d”,if(,score=60,)printf(“pass”),;,if(,表达式,)语句1;,else 语句2;,if(,x!=0,)y=1/x;,else y=10000;,if(,表达式1,)语句1;,else if(,表达式2,)语句2;,else if(,表达式3,)语句3;,else 语句n;,if(score=100)printf(“A”);,else if(score=90)printf(“B”);,else if(score=80)printf(“C”);,else if(score=70)printf(“D”);,else if(score=60)printf(“E”);,else printf(“F”);,对于:,1/x 当x0时,10000 当x=0时,一般用:,if(x!=0)y=1/x;,else y=10000;,也可用:,y=10000;,if(x!=0)y=1/x;,y=,?,y=1/x;,if(x=0)y=10000,例:(习题5.5):,x (x1),2x-1 (1,x,10),3x-11 (x,10),y=,main(),float x,y;,scanf(“%f”,if(x1)y=x;,else if(x10)y=2*x-1;,else y=3*x-11;,printf(“n y=%f”,y);,说明:,语句中的表达式可以是任意表达式:,if(,x,)y=1/x;,else y=10000;,一个if结构不可分割:,if(x)y=1/x;,z=10;,else y=10000;,一个分支中包含多个语句时,要用,:,if(amax)max=b;,if(cmax)max=c;,printf(“n max=%d”,max);,例:,从键盘输入三个整数到变量a,b,c,要求按从大到小的顺序输出。,两种典型算法:,枚举法,(将各种可能的排列枚举出来)。,换位法,(将a,b,c中的数据换位)。,换位法,main(),int a,b,c,t;,scanf(“%d,%d,%d”,if(ab)t=a;a=b;b=t;,if(ac)t=a;a=c;c=t;,if(b=80),if(score=90)printf(“A”);,else printf(“B”);,else,if(score=60)printf(“C”);,else printf(“D”);,注意else与if的匹配,3、条件运算符,如果两个分支的内容都是给同一个变量赋值,则可用简单的条件运算符处理:,if(ab)max=a;,else max=b;,可用:,max=,ab,?,a,:,b,;,赋值运算符右边为一条件表达式。,条件表达式的一般形式:,表达式1?表达式2:表达式3,条件表达式的执行过程:,ab,?,a,:,b,优先级:,低于关系运算符,高于赋值运算符。,结合性,:右结合性。,表达式1,条件表达式,取表达式3的值,条件表达式,取表达式2的值,非,0,0,例:求a,b,c中的最大值:,max=ab,?,(ac,?,a,:,c),:,(bc,?,b,:,c);,54 switch语句(,多分支,),适用于根据一个表达式的值就可确定走哪个分支的情况。,switch,(,表达式,),常量表达式1:语句1,常量表达式2:语句2,常量表达式n:语句n,default:语句n+1,例:成绩分档:,switch(,score/10,),case 10:printf(“A”);,case 9:printf(“B”);,case 8:printf(“C”);,case 7:printf(“E”);,case 6:printf(“F”);,default:printf(“G”);,注:应使用break.,switch(,score/10,),case 10:printf(“A”);,break;,case 9:printf(“B”);,break;,case 8:printf(“C”);,break;,case 7:printf(“E”);,break;,case 6:printf(“F”);,break;,default:printf(“G”);,55 程序举例,(习题5.10),有4个圆塔,圆心分别为:(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1。这4个塔的高度为10m,塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为0)。,算法设计:,条件“在某一圆内”:,“,在圆1内或在圆2内或在圆3内或在圆4内,”,若设变量c1、c2、c3、c4分别代表是否在相应的圆内,则以上条件为:,c1|c2|c3|c4,10,在某一圆内,0,在圆外,(x,y),h=,c1=(x-2),2,+(y-2),2,1,c2=(x+2),2,+(y-2),2,1,c3=(x+2),2,+(y+2),2,1,c4=(x-2),2,+(y+2),2,1,main(),int h,c1,c2,c3,c4;,float x,y;,scanf(“%f%f”,c1=(x-2)*(x-2)+(y-2)*(y-2)=1;,c2=(x+2)*(x+2)+(y-2)*(y-2)=1;,c3=(x+2)*(x+2)+(y+2)*(y+2)=1;,c4=(x-2)*(x-2)+(y+2)*(y+2)=1;,if(c1|c2|c3|c4)h=10;,else h=0;,printf(“n h=%d”,h);,第六章 循环控制,61 概述,所谓循环控制,就是如何实现循环结构的控制问题。,有4种方法:,用goto语句和if构成循环。用while语句。用do-while语句。用for语句。,62 用goto语句和if语句构成循环,例:对于计算,s=1+2+3+4+5+6+7+8+9+10,0 s,1 i,s+i,s,i+1,i,i,10,输出,s,y,n,s=0;,i=1;,lable:,s+=i;,i+;,if(i=10),goto lable,;,printf(“%d”,s),;,语句标号,无条件转向语句,goto 语句可以构造循环,但不主张用,因为它容易破坏结构化程序设计。,goto 语句可以构造循环,,但不主张用,因为它容易破,坏结构化程序设计。,63 while语句,while语句是专门用于实现循环控制的语,句之一。,其一般形式为:,while(表达式)语句,含义:当表达式的值为非0时,执行循环体,否则执行后续语句。,语句关键,表达循环条件的表达式,循环体,语句关键字,执行过程:,while(表达式)语句,表达式,循环体,0,非0,i,10?,s=0,i=1,s=s+i,i=i+1,例:用while语句实现前面算法:,main(),int i=1,s=0;,while(i=10),s=s+i;,i+;,printf(“n%d”,s);,注意与if语句的区别。,循环体中要有使循环条件趋于成立的条件,y,n,while(i=10),s=s+i;,i+;,可简写为:,while(i=10)s+=i+;,非0(真),0(假),表达式,循环体,64 do-while语句,do-while语句主要用于实现直到型循环。,其一般形式为:,do,循环体,while(表达式);,执行过程:,真,s=0,i=1,i,10?,s=s+i,i=i+1,假,例:用do-while语句实现前面算法:,main(),int i=1,s=0;,do,s+=i+;,while(i=10);,printf(“n%d”,s);,注意,与while语句的区别。,假,表达式2,求解表达式1,循环体,求解表达式3,真,65 for 语句,for语句是一种使用最为灵活,,并且是用得最多的循环控制语句,,其一般形式为:,for(表达式1;表达式2;表达式3),循环体,大体含义:,对于()的情况执行循环体内容。,例:用for语句实现前面的算法:,s=0;,for(i=1;i=10;i+)s+=i;,标准形式,表达式,1,表达式2,表达式3,循环体,可以理解:,循环变量i从初值1开始到终值10,步长为1,重复执行循环体。,for语句的常见变化:,s=0;i=1;,for(;i=10;i+)s+=i;,s=0;for(i=1;i=10;)s+=i+;s=0;i=1;for(;i10)break;,s=10;i=10;,for(;-i;)s+=i;,省略表达式2,表达式2是任意表达式,s=0;,for(i=1,j=10;ij;i+,j-)s+=i+j;,1 2 3 4 5 6 7 8 9 10,在程序设计中不要过分追求它的多变性,i,j,用逗号表达式,例:,求n!n!=1*2*3(n-1)*n,参照累加求和,main(),int i,n=5,s=1;,for(i=1;i=n;i+)s*=i;,printf(“n s=%d”,s);,注意s的初值。,注意当n较大时的情况。,求和与连乘都是最常用的算法,要熟练掌握。,例:求自然数1-100中能被3整除的数之和。,main(),int i,s=0;,printf(“n%d”,s);,求能被3整除但不被7整除的数之和?,for(i=1;i=100;i+)s+=i;,for(i=1;i=100;i+)if(i%3=0)s+=i;,for(i=3;i=100;i+=3)s+=i;,for(i=3;i=100;i+=3)if(i%7)s+=i;,例:求任意100个数中的最大值。,main(),int i,a,max;,max=?,for(i=1;imax)max=a;,printf(“n max=%d”,max);,循环体中没有引用循环变量。i的作用?,求任意个数中的最大值?,for(i=1;i+),if(a=-9999)break;,max=-32768;,外重循环,内重循环,执行200次,要掌握多重循环执行的全过程,66 循环的嵌套,循环体内又包含另一个完整的循环结构(多重循环)。,for(i=1;i=10;i+),for(j=1;j=20;j+),s+=i+j;,以上多重循环结构可以简写为:,for(i=1;i=10;i+),for(j=1;j=20;j+),s+=i+j;,例:找出行号乘以列号等于
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:C语言编程入门教程精简版.ppt
    链接地址:https://www.zixin.com.cn/doc/12816632.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork