1、Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,重庆邮电大学计算机科学与技术学院,李盘林,lipl,分支结构,2025/7/23 周三,1,回顾,-,格式输入函数,格式输入函数,scanf,(,格式控制字符串,地址表列,);,scanf(,%d,%f,”,&a,&b,);,非格式字符,格式说明,地址表列,2025/7/23 周三,d,以带符号十进制形式输入整型数据,o,以八进制无符号形式输入(无前导,0,
2、x,以十六进制无符号形式输入(无前导,0 x,),c,以字符形式输入单个字符,s,输入字符串,以非空字符开始,遇第一个,空白字符结束,f,以小数形式输入浮点数,e,以标准指数形式输入,scanf,格式字符,2025/7/23 周三,2025/7/23 周三,格式:,变量名,=,表达式;,赋值运算符左操作数必须是占有存储空间的量,赋值是由方向的,满足右结合性,与其他双目运算符不同,赋值运算符优先级低于算术、关系、逻辑运算符,赋值表达式的值被规定为运算完成后左操作数的值,不要写依赖求值顺序的表达式,赋值运算符,2025/7/23 周三,关于复合赋值运算符:,+=,、,-=,、*,=,、,/=,
3、关于不同数据类型数据间赋值,实型赋予整型,舍去小数部分。,整型赋予实型,数值不变,但将以浮点形式存放,增加小数部分,(,小数部分的值为,0),。,字符型赋予整型时,将字符的,ASCII,码值放到整型量的低八位中,高八位为与原来的符号位相同。,整型赋予字符型,只把低八位赋予字符变量,2025/7/23 周三,常量的表示方法,宏定义,#define PI 3.14159,宏名一般大写,宏替换是机械替换,不做语法检查,,不提倡用宏常量,使用,const,关键字,const,修饰的标识符是常量,其值存储在只读存储区,格式:,const float pi=3
4、1415926,;,2025/7/23 周三,主要内容,关系运算符、逻辑运算符、条件运算符,分支结构的运用,2025/7/23 周三,重点&难点,学会运用关系运算符和逻辑运算符,能够利用分支结构灵活解决实际问题,2025/7/23 周三,关系运算符,2025/7/23 周三,关系运算符有,6,个,表中前,4,个运算符优先级高于后两个,关系运算符优先级,低于,算术运算符,关系表达式的值用,0,表示关系不成立,,非,0,表示关系成立,关系表达式均为双目运算符,几点说明,2025/7/23 周三,判断,m,是否是奇数,m%2 =1,m%2,判断,a,、,b,是否相等,a =b,判断,m,、,n,之
5、和是否大于等于,0,m +n =0,(m +n)=0,判断,k,是否不为,0,k !=0,在,C,语言中表达式,abc,的结果是什么?,2025/7/23 周三,逻辑表达式,a,b,!a,!b,a|b,a&b,非,0,非,0,0,0,非,0,非,0,非,0,0,0,非,0,非,0,0,0,非,0,非,0,0,非,0,0,0,0,非,0,非,0,0,0,2025/7/23 周三,思考,假设,x3,,求下列表达式完成运算后,变量,x,的值为多少,0&(x=x+1)&b,只有必须执行下一个表达式才能求出整个逻辑表达式值时,才执行下一个运算,判断某年是否为闰年:,(!(year%4)&(year%10
6、0)|!(year%400),2025/7/23 周三,算法的流程图表示,2025/7/23 周三,从键盘上键入,1,个整数,判断该数的奇偶,分析,如何表示数的奇偶?,程序的基本思路是定义整数,x,,并从键盘接收其值,利用分支结构判断其奇偶,最后输出,练习1-判断整数的正负和奇偶,2025/7/23 周三,分为,if,和,ifelse,两种,if,形式:,if(,表达式,),语句;,ifelse,形式,if(,表达式,),语句,1,;,else,语句,2,;,根据表达式的值为,0,或,非,0,决定程序执行流向,利用if-else语句构建分支结构,模块,1,模块,2,条件,Y,N,模块,1,模块
7、2,条件,Y,N,2025/7/23 周三,#include,int main(),int x;/*,定义待判断的整数*,/,printf(,请输入一个整数,:);,scanf(%d,if(,x%2,),printf(x,是奇数,!n);,else,printf(x,是偶数,!n);,return 0,;,问题的求解,2025/7/23 周三,练习2-判断字符的类型,从键盘上输入一个字符,判断它属于大写字母、小写字母、空格、数字、还是其他字符,分析,如何从键盘输入一个字符,可以从大写、小写字母、数字的,ASCII,码值范围来判断字符究竟是什么类型,2025/7/23 周三,字符输入输出函数,
8、字符输出函数,putchar(ch),输出,一个,字符,ch,字符输入函数,getchar(),无参数,函数值为从输入设备接收的字符,2025/7/23 周三,#include,void main(),char ch;,printf(,请输入一个字符,:);,scanf(“%c”,/,或者,ch=getchar();,if(ch=A&ch=a&ch=0&ch=0)?(y=1):(y=-1),(x%2)?printf(“oddn”):printf(“evenn”);,条件运算符可以用一个,if-else,语句实现,条件运算符,2025/7/23 周三,输入三角形三边,判断是否能构成三角形,如果能
9、则指出是什么三角形,(,等腰、直角还是一般三角形,),练习3-判断三角形构成情况,2025/7/23 周三,float a,b,c;,scanf(%f%f%f,if(a+bc)&(a+cb)&(b+ca),if(a=b)|(a=c)|(b=c),printf(It is a isoceles triangle!);,else if(a*a+b*b=c*c)|(a*a+c*c=b*b)|(c*c+b*b=a*a),printf(It is a right-angled triangle!);,else,printf(It is a general triangle!);,else,printf
10、It is not a triangle);,错在哪里?,案例,-x4-7-1,2025/7/23 周三,错误案例分析,一般三角形,不是三角形,等边,等腰,直角,三角形,等腰,直角,有交叉关系的用并列的,if,非此即彼的用,ifelse,2025/7/23 周三,案例,-x4-7-2,void main(),float,a,b,c;,int flag=1,;,if,(a+bc&b+ca&a+cb)/*,三角形的基本条件*,/,if,(a=b|b=c|c=a),printf(,等腰,);,flag=0;,if,(a*a+b*b=c*c|a*a+c*c=b*b|b*b+c*c=a*a),prin
11、tf(,直角,);,flag=0;,if,(,flag,),printf(,一般,);,printf(,三角形,n);,else,printf(,不是三角形,n);,2025/7/23 周三,案例,-x4-7-3,void main(),if,(a+bc&b+ca&a+cb)/*,三角形的基本条件*,/,if,(a=b&b=c&c=a),printf(,等边,);,flag=0;,if,(a=b|b=c|c=a),printf(,等腰,);,flag=0;,if,(a*a+b*b=c*c|a*a+c*c=b*b|b*b+c*c=a*a),printf(,直角,);,flag=0;,if,(fl
12、ag),printf(,一般,);,printf(,三角形,n);,else,printf(,不是三角形,n);,错在哪里?,2025/7/23 周三,main(),if,(a+bc&b+ca&a+cb)/*,三角形的基本条件*,/,if,(a=b&b=c&c=a),printf(,等边,);,flag=0;,else if,(a=b|b=c|c=a),printf(,等腰,);,flag=0;,if,(a*a+b*b=c*c|a*a+c*c=b*b|b*b+c*c=a*a),printf(,直角,);,flag=0;,if,(flag),printf(,一般,);,printf(,三角形,n
13、);,else,printf(,不是三角形,n);,案例,-x4-7-4,2025/7/23 周三,案例,-x4-7-5,main(),if,(a+bc&b+ca&a+cb)/*,三角形的基本条件*,/,if,(a=b|b=c|c=a),printf(,等腰,);,flag=0;,else if,(a=b&b=c&c=a),printf(,等边,);,flag=0;,if,(a*a+b*b=c*c|a*a+c*c=b*b|b*b+c*c=a*a),printf(,直角,);,flag=0;,if,(flag),printf(,一般,);,printf(,三角形,n);,else,printf(
14、不是三角形,n);,等腰在先,等边在后,是否可以,?,2025/7/23 周三,错误案例,/*,等腰三角形的条件*,/,if(a=b|b=c|c=a),#define LIMIT 1e-7,if(fabs(a-b)=LIMIT|fabs(b-c)=LIMIT,|fabs(c-a)=LIMIT),/*,直角三角形的条件*,/,if(a*a+b*b=c*c|a*a+c*c=b*b,|b*b+c*c=a*a),if(fabs(a*a+b*b-c*c)=LIMIT,|fabs(a*a+c*c-b*b)=LIMIT,|fabs(c*c+b*b-a*a)=LIMIT),2025/7/23 周三,格式:,
15、多分支处理语句,switch,switch,(表达式),case,常量表达式,1,:语句,1;,break,;,case,常量表达式,2,:语句,2,;,break,;,case,常量表达式,n,:语句,n,;,break,;,default,:语句,n+1,说明:,switch,语句后表达式的值可以是,整型、字符型、枚举型,2025/7/23 周三,要求:,80,分以上输出,A,,,7079,分为,B,,,6069,分为,C,,,60,分以下为,D,分段输出学生成绩等级,switch(score/10),case 10:,case 9:,case 8:,printf(“your grade
16、is:A”);,break;,case 7:,printf(“,your grade is:B”,);,break;,case 6:,printf(“,your grade is:C”,);,break;,default:,printf(“,your grade is:D”,);,break;,2025/7/23 周三,作业,输入孩子的性别,(b,表示男孩,g,表示女孩,),,父亲身高,(faHeight),和母亲身高,(moHeight),,根据下列公式预测孩子的身高:,如果是男孩,长大成人时身高,=(faHeight+moHeight)0.54cm,如果是女孩,长大成人时身高,=(faHeight0.923+moHeight)/2cm,预习循环相关内容,2025/7/23 周三,






