一.实验目的:
1. 正确使用关系表达式和逻辑表达式表示条件;
2. 掌握选择语句if-else和switch语句的使用方法;
3. 掌握分支结构程序设计。
二、实验内容和步骤 |
(1)分析并修改下面程序错误,使之能够正常运行。
错误代码一:下面的这个程序是当a和b的值相等的情况下输出“a和b相等”,而a与b的值不相等的话无输出。
#include <stdio.h>
int main()
{
int a=5,b=6; /* 或 int a=5, b=5 ;*/
if (a==b);
{
printf("a和b相等\n");
}
return 0;
}
错误分析:
if 条件语句后后面多了个分号
错误的代码二:下面的这个程序是当a和b的值相等的情况下a与b的值同时增加1,而a与b的值不相等的话,二者的值保持不变。
#include <stdio.h>
int main()
{ int a=5; /* 或 int a=6*/
int b=6;
if (a==b)
a++;
b++;
printf("a=%d,b=%d",a,b);
return 0;
}
错误分析:
没有花括号,if 语言只实行第一条语句 “a++;”
(2)编写程序实现以下功能
1).身高预测
每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后的身高的因素包括遗传、饮食习惯与体育锻炼等。小孩成人后的身高与其父母的身高和自身的性别密切相关。
设faHeight为其父身高,moHeight为其母身高,身高预测公式为
男性成人时身高=(faHeight + moHeight)×0.54cm
女性成人时身高=(faHeight×0.923 + moHeight)/2cm
此外,如果喜爱体育锻炼,那么可增加身高2%;如果有良好的卫生饮食习惯,那么可增加身高1.5%。编程从键盘输入用户的性别(用字符型变量sex存储,输入字符F表示女性,输入字符M表示男性)、父母身高(用实型变量存储,faHeight为其父身高,moHeight为其母身高)、是否喜爱体育锻炼(用字符型变量sports存储,输入字符Y表示喜爱,输入字符N表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量diet存储,输入字符Y表示良好,输入字符N表示不好),利用给定公式和身高预测方法对身高进行预测。
编程要求:有用户输入输出提示信息。
代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
float faHeight,moHeight;
char sex,sports,diet;
printf("Please inputsex,faHeight,moHeight,sports and diet:\n");
scanf("%c%f%f%c%c",&sex,&faHeight,&moHeight,&sports,&diet);
float adult_height;
sex=='m'?adult_height=(faHeight + moHeight)*0.54:(faHeight*0.923 +moHeight)/2;
if(sports=='Y')
{
adult_height*=1.02;
if(diet=='Y')
{
adult_height*=1.015;
}
}
else if(diet=='Y')
{
adult_height*=1.015;
}
printf("Thechildren's heigh is %f\n",adult_height);
return 0;
}
2).简单的计算器
用switch语句编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:
操作数1 运算符op 操作数2
计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。
编程要求:程序能进行浮点数的算术运算,有用户输入输出提示信息。
提示:因为除法中的除数不能为0,因此关键在于如何比较浮点变量data2和常数0是否相等。作为整型变量跟0的比较,简单的==就可以解决。而浮点型等实型变量需要用
if (fabs(data2) <= 1e-7)
进行判断(即判断其是否足够小)。若使用函数fabs,需要包含头文件cmath.h
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main()
{
char operation;
float data1,data2;
printf("Please inputthe data1,operation,data2:\n");
while(scanf("%f%c%f",&data1,&operation,&data2)!=EOF)
{
if(operation=='+')
printf("=%f\n\n",data1+data2);
elseif(operation=='-')
printf("=%f\n\n",data1-data2);
elseif(operation=='*')
printf("=%f\n\n",data1*data2);
elseif(operation=='/')
{
if(fabs(data2)<= 1e-7)
printf("The data2 is error.\n\n");
else
printf("=%f\n\n",data1/data2);
}
}
return 0;
}