C程序显示输入的最高和最低数字。编程初学者

时间:2014-02-18 04:42:24

标签: c

本学期我正在参加C编程课程,而且我完全没有编程经验,这使得我很难完成作业甚至学习。

分配是编写一个程序,允许用户输入任意数量的值并显示输入的最大值和最小值。

它必须接受正数和负数,输入0将终止程序。

如果输入的第一个数字为0,则必须显示一条说明此内容的消息。

这对你们中的一些人来说可能是相当可笑的,但这就是我所拥有的。

#include <stdio.h>

int main(void)

{ 

float max=0, a;
float min=0, b;

printf("Entering 0 will terminate the sequence of input values.\n");

do{ printf("Enter Number:");

    if (scanf(" %f", &a)==1);{

    if(a<max){

        a=max;}

    if(a>min){

        a=min;}

    }

} while(a!=0);

printf("Your largest number was %.3f. Your smallest number was %.3f.", max, min);

return 0;
}

另外,您是否可以推荐和参考有助于我学习这些内容的材料,谢谢。

3 个答案:

答案 0 :(得分:3)

应该是:

if(a > max) {
    max = a;
}
if(a < min) {
    min = a;
}

答案 1 :(得分:1)

如果您解决以下问题,它应该有效。

  1. 您需要更改

    if (scanf(" %f", &a)==1);{
               ^            ^
    

    if (scanf("%f", &a)==1){
    
  2. 对于

    while(a!=0);
           ^^^
    

    使用float比较!=是一种不好的做法。最好使用以下代码

    while(fabs(a) > 0.001);
    

    正如@JonathanLeffler评论的那样,实际上这种情况会好起来的。但总的来说,你当然需要注意比较两个浮点值是否合适,尤其是在计算之后

  3. 您的逻辑错误,您应该更新max/min而不是a。所以改变

    if(a > max) {
        a = max;
    }
    if(a < min) {
        a = min;
    }
    

    if ( fabs(a) < 0.001 ) // if a~0, stop evaluating
                           //, otherwise, you will always get 0 as the min
        break;
    if(a > max) {
        max = a;
    }
    if(a < min) {
        min = a;
    }
    
  4. 您应该首先将min初始化为一个非常大的数字(例如FLT_MAX),以便能够根据a < min进行更新。如果你想处理负数,你最好设置float max=FLT_MIN


  5. 直播:http://ideone.com/XQYkeD

答案 2 :(得分:0)

试试这个:

while(1)
{ 
    printf("Enter Number:");

    if (scanf("%f", &a)==1)
    {
      if(a==0)  //check if the input value is 0 then break the loop
         break;
      else
         {
            if(a>max)
               max=a;

            if(a<min)
               min=a;
         } 
    }
    else
        break;
}

如果输入的值大于max,则max将替换为该数字。如果a小于min,则min被该数字替换。