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

  • 本文关键字:数字 编程 初学者 显示 程序 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;
}

另外,你们中的任何人都可以推荐和参考材料来帮助我学习这些东西,谢谢。

应该是:

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

如果您修复以下问题,它应该可以工作。

  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


现场观看:http://ideone.com/XQYkeD。

试试这个:

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 将替换为该数字。如果 a 小于 min,则 min 将替换为该数字。

最新更新