C 如何检查某个数字是否接近某个特定数字?

C 如何检查某个数字是否接近某个特定数字?,c,C,编写一个程序,反复要求用户输入0到0之间的数字 设置为100,直到用户输入超出该范围的值。然后输出 最接近50的数字 例如: 输入一个数字:91.3 输入一个数字:64.4 输入一个数字:38.12 输入一个数字:46.9 输入一个数字:99.45 输入一个数字:103 最接近50的数字是46.900000 我只学会了do、while、for循环、if和else if选择语句 我知道我需要一个if语句来检查每个数字与50之间的差异,差异越小,数字越接近50。我包括stdlib.h,因为我想我需要

编写一个程序,反复要求用户输入0到0之间的数字 设置为100,直到用户输入超出该范围的值。然后输出 最接近50的数字

例如:

输入一个数字:91.3
输入一个数字:64.4
输入一个数字:38.12
输入一个数字:46.9
输入一个数字:99.45
输入一个数字:103

最接近50的数字是46.900000

我只学会了do、while、for循环、if和else if选择语句

我知道我需要一个if语句来检查每个数字与50之间的差异,差异越小,数字越接近50。我包括stdlib.h,因为我想我需要取差的绝对值,以避免负数。 然而,我不知道如何将这一思想纳入准则。代码应该如何编写

#include<stdio.h>
#include<stdlib.h>

int main (void)
{
  float num;
  printf("Enter a number:");
  scanf("%f",&num);

  while (num>=0 && num<=100)
  {
    printf("Enter a number:");
    scanf("%f",&num);
    //I think I would need an if statement here to check the difference
  }
  printf("\nThe closest is %.2f",/*I think I would need a new variable here.*/ );
  return 0;
}
#包括
#包括
内部主(空)
{
浮点数;
printf(“输入一个数字:”);
scanf(“%f”、&num);

当(num>=0&&num时,您需要一个额外的变量
float closestofifty
,该变量将使用如下状态更新

if (fabs(num - 50.0f) < fabs(ClosestToFifty - 50.0f) )
{
    ClosestToFifty = num:
}
if(晶圆厂数-50.0f)

ClosestToFifty
可以使用超出有效范围的某个值进行初始化,例如
200.0f

您需要一个额外的变量
float ClosestToFifty
,该变量将使用如下状态更新

if (fabs(num - 50.0f) < fabs(ClosestToFifty - 50.0f) )
{
    ClosestToFifty = num:
}
if(晶圆厂数-50.0f)

closestofifty
可以使用超出有效范围的某个值初始化,例如
200.0f

这是一个隐藏在编程问题中的数学问题


要找到最接近的数字,两个数字之差的绝对值最小,因此需要计算所有数字的差,并记住哪个差(及其对应的数字)的绝对值最小。

这是一个隐藏在编程问题中的数学问题


要找到最接近的数字,两个数字之间的差的绝对值最小,因此需要取所有数字的差,并记住哪一个差(以及它对应的数字)具有最小的绝对值。

读取每个数字后,找出该数字与50之间的差值。跟踪到目前为止发现的最小差值,并将其与当前差值进行比较。更新最小差值

float result;
float mindiff = 100; // minimum difference, initialize with any value greater than 50
scanf("%f", &num);
while(num>=0 && num<=100)
{
    //check with minimum till now and update accordingly
    if( fabs(num-50) < mindiff)
    {
        mindiff = fabs(num-50);
        result = num;
    }

    //read next number
    printf("Enter a number:");
    scanf("%f",&num);
}
浮点结果;
float mindiff=100;//最小差值,使用大于50的任何值初始化
scanf(“%f”、&num);

(num>=0&&num读取每个数字后,找出该数字与50之间的差异。跟踪到目前为止发现的最小差异,并将其与当前差异进行比较。更新最小差异

float result;
float mindiff = 100; // minimum difference, initialize with any value greater than 50
scanf("%f", &num);
while(num>=0 && num<=100)
{
    //check with minimum till now and update accordingly
    if( fabs(num-50) < mindiff)
    {
        mindiff = fabs(num-50);
        result = num;
    }

    //read next number
    printf("Enter a number:");
    scanf("%f",&num);
}
浮点结果;
float mindiff=100;//最小差值,使用大于50的任何值初始化
scanf(“%f”、&num);

虽然(num>=0&&numAll您需要的是
fabs(50 num)
,但这存在于数学中。h。使用第一次输入初始化最接近的数字,并使用每次下一次输入不断更新该数字。打印最终结果。如果输入大于50,则新的差值为(num-50.0),否则新的差值为(5.0-num)如果你不想包含
math.h
,你可以定义你自己的
abs
#定义abs(a)(a)>0.0?(a):-(a)
,但最好只包含
math.h
。顺便说一句,
形成一个三元运算符。你所需要的就是
晶圆厂(50个)
,这存在于数学中。但是。用第一次输入初始化最接近的数字,并用下一次输入不断更新该数字。打印最终结果。如果输入大于50,则新差为(num-50.0),否则新差为(5.0-num)如果你不想包含
math.h
,你可以定义你自己的
abs
#定义abs(a)(a)>0.0?(a):-(a)
,但最好只包含
math.h
。顺便说一句,
形成一个三元运算符。