程序设计与问题求解实验一

一.实验目的:

  1. 了解和使用VC集成开发环境;
  2. 理解顺序结构程序设计方法。
  3. 掌握关系和逻辑运算表达式来表示条件;
  4. 掌握分支结构程序if和switch设计方法。

二、实验内容和步骤

1. 分析并修改下面程序错误,使之能够正常运行。

(1)错误代码一:

下面的程序是求a和b的和。用户读入a和b的值,计算出结果,并输出。

#include <stdio.h>

int  main()

{     int a,b;

       int sum;

       sum=a+b;

       scanf("%d%d",a,b);

      

       printf("sum=%d\n",sum);

       return 0;

}

编译环境中正确代码、运行结果截图及错误原因分析如下:

正确代码如图片所示:

 

错误原因分析:

Scanf中a和b没有取地址符号

Sum= a+b这条语句应该放在scanf之后,

先输入才能进行求和

2)错误代码二:

下面的这个程序是当a和b的值相等的情况下输出“a和b相等”,而a与b的值不相等的话无输出。

#include <stdio.h>

int  main()

{

  scanf(“%d%d”,&a,&b);

  if (a==b);

  {

         printf("a和b相等\n");

  }

  return 0;

}

编译环境中正确代码、运行结果截图及错误原因分析如下:

正确代码:

 

错误原因:if后面有一个分号,不符合语法规定

且a和b没有定义

(3)错误的代码三:

下面的这个程序是当a和b的值相等的情况下a与b的值同时增加1,而a与b的值不相等的话,二者的值保持不变。

#include <stdio.h>

int  main()

  int  a,b;

  scanf(“%d%d”,&a,&b);

   if (a==b)

         a++;

      b++;

   printf("a=%d,b=%d",a,b);

  return  0;

}

编译环境中正确代码、运行结果截图及错误原因分析如下:

正确代码:

#include <stdio.h>

int  main()

{

    int  a, b;

    scanf("%d%d", &a, &b);

    if (a == b)

    {

        a++;

        b++;

    }

 

    printf("a=%d,b=%d", a, b);

    return  0;

}

运行结果:

错误原因:

即使a和b不相等,仍然执行a++和b++语句,因为这两个语句没有用大括号括起来,导致if判断不成立之后,仍然执行这两条语句

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>

int main()

{

 char sex,sport,diet; int fh,mh;    float h;

 scanf("%d %d %c %c %c",&fh,&mh,&sex,&sport,&diet);

 if(sex=='M')

 {

  if(sport=='Y'&&diet=='Y')

  {

   h=(float)((fh+mh)*0.54*1.02*1.015);

   printf("%.2lf",h);

  }

  else if(sport=='Y'&&diet=='N')

  {

   h=(float)((fh+mh)*0.54*1.02);

   printf("%.2lf",h);

  }

  else if(sport=='N'&&diet=='Y')

  {

   h=(float)((fh+mh)*0.54*1.015);

   printf("%.2lf",h);

  }

  else if(sport=='N'&&diet=='N')

  {

   h=(float)((fh+mh)*0.54);

   printf("%.2lf",h);

  }



 }else if(sex=='F')

 {

  if(sport=='Y'&&diet=='Y')

  {

   h=(float)(((fh*0.923+mh)/2)*1.02*1.015-0.05);

   printf("%.2lf",h);

  }

  else if(sport=='Y'&&diet=='N')

  {

   h=(float)(((fh*0.923+mh)/2)*1.02);

   printf("%.2lf",h);

  }

  else if(sport=='N'&&diet=='Y')

  {

   h=(float)(((fh*0.923+mh)/2)*1.015);

   printf("%.2lf",h);

  }

  else if(sport=='N'&&diet=='N')

  {

   h=(float)((fh*0.923+mh)/2);

(3)简单的计算器

用switch语句编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:

操作数1  运算符op  操作数2

计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。

编程要求:程序能进行浮点数的算术运算,有用户输入输出提示信息。

提示:因为除法中的除数不能为0,因此关键在于如何比较浮点变量data2和常数0是否相等。作为整型变量跟0的比较,简单的==就可以解决。而浮点型等实型变量需要用

if (fabs(data2) <= 1e-7)

进行判断(即判断其是否足够小)。若使用函数fabs,需要包含头文件math.h

编译环境中正确代码如下:

正确的代码:

#include<stdio.h>

        int main()

        {

            float a=0.00;

            float b=0.00 ;

            char op;

            float sum = 0.00;

            scanf("%f%c%f", &a, &op, &b);

            switch (op)

            {

            case '+':

                sum = a + b;

                printf("%.2f", sum);

                break;

            case '-':

                sum = a - b;

                printf("%.2f", sum);

                break;

            case '*':

                sum = a * b;

                printf("%.2f", sum);

                break;

            case '/':

                if (b == 0)

                    printf("除数不能为0\n");

                else if (b != 0)

                {

                    sum = a / b;

                    printf("%.2f", sum);

                    break;

                }

            default:

            {

                if(op != '+'&&op!='-'&&op!='*'&&op!='/')

                printf("运算符有误\n");

                break;

            }

            }

            return 0;

        }

三、实验小结

总结在实验中出现的问题以及解决的方法。

  1. 实验中出现的问题主要为输入时变量没有取地址符号
    1. 语言的逻辑顺序问题
    2. 大括号,分号等符号要正确使用
    3. 编写代码时,应该先有一个总体思路,先实现整体构架,在逐步细分实现各分部代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邓富民

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值