选择结构【C语言程序设计】

来源:互联网 发布:将iphone照片传到mac 编辑:程序博客网 时间:2024/06/06 07:24


一.实验目的:

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()          //BY1600301226-陆德松

{

    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()          //BY1600301226-陆德松

{

    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;

}