C 如何检查某个数字是否接近某个特定数字?
编写一个程序,反复要求用户输入0到0之间的数字 设置为100,直到用户输入超出该范围的值。然后输出 最接近50的数字 例如: 输入一个数字:91.3C 如何检查某个数字是否接近某个特定数字?,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,因为我想我需要
输入一个数字: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
。顺便说一句,?
和:
形成一个三元运算符。