1、大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院1大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院10.1引论 u程序设计语言的发展经历了三个阶段:程序设计语言的发展经历了三个阶段:机器语言是用二进制表示的,计算机能直接识别和执行的语言 如:10000000(加)10010000(减),机器语言执行速度最快。由于用二进制表示,因而程序可读性差,非专业人员难于掌握 二进制指令通过符号化 如 ADD A,B汇编程序 高级语言表达方式接近被描述的问题,接近于高级语言
2、表达方式接近被描述的问题,接近于自然语言和数学表达式,易于人们接受和掌自然语言和数学表达式,易于人们接受和掌握握 2大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院3大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院4大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院 函数体函数体语句结束标志语句结束标志 main是主函数的函数名,表示这是一是主函数的函数名,表示这是一个主函数。每一个个主函数。每
3、一个C源程序都必须有,源程序都必须有,并且只能有一个主函数并且只能有一个主函数(main函数函数),这,这是整个是整个C程序运行的入口点程序运行的入口点 printf是是C语言中的输出函数,它的功能是语言中的输出函数,它的功能是把要输出的内容送到显示器去显示。双引把要输出的内容送到显示器去显示。双引号内字符串原样输出,号内字符串原样输出,“n”是回车换行是回车换行符。符。C C语言规定:语句以分号结束语言规定:语句以分号结束 5大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院。数据类型名数据类型名定义的变量名,以定义的变量名,
4、以“,”分分隔隔两个赋值语句,使两个赋值语句,使a a和和b b的值分别为的值分别为1212和和3434 调用内部函数,输出计算的和数调用内部函数,输出计算的和数求和的值给求和的值给sum 466大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院。自定义函数声明自定义函数声明自定义函数调用自定义函数调用自定义函数自定义函数max带两个形参带两个形参返回返回a、b中最大值中最大值返回值为整型数返回值为整型数0调用内部函数,接受键盘输入数据调用内部函数,接受键盘输入数据7大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大
5、学数学与计算机科学学院安徽师范大学数学与计算机科学学院 8大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院开 始编 辑编 译有错?链 接执 行结果正确?结 束源程序file.c目标程序file.obj库函数和其它目标程序可执行程序file.exe不正确正确有无9大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院v人们使用计算机,就是要利用人们使用计算机,就是要利用计算机处理各种不同的问题,计算机处理各种不同的问题,而要做到这一点,人们就必须而要做到这一点,人们就
6、必须事先对各类问题进行分析,确事先对各类问题进行分析,确定解决问题的具体方法和步骤,定解决问题的具体方法和步骤,再编制好一组让计算机执行的再编制好一组让计算机执行的指令即程序,让计算机按人们指令即程序,让计算机按人们指定的步骤有效地工作。这些指定的步骤有效地工作。这些具体的方法和步骤,其实就是具体的方法和步骤,其实就是解决一个问题的算法。根据算解决一个问题的算法。根据算法,依据某种规则编写计算机法,依据某种规则编写计算机执行的命令序列,就是编制程执行的命令序列,就是编制程序,而书写时所应遵守的规则,序,而书写时所应遵守的规则,即为某种语言的语法即为某种语言的语法.10.2 算法基础算法基础 1
7、0.2.1 算法(算法(Algorithm)的概念)的概念【例例10.2.1】输入输入3个数,求其最大值。个数,求其最大值。v问题分析:设问题分析:设num1,num2,num3存放存放3个数,个数,max存放其最大值。为求最大存放其最大值。为求最大值,就必须对值,就必须对3个数进行比较,可按如个数进行比较,可按如下步骤去做:下步骤去做:输入输入3个数个数num1,num2,num3。先把第先把第1个数个数num1的值赋给的值赋给max。将第将第2个数个数num2与与max比较,如果比较,如果num2max,则把第,则把第2个数个数num2的值的值赋给赋给max(否则不做任何工作)。(否则不做
8、任何工作)。将第将第3个数个数num3与与max比较,如果比较,如果num3max,则把第,则把第3个数个数num3的值的值赋给赋给max(否则不做任何工作)。(否则不做任何工作)。输出输出max的值,即最大值。的值,即最大值。10大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院10.2.2 算法的基本特征算法的基本特征 一个算法应具有以下一个算法应具有以下5个基本特征:个基本特征:v有穷性有穷性v确定性确定性v有效性有效性 v有零个或多个输入有零个或多个输入 v有一个或多个输出有一个或多个输出 算法必须总是在执行有限个操作步
9、骤和可以算法必须总是在执行有限个操作步骤和可以接受的时间内完成其执行过程。也就是说,对于接受的时间内完成其执行过程。也就是说,对于一个算法,要求其在时间和空间上均是有穷的。一个算法,要求其在时间和空间上均是有穷的。例如:一个采集气象数据并加以计算进行天气预例如:一个采集气象数据并加以计算进行天气预报的应用程序,如果不能及时得到结果,超出了报的应用程序,如果不能及时得到结果,超出了可以接受的时间,就起不到天气预报的作用。可以接受的时间,就起不到天气预报的作用。算法中的每一步都必须有明确的含义,不允许算法中的每一步都必须有明确的含义,不允许存在二义性。例如:存在二义性。例如:“将成绩优秀的同学名单
10、打将成绩优秀的同学名单打印输出印输出”,在这一描述中,在这一描述中“成绩优秀成绩优秀”就很不明就很不明确,是每门功课均为确,是每门功课均为95分以上?还是指总成绩在分以上?还是指总成绩在多少分以上?多少分以上?算法中描述的每一步操作都应能有效地执行,算法中描述的每一步操作都应能有效地执行,并最终得到确定的结果。例如:当并最终得到确定的结果。例如:当Y=0时,时,X/Y是是不能有效执行的。不能有效执行的。11大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院10.2.3 算法的表示算法的表示v 用自然语言表示用自然语言表示v 用流
11、程图表示用流程图表示 v 用伪代码表示用伪代码表示 v 计算机语言表示算法计算机语言表示算法 自然语言可以是中文、英文、数学表达式等。用自然语言表示自然语言可以是中文、英文、数学表达式等。用自然语言表示通俗易懂,缺点是可能文字过长,不太严格,表达分支和循环通俗易懂,缺点是可能文字过长,不太严格,表达分支和循环的结构不很方便。的结构不很方便。【例例10.2.2】求求1+2+m的值的值N,当当N10000时结束。时结束。算法可表示如下:算法可表示如下:n=0m=0m加加1N加加m判判N是否大于是否大于10000,如果满足关系结束;不满足关系,如果满足关系结束;不满足关系继续执行继续执行。伪代码是用
12、介于自然语言和计算机语言之间的文字和符号伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法的,它不用图形符号,因此,书写方便,格式紧凑,来描述算法的,它不用图形符号,因此,书写方便,格式紧凑,也容易懂,同时也便于向计算机语言算法的转换。也容易懂,同时也便于向计算机语言算法的转换。【例例10.2.4】用伪代码表示求用伪代码表示求10!的算法。!的算法。begin(开始开始)置置t的初值为的初值为1(1t)置置i的初值为的初值为2(2i)当(当(while)i=10,执行(,执行(do)begin 使使t=t i 使使i=i+1 end 打印打印t的值(的值(print t)end(结束
13、)。(结束)。计算机是无法识别流程图和伪代码形式,只有用计算机语言计算机是无法识别流程图和伪代码形式,只有用计算机语言编写的程序才能被计算机执行。因此在用流程图和伪代码形式编写的程序才能被计算机执行。因此在用流程图和伪代码形式描述出算法后,还要将它转换成计算机语言程序。描述出算法后,还要将它转换成计算机语言程序。【例例10.2.5】用用C语言程序来描述求语言程序来描述求10!。!。#include void main(void)long i,t;t=1L;i=2L;while(i=10L)t=t*i;i=i+1;printf(%ldn,t);。处理框处理框判断框判断框终点框终点框过程框过程框I
14、/O框框流程线流程线连接点连接点准备框准备框下图列出了标准的流程图符号下图列出了标准的流程图符号:12大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院10.3 基本数据类型基本数据类型10.3.1 数据概述数据概述13大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院u常量与符号常量常量与符号常量 .常量常量v定义:定义:程序运行时其值不能改变的量(即常数)程序运行时其值不能改变的量(即常数)v常量的分类常量的分类:直接常量直接常量(值常量值常量)整型常量整型常
15、量 如,如,15、0、7浮点型常量浮点型常量 如,如,5.0、12.36字符型常量字符型常量 如,如,A、a 指针常量指针常量 如,如,NULL字符串常量字符串常量 如,如,”ABC”符号常量符号常量 用标识符来代表常量。用标识符来代表常量。其定义格式为:其定义格式为:#define NUM 20#define PI 3.1415926 运行结果:运行结果:area=314.000000 14大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院u 变量变量v定义:定义:程序运行时其值可以被改变的量程序运行时其值可以被改变的量 v变
16、量的两要素变量的两要素 :变量名变量名 、变量值、变量值v变量的使用:变量的使用:先说明,后使用先说明,后使用 例:例:int x,y,z;float radius,length,char ch;例:int a=2,b,c=4;float data=3.67;char ch=A;int x=1,y=1,z=1;int x=y=z=1;15大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院10.3.2 整型数据整型数据 类别类别类型说明符类型说明符 内存中所占字节内存中所占字节 基本型基本型int 2个字节个字节短整型短整型sho
17、rt int或或short 2个字节个字节长整型长整型 long int或或long 4个字节个字节无无符符号号型型无符号基本型无符号基本型 unsigned int或或unsigned 无符号短整型无符号短整型 unsigned short 无符号长整型无符号长整型 unsigned long 整型变量的分类整型变量的分类16大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院v变量的说明,也即变量的定义,一般形式为:变量的说明,也即变量的定义,一般形式为:类型说明符类型说明符 变量名标识符变量名标识符1,变量名标识符,变量名标
18、识符2,.;例如:例如:int a,b,c;/*a,b,c为整型变量为整型变量*/long m,n;/*m,n为长整型变量为长整型变量*/unsigned p,q;/*p,q为无符号整型变量为无符号整型变量*/v在书写变量说明时,应注意以下几点:在书写变量说明时,应注意以下几点:v允许在一个类型说明符后,说明多个相同类型的变量。各变量名之允许在一个类型说明符后,说明多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。v最后一个变量名之后必须以最后一个变量名之后必须以“;”号结尾。号结尾。v变量说明必须放在
19、变量使用之前。变量说明必须放在变量使用之前。v也可在说明变量为整型的同时,给出变量的初值。其格式为:也可在说明变量为整型的同时,给出变量的初值。其格式为:v类型说明符类型说明符 变量名标识符变量名标识符1=初值初值1,变量名标识符,变量名标识符2=初值初值2,.;整型变量的说明整型变量的说明【例例10.3.2】main()int a=3,b=5;printf(“a+b=%dn”,a+b);程序的运行结果为:程序的运行结果为:a+b=817大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院 运行结果为:运行结果为:a=0.1234
20、5718大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院 如 a A?n 101如 A65,a97,048,n10-*/%/%-+-+-(2)(3)(4)(2)(3)(4)说明:说明:“-”“-”可为可为单目单目运算符时运算符时,右结合性右结合性 两整数相除,结果为整数两整数相除,结果为整数%要求两侧均为整型数据要求两侧均为整型数据 10.3.5算术运算符和算术表达式算术运算符和算术表达式21大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院 自增、自减运算符自
21、增、自减运算符+-+-作用:使变量值加作用:使变量值加1 1或减或减1 1 种类:种类:前置前置 +i,-i +i,-i (先执行先执行i=ii=i+1+1或或i=i-1i=i-1,再使用再使用i i值)值)后置后置 i+,i-i+,i-(先使用先使用i i值值,再执行再执行i=ii=i+1+1或或i=i-1i=i-1)/k=4,j=4/k=4,j=4/k=3,j=4/k=3,j=4/4/4/3/3/c=20,a=4/c=20,a=4/c=15,a=4/c=15,a=422大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院 表达
22、式和算术表达式表达式和算术表达式 23大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院10.4 顺序结构程序设计顺序结构程序设计10.4.1 C语言语句语言语句1.控制语句控制语句:完成一定功能的语句称为控制语句。完成一定功能的语句称为控制语句。C语言有语言有9种种控制语句,参见表控制语句,参见表10.4-1。2.表达式语句表达式语句 由一个表达式构成一个语句,称为表达式语句。一般形由一个表达式构成一个语句,称为表达式语句。一般形式为:式为:表达式;表达式;表达式语句可分为表达式语句可分为:(1)赋值语句赋值语句 赋值语句由赋
23、值表达式后跟一个分号组成。例如:赋值语句由赋值表达式后跟一个分号组成。例如:a=3;(2)函数调用语句函数调用语句 函数调用语句由函数调用表达式后跟一个分号组成。函数调用语句由函数调用表达式后跟一个分号组成。例如:例如:printf(“This is a C statement.”);(3)空语句空语句 空语句是只有一个分号而没有表达式的语句空语句是只有一个分号而没有表达式的语句。24大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院3.特殊语句特殊语句C语言中还包括一些其他语句,如语言中还包括一些其他语句,如复合语句复合语句等
24、。等。把多个语句用花括号把多个语句用花括号括起来组成的语句称复合语句。在程序括起来组成的语句称复合语句。在程序中可以把复合语句看成是一条语句,而不是多条语句。中可以把复合语句看成是一条语句,而不是多条语句。例如:例如:x=y+z;a=b+c;printf(“%d%d”,x,a);注注:复合语句内的各条语句都必须以分号:复合语句内的各条语句都必须以分号“;”结尾,在括号结尾,在括号“”外不能加分号。外不能加分号。25大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院10.4.2 printf函数函数 26大大 学学 计计 算算 机
25、机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院2.转义字符转义字符 就以一个就以一个“”开头的字符序列,称为转义字符开头的字符序列,称为转义字符 字符形式字符形式含含 义义ASCIIASCII代码代码nn换行,将当前位置移到下一行开头换行,将当前位置移到下一行开头1010tt横向跳格(即跳到下一个输出区,一个横向跳格(即跳到下一个输出区,一个输出区占输出区占8 8列)列)9 9bb退格,将当前位置移到前一列退格,将当前位置移到前一列8 8rrEnterEnter,将当前位置移到本行开头,将当前位置移到本行开头1313ff换页,将当前位置多到下页开头换
26、页,将当前位置多到下页开头1212反斜杠字符反斜杠字符“、”9292 单引号字符单引号字符3939”双引号字符双引号字符3434 dddddd1 1到到3 3位位8 8进制数所代表的字符进制数所代表的字符 xhhxhh1 1到到2 2位位1616进制数所代表的字符进制数所代表的字符【例例10.4.1】转义字符的使用转义字符的使用main()char a,b,c;a=n;b=e;c=167;/*8进制数进制数167代表的字符代表的字符w*/printf(“%c%c%cn”,a,b,c);/*以字符格式输出以字符格式输出*/printf(“%ct%ct%cn”,a,b,c);/*每输出一个字符跳到
27、下每输出一个字符跳到下一输出区一输出区*/printf(“%cn%cn%cn”,a,b,c);/*每输出一个字符后换行每输出一个字符后换行*/运行结果如下:运行结果如下:new new “”代表空格代表空格,下下同同 n e w27大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院“%d”是格式说是格式说明明“a=”、“”、“b=”为普通字为普通字符符3.printf函数的调用函数的调用 格式控制用于指定输出参数的输出格式,格式控制由两格式控制用于指定输出参数的输出格式,格式控制由两部分组成:部分组成:格式说明和普通字符格式说明
28、和普通字符。普通字符(包括转义字符)。普通字符(包括转义字符)将被简单地复制显示(或执行)。一个格式说明项将引起输将被简单地复制显示(或执行)。一个格式说明项将引起输出参数项的转换与显示。出参数项的转换与显示。例如例如:main()int a=3,b=4;printf(“a=%db=%dn”,a,b);输出结果为:输出结果为:a=3b=4“n”为转义字符为转义字符【例例10.4.2】main()char ch1=a,ch2=b;printf(“ch1=%c,ch2=%cn”,ch1,ch2);printf(“ch1=%d,ch2=%dn”,ch1,ch2);程序运行结果为:?程序运行结果为:?
29、28大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院4.格式字符串格式字符串在在Turbo C中中printf函数格式字符串一般形式为:函数格式字符串一般形式为:%m m.nh/l格式字符格式字符 开始符开始符 标志字符标志字符 宽度指示符宽度指示符 精度指示符精度指示符 长度修正符长度修正符 格式转换字符格式转换字符 说明:说明:格式字符格式字符:格式字符用来表示输出数据的类型,在格式控制字符串不:格式字符用来表示输出数据的类型,在格式控制字符串不能略,其常用符号和含义参见表能略,其常用符号和含义参见表10.4-3。(2)标
30、志字符标志字符:标志字符包括:标志字符包括-、+、#三种,具体含义参见表三种,具体含义参见表10.4-4。宽度指标符宽度指标符:用来设置输出数据项的最小宽度,通常用十进制整数来:用来设置输出数据项的最小宽度,通常用十进制整数来表示输出的位数。如果输出数据项所需实际位数多于指定宽度,则按实际表示输出的位数。如果输出数据项所需实际位数多于指定宽度,则按实际位数输出,如果实际位数少于指定的宽度则用空格填补。位数输出,如果实际位数少于指定的宽度则用空格填补。精度指示符精度指示符:以:以“.”开头,用十进制整数指精度。对于开头,用十进制整数指精度。对于float或或double类型的浮点数可以用类型的浮
31、点数可以用“m.n”的形式在指定宽度的同时来指定其精的形式在指定宽度的同时来指定其精度。其中,度。其中,“m”用以指定输出数据所占总的宽度,用以指定输出数据所占总的宽度,“n”称为精度。称为精度。长度修正符长度修正符:常用的长度修改符为:常用的长度修改符为h和和l两种,两种,h表示输出项按短整型表示输出项按短整型输出,输出,l表示输出项按长整型输出。表示输出项按长整型输出。例如,以下语句输出六位十进制整数:例如,以下语句输出六位十进制整数:printf(“%6dn”,111);printf(“%-6dn”,111);输出结果为:输出结果为:111 (输出右对齐,左边填空格)(输出右对齐,左边填
32、空格)111 (输出左对齐,右边填空格)(输出左对齐,右边填空格)例如,语句例如,语句printf(“%+d,%+dn”,111,-111);输出结果为:输出结果为:+111,-111输出八进制或十六进制时,可以使用以下输出八进制或十六进制时,可以使用以下形式:形式:printf(“%#o,%#xn”,10,16);输出结果为:输出结果为:012,0 x10输出语句输出语句输出结果输出结果printf(printf(“%dn%dn”,888);,888);888888(按实际需要宽度输出)(按实际需要宽度输出)printf(printf(“%6dn%6dn”,888);,888);888888
33、(输出右对齐,左边填(输出右对齐,左边填空格)空格)printf(printf(“%fn%fn”,888.88);,888.88);888.880000888.880000(按实际需要宽度(按实际需要宽度输出)输出)printf(printf(“%12fn%12fn”,888.88);,888.88);888.880000888.880000(输出右对齐,(输出右对齐,左边填空格)左边填空格)printf(printf(“%gn%gn”,888.88);,888.88);888.88888.88(%f%f格式比采用格式比采用%e%e格式格式输出宽度小)输出宽度小)printf(printf(“
34、%8gn%8gn”,888.88);,888.88);888.88888.88(输出右对齐,左边(输出右对齐,左边填空格)填空格)输出语句输出语句输出结果输出结果printf(printf(“%.5dn%.5dn”,888);,888);0088800888(数字前补(数字前补0 0)printf(printf(“%.0dn%.0dn”,888);,888);888888printf(printf(“%8.3fn%8.3fn”,888.88);,888.88);888.880888.880printf(printf(“%8.1fn%8.1fn”,888.88);,888.88);888.988
35、8.9printf(printf(“%8.0fn%8.0fn”,888.88);,888.88);889889printf(printf(“%.5sn%.5sn”,”abcdefgabcdefg”););abcdeabcde(截去超过的部分)(截去超过的部分)printf(printf(“%5sn%5sn”,”abcdefgabcdefg”););abcdefabcdef(宽度不够,按实(宽度不够,按实际宽度输出)际宽度输出)【例例10.4.3】输出形式举例输出形式举例main()int num1=123;long num2=1234567;float real=123.4567;printf
36、(“%d,%6d,%-6d,%2dn”,num1,num1,num1,num1);printf(“%ld,%8ld,%4ldn”,num2,num2,num2);printf(“%f,%10f,%10.2f,%-10.2fn”,real,real,real,real);printf(“%s,%10.5s,%-10.5sn”,”student”,”student”,”student”)输出结果如下:输出结果如下:123,123,123,1231234567,1234567,1234567123.456700,123.456700,123.46,123.46 student,stude,stude
37、29大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院4.2 4.2 格式化输入格式化输入scanfscanf 取地址运算符取地址运算符(与按与按位位“与与”同符号同符号),只,只能作用于变量!能作用于变量!30大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院 31大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院32大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学
38、学院安徽师范大学数学与计算机科学学院10.4.4其他输入输出函数其他输入输出函数33大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院 34大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院 35大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院 36大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院10.5.1 10.5.1 关系运
39、算和逻辑运算关系运算和逻辑运算 关系运算符关系运算符含含 义义优优 先先 级级结结 合合 性性大于大于这些关系运算符等优先这些关系运算符等优先级,但比下面的优先级级,但比下面的优先级高高左结合性左结合性=(和和=之间没有空格)之间没有空格)大于或等于大于或等于小于小于=(和和=之间没有空格)之间没有空格)小于或等于小于或等于=(两个(两个=之间没有空格)之间没有空格)等于等于这些关系运算符等优先这些关系运算符等优先级,但比上面的优先级级,但比上面的优先级低低!=!=(!和和=之间没有空格)之间没有空格)不等于不等于 10.5 选择结构程序设计选择结构程序设计37大大 学学 计计 算算 机机 应
40、应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院 逻辑运算符逻辑运算符含含 义义结结 合合 性性优先级关系优先级关系!单目运算符,逻辑单目运算符,逻辑非,表示相反非,表示相反右结合性右结合性 高高 低低&(两个(两个&之间之间没有空格)没有空格)双目运算符,逻辑双目运算符,逻辑与,表示并且与,表示并且左结合性左结合性|(两个(两个|之间没有之间没有空格)空格)双目运算符,逻辑双目运算符,逻辑或,表示或者或,表示或者AB!A!BA&BA|B假假假假1100假假真真1001真真假假0101真真真真0011 38大大 学学 计计 算算 机机 应应 用用 基基 础础
41、安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院 a b&b 10|x 3&2|8=60)printf(“Passn”);else printf(“Failn”);分数大于分数大于 等于等于60打印打印Failed打印打印Passed 例例10.5.4流程图流程图40大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院【例例10.5.6】根据输入的百分制成绩(根据输入的百分制成绩(score),要求输出成绩等级(),要求输出成绩等级(grade)A、B、C、D、E。90分以上为分以上为A,8089分为分为B,707
42、9分为分为C,6069分分为为D,60分以下为分以下为E。用。用if语句实现,程序如下:语句实现,程序如下:if 和和else子句中,可以是任意合法的子句中,可以是任意合法的C语句或语句块,如语句或语句块,如果这子句是个果这子句是个if语句,则构成了语句,则构成了if语句的嵌套。语句的嵌套。程序的运行情况如下:程序的运行情况如下:Please input a score(0100):):86The grade is B.main()()int score;char grade;printf(“n Please input a score(0100):):”););scanf(“%d”,&sco
43、re););if(score=90)grade=A;else if(score=80)grade=B;else if(score=70)grade=C;else if(score=60)grade=D;else grade=E;printf(“The grade is%c.n”,grade););41大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院v一般形式:一般形式:expr1?expr2 :expr3v执行过程执行过程v功能:相当于条件语句,但不能取代一般功能:相当于条件语句,但不能取代一般ifif语句语句42大大 学学
44、计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院.43大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院【例例10.5.7】根据天气情况,安排活动根据天气情况,安排活动。#include main()int w_con;/*天气情况变量定义天气情况变量定义*/printf(天气如何天气如何?1:晴天晴天,2:多云多云,3:下雨下雨);scanf(%d,&w_con);switch(w_con)case 1:printf(上街购物上街购物!n);break;case 2:pr
45、intf(去游泳去游泳!n);break;case 3:printf(在家看电视在家看电视!n);break;default:printf(错误选择错误选择!n);break作用:控制转向作用:控制转向switch语句的后继语句。语句的后继语句。44大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院10.5.4 程序设计举例程序设计举例v【例例10.5.7】输入三个整数,输出其中的最大数输入三个整数,输出其中的最大数v【例例10.5.8】输入三个整数,按值从大到小的顺序输出。输入三个整数,按值从大到小的顺序输出。v【例例10.5
46、.9】对分段函数:对分段函数:x (x1)y=2x-1 (1x10)3x-11 (x10)用用scanf()函数输入()函数输入x的值,求的值,求y值。值。v【例例10.5.10】若运行时从键盘上输入若运行时从键盘上输入2.0,求以下程,求以下程序的输出结果序的输出结果v【例例10.5.12】执行以下程序时,为了使输出结果为:执行以下程序时,为了使输出结果为:t=4,则给则给a和和b输入的值应满足的条件是:输入的值应满足的条件是:A)ab B)a0&ab D)a0&ab45大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院10.
47、6 循环结构程序设计循环结构程序设计C语言中用如下语句实现循环语言中用如下语句实现循环v while语句。语句。v do-while语句。语句。v for语句。语句。v 用用goto语句和语句和if语句构成循环。语句构成循环。46大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院10.6.1 10.6.1 循环结构的程序设计循环结构的程序设计 47大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院 48大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大
48、学数学与计算机科学学院安徽师范大学数学与计算机科学学院49大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院 50大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院 51大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院【例例10.6.5】while和和do-while循环的比较循环的比较 main()main()int sum=0,i;int sum=0,i;scanf(%d,&i);scanf(
49、%d,&i);while(i=10)do sum=sum+i;sum=sum+i;i+;i+;while(i=10);printf(sum=%dn,sum);printf(sum=%dn,sum);52大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院FT53大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院 54大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院【例例10.6.6】请编写一个程序,
50、计算半径为请编写一个程序,计算半径为0.5、1.5、2.5、3.5、4.5、5.5mm时的圆面积。时的圆面积。【例例10.6.7】求正整数求正整数n的阶乘的阶乘n!其中其中n由用户输入。由用户输入。55大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院表达式表达式3也可以省略,但此时程序设计者应另外设法保证循环能也可以省略,但此时程序设计者应另外设法保证循环能正常结束正常结束 56大大 学学 计计 算算 机机 应应 用用 基基 础础安徽师范大学数学与计算机科学学院安徽师范大学数学与计算机科学学院。57大大 学学 计计 算算 机机