C语言程序设计(第4版)谭浩强著—学习笔记chapter four 选择结构程序设计

4.1条件判断

  1. 条件判断的结果是一个逻辑值:“是”或“否”, 在计算机语言中用“真”和“假”表示。在程序中用选择结构来检查所指定的条件是否满足,并根据判断的结果决定执行哪种操作。
  2. 关系运算符是用于比较大小的符号。关系运算符优先级由高到低 < <= > >= , == != , 关系表达式是用关系运算符将两个表达式连接起来的式子,关系表达式的值是一个逻辑值“真”或“假”,为了表示逻辑量,C语言规定 以数值1为真,0为假。 关键字bool定义逻辑型变量,允许关系表达式作为一般数值处理 。
  3. 逻辑运算符:&& 逻辑与,||逻辑或,逻辑非! ,其中&&和||是算目运算符,要求两侧都有操作数,逻辑非!是一元运算符。 逻辑与&&两者之一为假就是假,逻辑或两者之一为真就是真,非就是假。逻辑表达式是用逻辑运算符将关系表达式或逻辑量连接起来的式子。逻辑表达式的值是真或假 ,1为真,0为假。逻辑运算符的运算对象可以是数字,也可以是字符,实型,指针等。
  4. 运算符优先级 : !非 算数运算符 关系运算符 &&与 ||或 赋值运算符。

4.2用if语句实现选择结构

	int x=-30;
	if (x>0)
		printf("%d\n",x);//输出正数 
	else 
		printf("%d\n",-x);//负负得正 
	//例4.1输入两个学生a和b的成绩,输出其中更高的成绩。 
	float a,b;
	printf("请分别输入a同学和b同学的成绩,并用逗号隔开:") ; 
	scanf("%f,%f",&a,&b) ;
	if (a>=b)
		printf("最高成绩为%6.2f\n",a);
	else
		printf("最高成绩为%6.2f\n",b);
	//例4.2输入三个成绩c,d,e,要求从高到低的顺序输出
	float c,d,e,max,min,mid;
	printf("please enter c,d,e:");
	scanf("%f,%f,%f",&c,&d,&e);
	
	if(c>d){
		max=c;mid=d;min=e;
	}else{
	max=d;mid=c;min=e;
	};
	
	if(max<e)max=e;
	if(mid<e){min=mid,mid=e;}
	 
	printf("%6.1f,%6.1f,%6.1f\n",max,mid,min);
	
	if (3)printf("is ok.\n");
	//例4.3给出三角形的三个边长f,g,h,求三角形的面积(构成三角形的条件是两边之和大于第三边)
	float f,g,h,s,area;
	printf("分别输入三角形的三个边长,并用逗号隔开:");
	scanf("%f,%f,%f",&f,&g,&h) ;
	
	if(f+g>h&&f+h>g&&h+g>f){
		s=(f+g+h)/2.0;
		area=sqrt(s*(s-f)*(s-g)*(s-h));
		printf("三角形的面积为%6.2f\n",area);
	}else{
		printf("输入的数值不能构成三角形。");
	}
	/*例4.4
	为促销,对购买货物多的顾客有优惠: 
	凡买50件以上(含50件)的优惠5%,买100件以上(含100件)的优惠7.5%,买300件以上(含300件)的优惠10%,
	买500件以上(含600件)的优惠15%。
	要求编程序,用户输人购买的数量和单价,程序输出应付货款。 
	 */
	float i,j,money;
	printf("请分别输入件数和单价:") ;
	scanf("%f,%f",&i,&j);
	
	if(i>=500) money=i*j*(1-0.15);
	else if(j>=300)	money=i*j*(1-0.10);
	else if(j>=100)	money=i*j*(1-0.075);
	else if(j>=50) money=i*j*(1-0.05);
	else money=i*j;
	
	printf("应付贷款:%6.2f\n",money);//else总是与它上面的最近的未匹配的if配对。 
	
//例4.5判断某一年是否是闰年。判断闰年的标准是,能被4整除但不能被100整除,或者能被4整除且能被400整除的年份。
	int year ;
	printf("输入一个年份:");
	scanf ("%d",&year);
	if (year%4==0&&year%100!=0 || year%400==0)
		printf("%d该年份是闰年\n",year);
	else
		printf("%d该年份不是闰年\n",year) ;
	/*
	例4.6运输公司对用户计算运费。
	运输距离(以s表示,单位为千米)越远,单位运费(以每吨千米为单位)越低。计算标准如下:
	s<250			没有折扣
	250≤s<500		2%折扣
	500≤s <1000	5%折扣
	1000≤s<2000	8%折扣
	2000≤s< 3000	10%折扣	
	3000≤s			15%折扣
	设每吨千米货物的运费为price,货物重为weight,距离为s,折扣为discount,则总运费freiehe,
	计算公式为:f=p*w*s*(1- d)
	*/ 
	float freiehe,price,weight,s,discount;
	printf("please enter price , weight and s:");
	scanf("%f,%f,%f",&price,&weight,&s);
	
	if (s>=3000) discount=0.15;
	else if(s>=2000) discount=0.10;
	else if(s>=1000) discount=0.08;
	else if(s>=500) discount=0.05;
	else if(s>=250) discount=0.02;
	else discount=0;
	freiehe=price*weight*s*(1-discount);
	printf("总运费为:%6.2f元\n",freiehe);

4.3用Switch语句实现多分支选择结构

	
	int grade='A';
	switch(grade){
		case 'A':
		case 'B':printf("80~100分\n");break;
		case 'C':printf("70~79分\n");break;
		case 'D':printf("60~69分\n");break;
		case 'E':printf("0~59分\n");break;
		default :printf("error\n"); break;
	} 

提高部分(未完)

本章小结(未完)

习题(未完)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值