五选择结构编程练习
- 格式:doc
- 大小:49.50 KB
- 文档页数:4
实验五选择结构编程练习题目:1身高预测每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后身高的因素有遗传、饮食习惯与坚持体育锻炼等。
小孩成人后的身高与其父母的身高和自身的性别密切相关。
设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表示不喜爱),利用给定公式和身高预测方法对你的身高进行预测。
实验授课提示:通过这个实际例子熟悉选择结构程序设计的方法,以及if语句,进一步熟悉TC集成环境的程序编辑、编译、链接、运行和调试方法。
2 简单的计算器程序要求用switch语句编程设计一个简单的计算器程序。
要求根据用户从键盘输入的表达式:操作数1 运算符op 操作数2计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。
本实验程序是在例4.8基础上,增加如下要求:(1)如果要求程序能进行浮点数的算术运算,程序应该如何修改?如何比较实型变量data2和常数0是否相等?(2)如果要求输入的算术表达式中的操作数和运算符之间可以加入任意多空白符,那么程序如何修改?(3)(选作题)如果要求连续做多次算术运算,每次运算结束后,程序都给出提示:Do you want to continue(Y/N or y/n)?如果用户输入Y或y时,程序继续进行其它算术运算,否则程序才退出运行状态。
那么,程序如何修改?实验授课提示:通过这个实际例子熟悉选择结构程序设计的方法,以及switch语句,进一步熟悉TC集成环境的程序编辑、编译、链接、运行和调试方法。
对于第(3)题,可利用%1s格式符输入用户回答,利用do-while语句实现反复运算直到用户键入N或n。
参考答案:实验二选择结构编程练习1身高预测程序参考答案:#include <stdio.h>main(){char sex; /*孩子性别*/char sports; /*是否喜欢体育运动*/char diet; /*是否有良好的饮食习惯*/float myHeight; /*孩子身高*/float faHeight; /*父亲身高*/float moHeight; /*母亲身高*/printf("Are you a boy(M) or a girl(F)?");scanf("%1s", &sex);printf("Please input your father's height(cm):");scanf("%f", &faHeight);printf("Please input your mother's height(cm):");scanf("%f", &moHeight);printf("Do you like sports(Y/N)?");scanf("%1s", &sports);printf("Do you have a good habit of diet(Y/N)?");scanf("%1s", &diet);if (sex == 'M')myHeight = (faHeight + moHeight) * 0.54;elsemyHeight = (faHeight * 0.923 + moHeight) / 2.0;if (sports == 'Y')myHeight = myHeight * (1 + 0.02);if (diet == 'Y')myHeight = myHeight * (1 + 0.015);printf("Your future height will be %f(cm)\n", myHeight);}程序运行结果如下:Are you a boy(M) or a girl(F)?F↙Please input your father's height(cm):182↙Please input your mother's height(cm):162↙Do you like sports(Y/N)?Y↙Do you have a good habit of diet(Y/N)?Y↙Your future height will be 170.817261(cm)2 简单的计算器程序参考答案:问题1参考答案:#include <stdio.h>#include <math.h>main(){float data1, data2; /*定义两个操作符*/char op; /*定义运算符*/printf("Please enter the expression:\n");scanf("%f%1s%f", &data1, &op, &data2); /*输入运算表达式*/switch (op) /*根据输入的运算符确定要执行的运算*/{case '+': /*处理加法*/printf("%f + %f = %f \n", data1, data2, data1 + data2);break;case '-': /*处理减法*/printf("%f - %f = %f \n", data1, data2, data1 - data2);break;case '*': /*处理乘法*/printf("%f * %f = %f \n", data1, data2, data1 * data2);break;case '/': /*处理除法*/if (fabs(data2) <= 1e-7) /*与实数0比较*/printf("Division by zero!\n");elseprintf("%f / %f = %f \n", data1, data2, data1 / data2);break;default:printf("Unknown operator! \n");}}程序六次测试的运行结果分别如下:①Please enter the expression: 2.0 + 4.0↙2.000000 + 4.000000 = 6.000000②Please enter the expression: 2.0 - 4.0↙2.000000 - 4.000000 = -2.000000③Please enter the expression: 2.0 * 4.0↙2.000000* 4.000000 = 8.000000④Please enter the expression: 2.0 / 4.0↙2.000000/ 4.000000 = 0.500000⑤Please enter the expression: 2.0 / 0↙Division by zero!⑥Please enter the expression: 2.0 \ 4.0↙Unknown operator!比较实型变量data2和常数0是否相等不能用if (data2 == 0),应该用if (fabs(data2) <= 1e-7)。
问题2参考答案:上面程序中的语句scanf("%f%1s%f", &data1, &op, &data2);可以使输入算术表达式中的操作数和运算符之间加入任意多空白符。
问题3参考答案:#include <stdio.h>#include <math.h>main(){float data1, data2; /*定义两个操作符*/char op; /*定义运算符*/char reply; /*用户键入的回答*/do{printf("Please enter the expression:\n");scanf("%f%1s%f", &data1, &op, &data2); /*输入运算表达式*/switch (op) /*根据输入的运算符确定要执行的运算*/{case '+': /*处理加法*/printf("%f + %f = %f \n", data1, data2, data1 + data2);break;case '-': /*处理减法*/printf("%f - %f = %f \n", data1, data2, data1 - data2);break;case '*': /*处理乘法*/printf("%f * %f = %f \n", data1, data2, data1 * data2);break;case '/': /*处理除法*/if (fabs(data2) <= 1e-7) /*与实数0比较*/printf("Division by zero!\n");elseprintf("%f / %f = %f \n",data1, data2, data1/data2);break;default:printf("Unknown operator!\n");}printf("Do you want to continue(Y/N or y/n)?");scanf("%1s", &reply);}while (reply == 'Y' || reply == 'y');printf("Program is over!\n");}程序运行结果如下:Please enter the expression:2.0 + 4.0↙2.000000 + 4.000000 = 6.000000Do you want to continue(Y/N or y/n)?y↙Please enter the expression:2.0 - 4.0↙2.000000 - 4.000000 = -2.000000Do you want to continue(Y/N or y/n)?y↙Please enter the expression:2.0 * 4.0↙2.000000 * 4.000000 = 8.000000Do you want to continue(Y/N or y/n)?y↙Please enter the expression:2.0 / 4.0↙2.000000 / 4.000000 = 0.500000Do you want to continue(Y/N or y/n)?y↙Please enter the expression:2.0 \ 4.0↙Unknown operator!Do you want to continue(Y/N or y/n)?n↙Program is over!。