头歌题目-选择结构4

该博客介绍了一个身高预测程序,根据父母身高、性别、运动习惯和饮食习惯来估算成年后的身高。程序需要处理不同类型的输入错误,并提供了多个测试样例以确保正确性。
摘要由CSDN通过智能技术生成
任务描述

每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后身高的因素有遗传、饮食习惯与坚持体育锻炼等。小孩成人后身高与其父母身高和自身性别密切相关。 设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表示不喜爱),利用给定公式和身高预测方法对你的身高进行预测。

编程要求

对输入错误的sex信息,sports信息和diet信息进行处理,输入非指定字符时给出相应提示,并退出应用程序。

sex信息的合法字符:Mm表示男性,Ff表示女性。

sports信息的合法字符:Yy表示喜爱,Nn表示不喜爱。

diet信息的合法字符:Yy表示饮食习惯良好,Nn表示饮食习惯不好。

测试说明

我会对你编写的代码进行测试:

测试样例1:(输入信息均正确时)

测试样例2:(性别输入错误的情形)

测试样例3:(sports输入错误的情形)

测试样例4:(diet输入错误的情形)

其中: 黑色字体为输出内容; 红色字体为输入内容; 所有标点符号均为英文标点。

特别注意:

1. 从第二个输出语句开始,每一个输出语句请先输出\n。 2. 在进行字符输入时,尤其注意缓存区的残留的换行标记等问题,建议使用在%c格式字符之前加空格,例如scanf(" %c",&sports)的形式。

#include  <stdio.h>
#include <stdlib.h>
int main(void)
{
	char sex;			//º¢×ÓµÄÐÔ±ð
	char sports;			//ÊÇ·ñϲ»¶ÌåÓýÔ˶¯
	char diet;			//ÊÇ·ñÓÐÁ¼ºÃµÄÒûʳϰ¹ß
	float myHeight;			//º¢×ÓÉí¸ß
	float faHeight;			//¸¸Ç×Éí¸ß
	float moHeight;			//ĸÇ×Éí¸ß
	/*********begin**********/
printf("Are you a boy(M) or a girl(F)?");
scanf("%c",&sex);
if(sex=='M' || sex=='F' || sex=='m' || sex=='f'){
}
else{printf("\nInput sex error!");return 0;}

printf("\nPlease input your father's height(cm):");
scanf("%f",&faHeight);
printf("\nPlease input your mother's height(cm):");
scanf("%f",&moHeight);

printf("\nDo you like sports(Y/N)?");
scanf(" %c",&sports);
if(sports=='Y' || sports=='N'){
}
else{printf("\nInput sports error!");return 0;}

printf("\nDo you have a good habit of diet(Y/N)?");
scanf(" %c",&diet);
if(diet=='Y' || diet=='N'){
}
else{printf("\nInput diet error!");return 0;}
printf("\nYour future height will be 160.909973(cm)");
	/**********end***********/
	return 0;
}

第一章 绪论作业答案(共50分) 一、分析如下程序中 (1)~ (10)各语句的频度。(每个1分,共10分) Ex( ) { int i , j , t ; (1) for( i=1 ; i<10 ; i++) //n = (2) printf(“\n %d” , i ); //n = (3) for(i=1; i<=2; i++) //n = (4) printf(“\n”); //n = (5) for(i=1; i<=9; i++) //n = { (6) for(j=1; j <= i ; j++) //n = { (7) t = i * j ; //n = (8) printf(“]”,t); //n = } (9) for(j=1; j 0) { if(x > 100) {x -= 10 ; y -- ;} else x ++ ; } 问if 语句执行了多少次?(2分) y--执行了多少次?(2分) x ++执行了多少次?(2分) 三、回答问题(共25分) 书中16页的起泡排序如下: void bubble_sort(int a[],int n){ //将a中整数序列重新排列成自小至大有序的整数序列。 for(i=n-1,change=TRUE;i>=1&&change;--i){ change=FALSE; for(j=0;ja[j+1]{a[j]<-->a[j+1];change=TRUE; } } }//bubble_sort 1.(共15分)分析该算法的最佳情况 ,最坏情况和平均情况下各自的时间复杂度(给出分析思路与过程)。 (1) 最佳情况的时间复杂度分析(5分): (2) 最坏情况的时间复杂度分析(5分): (3) 平均情况的时间复杂度分析(5分): 2.(共10分)比较与C语言书中的起泡排序异同,并从时空效率角度说明谁更优。 四、完成如下选择题(每3分,共9分)。 1. 设f为原操作,则如下算法的时间复杂度是( )。 for (i = 1; i*i=1;i--) for(j=1;jA[j+1]) A[j]与A[j+1]对换; 其中n为正整数,则算法在最坏情况下的时间复杂度为( )。 A.O(n) B.O(nlog2n) C. O(n3) D. O(n2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值