第五章-选择控制结构

目录

&&和||的优先级

算法在问题求解中有什么作用?

常用的算法描述方法有哪些?

break 语句在 switch语句中有什么作用?

计算机问题求解和生活中问题求解方法有什么异同点?

算法有哪些基本特性?

两个浮点数如何比较相等?

if( x == 3.5)的写法是否正确?

若int i;  float f;表达式i > 0 ? i :f 的类型?

如何判断ch是数字字符?

程序测试的基本方法是什么?

身高预测

当你的父亲一米八,你母亲一米六时

体脂判断


&&和||的优先级

 

算法在问题求解中有什么作用?

  1. 按照一定的算法编写计算机程序实际上就是在告诉计算机做什么和怎么做。
  2. 计算机的问题求解方法主要体现在算法设计上,最终的实现要靠编写程序来实现
  3. 因此,算法可看作是程序的灵魂。

常用的算法描述方法有哪些?

 

  1. 自然语言描述
  2.  流程图描述
  3. NS结构化流程图描述
  4. 伪码描述

break 语句在 switch语句中有什么作用?

  1. switch 语句的执行过程是这样的:首先计算 switch 后表达式的值,然后将该值依次与case 后的常量值进行比较,当它们相等时,执行相应 case 后面的代码段,代码执行完毕后,可使用 break 语句跳出 switch 语句。
  2. 如果没有 break 语句,程序将依次执行下面的 case 后的语句,直到遇到 switch的右花括号“}”为止。因此,只有 switch 语句和 break 语句配合使用,才能形成真正意义上的多分支。
  3. 也就是说,执行完某个分支后,一般要用break 语句跳出switch结构(否则一直往下依次执行就没有多分支的意义了)

计算机问题求解和生活中问题求解方法有什么异同点?

  1. 在日常生活中,我们做任何事情都需要遵循一定的程序,即要按一定的顺序来操作,其中的某些步骤的顺序是不能改变的。这就是我们生活中问题求解的“算法”。如果问题很复杂,那么通常还要使用分治策略(Divide and Conquer Strategy)来将原始问逐步分解为一些易于解决的子问题,然后再对每个子问题进行各个击破。
  2. 计算机问题求解也要遵循一定的程序,也要使用分治策略。但与生活中问题求解所不同的是,计算机执行特定的任务是通过执行预定义的指令集来实现的。这些预定义的指令集就是所谓的计算机程序(Computer Program)。按照一定的算法编写计算机程序实际上就是在告诉计算机做什么和怎么做。计算机程序和计算机之间,就像食谱和厨师之间的关系一样,计算机程序指定了完成某一任务需要的步骤。但不幸的是,不同于菜谱,目前我们还不能用自己的母语向计算机发送指令。因此,计算机中的算法是通过用计算机指令编写的程序来实现的。

算法有哪些基本特性?

(1)有穷性(Finiteness)。算法包含的操作步骤应是有限的,每一步都应在合理的时间内完成,否则算法就失去了它的使用价值。
(2)确定性(Definiteness)。算法的每个步骤都应是确定的,不允许有歧义。例如,“如果 x≥0,则输出 Yes;如果 x≤0,则输出 No”就是有歧义的,即当 x 等于 0 时,既要输出Yes,又要输出 No,这就产生了不确定性。
(3)有效性(Effectiveness),也称为可行性。算法中的每个步骤都应能有效执行,且能得到确定的结果。例如,对一个负数开平方或者取对数,就是一个无效的操作。
(4)允许没有输入或者有多个输入(Input)。有些算法无需从外界输入数据。
(5)必须有一个或者多个输出(Output)。算法的实现是以得到计算结果为目的的,没有任何输出的算法没有任何意义。

两个浮点数如何比较相等?

浮点数并非真正意义上的实数,只是其在某种范围内的近似。因此也就只能用近似的方法对实数进行比较。比较两个浮点数的差值足够小即可:

if (fabs(a-b)< 1e-7)

if( x == 3.5)的写法是否正确?

对于浮点型数据不能做相等的判断,此种写法程序在编译时没有语法错误,但程序在执行时会得到错误的结果。

若int i;  float f;表达式i > 0 ? i :f 的类型?

如果 i > 0 成立,那么表达式的值就是将 i 转为float 型后的值。

如何判断ch是数字字符?

必须要用单引号,要不然就是判断ch的ASCII码了

if (ch >= '0' && ch <= '9')

程序测试的基本方法是什么?

  1. 测试的基本任务是,根据软件开发各个阶段的文档和程序,精心设计测试用例,利用这些测试用例执行程序,找出软件中潜在的各种错误和缺陷。
  2. 测试主要有白盒测试(WhiteBox Testing)和黑盒测试(Black Box Testing)两种。
  3. 白盒测试主要用于测试的早期。黑盒测试主要用于测试的后期。
  4. 在实际应用中,通常将白盒测试与黑盒测试结合使用,例如,选择有限数量的重要路径进行白盒测试(结构测试),对重要的功能需求进行黑盒测试(功能测试)。

身高预测

/*设faHeight 为其父身高,moHeight 为其母身高,身高预测公式为
男性成人时身高 = (faHeight + moHeight) × 0.54 cm
女性成人时身高 = (faHeight × 0.923 + moHeight) / 2 cm
此外,如果喜爱体育锻炼,那么可增加身高 2%;如果有良好的卫生饮食习惯,那么
可增加身高1.5%。

请编程从键盘输入用户的性别(用字符型变量 sex 存储,输入字符 F 表示女性,输入
字符 M 表示男性)、
父母身高(用实型变量存储,faHeight 为其父身高,moHeight 为其母身高)、
是否喜爱体育锻炼(用字符型变量sports 存储,输入字符 Y 表示喜爱,输入字符N
表示不喜爱)
是否有良好的饮食习惯等条件(用字符型变量 diet存储,输入字符 Y 表示良
好,输入字符N 表示不好),利用给定公式和身高预测方法对身高进行预测。*/

#include <stdio.h>

int main(){
	float faHeight=1.8,moHeight=1.60,man,wom;
	char sex='F',sport='Y',diet='Y';
//	
//	printf("男:M,女:F\n");
//	scanf("%c",&sex);
//	printf("身高m为单位,依次输入父亲、母亲的身高\n"); 
//	scanf("%f %f",&faHeight,&moHeight);
//	printf("你是否喜爱运动?喜欢请输入Y 不喜欢请输入N\n");
//	scanf(" %c",&sport);
//	printf("是否有良好的饮食习惯?有请输入Y 没有请输入N\n");
//	scanf(" %c",&diet);
	
//	if(sex=='M'){
		man = (faHeight + moHeight) * 0.54;
//	} 
//	if(sex=='F'){
		wom =(faHeight * 0.923 + moHeight) / 2;		
//	}
	printf("(男)营养不良且不运动时你:%.2f\n",man);
	printf("(女)营养不良且不运动时你:%.2f\n\n",wom);
	if(sport=='Y'){
		man=(1.02*man);
		wom=(1.02*wom);
	}
	if(diet=='Y'){
		man=(1.015*man);
		wom=(1.015*wom);
	}
	printf("(男)营养保证坚持运动时你:%.2f\n",man);
	printf("(女)营养保证坚持运动时你:%.2f\n",wom);
	
} 

当你的父亲一米八,你母亲一米六时

体脂判断

/*体指数 t = 体重w /(身高h) 2 (w 单位为千克,h单位为米)
当t < 18 时,为低体重;
当t介于 18 和25 之间时,为正常体重;
当t介于 25 和27 之间时,为超重体重;
当t≥27 时,为肥胖。
分别用 if 语句和 if-else 语句编程,从键盘输入你的身高 h 和体重 w,根据上述给定的
公式计算体指数t,然后判断你的体重属于何种类型。*/

#include <stdio.h>

int main(){
	float h=1.63,m=54,t;
	
	t=m /(h*2) ;
	if(t<18){
		printf("低体重"); 
	}
	if(t>=18&&t<=25){
		printf("正常体重"); 
	} 
	if(t>25&&t<=27){
		printf("超重体重");
	} 	
	if(t>27){
		printf("肥胖"); 
	} 
	return 0;
}

令人不是很满意的低体重,希望可以沉迷学习时间消瘦。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值