我需要编写一个重复程序,它可以获得5个数字并显示最大值和最小值。 我暂时得到了这个但是没有用。
#include <stdio.h>
#include <conio.h>
int main()
{
int i,maximum, minimum, number;
int count=0;
const int n = 5;
for(i = 0 ; i < n; i++)
{
printf("enter number %d :",i+1) ;
scanf("%d",&number) ;
maximum=(number>maximum);
minimum=(number<minimum);
}
printf("\n maximum is :%d ,& minimum is :%d ",maximum, minimum) ;
getch();
return 0;
}
这只会将1
ans 0
显示为最大值和最小值。我的逻辑背后的问题是什么?
答案 0 :(得分:7)
包含以下头文件:
#include <limits.h>
...然后更改以下内容:
int i, maximum, minimum, number;
......来:
int i, maximum, minimum, number;
maximum = INT_MIN;
minimum = INT_MAX;
...并更改以下内容:
maximum = ( number > maximum );
minimum = ( number < minimum );
......来:
maximum = (number > maximum) ? number : maximum;
minimum = (number < minimum) ? number : maximum;
......整个程序可以编写如下:
#include <limits.h>
#include <stdio.h>
int main( void ) {
int maximum = INT_MIN,
minimum = INT_MAX,
number;
int const inputs_upperbound = 5;
for ( int i = 0; i < inputs_upperbound; i++ ) {
printf( "Enter number %d: ", i );
scanf( "%d", &number );
if ( number > maximum ) maximum = number;
if ( number < minimum ) minimum = number;
}
printf( "The minimum number was %d, and the maximum number was %d.\n", minimum, maximum );
return 0;
}
<强>注:强>
逻辑运算符>
和<
返回true
或false
(因此任何非零整数,true
为1或{{1}为0 }})。您打算做的是改变与该结果相关的false
和maximum
值,因此需要minimum
和?
运算符。或者,您可以使用控制流语句:
,如下所示:
if
您还应该使用if ( number > maximum ) maximum = number;
if ( minimum < minimum ) minimum = number;
函数指定不应使用特殊main
参数向其传递任何参数,如下所示:
void
... from C11 specification 6:11:6(第179页)
使用带空括号的函数声明符(不是 prototype-format参数类型声明符)是一个过时的 特征强>
答案 1 :(得分:1)
(数字&gt;最大值)等于1(布尔值为真),当它是真的时,它是0,当它不是时。与minumum相同。您不能在任何地方将数字分配到最大值或最小值,仅进行最大值分配,然后进行比较时最小值为布尔值0和1(&lt;,&gt;)。如果要获得最大数量,则必须指定maximum = number,如果number> gt; maximum。希望能帮助到你。
哦,其他的事情是你没有初始化(给出起始值)最大和最小变量。因此,当您比较数字&gt;最大值时,此时您的最大值是多少?想一想。
答案 2 :(得分:0)
您不需要limits.h。
使用以下代码。
#include <stdio.h>
#include <conio.h>
int main()
{
int i,maximum, minimum, number;
int count=0;
const int n = 5;
for(i = 0 ; i < n; i++)
{
printf("enter number %d :",i+1) ;
scanf("%d",&number) ;
maximum=(number>maximum)? number : maximum;
minimum=(number<minimum)? number : minimum;
}
printf("\n maximum is :%d ,& minimum is :%d ",maximum, minimum) ;
getch();
return 0;
}
这很有效。