JAc*_*Ace 0 c logic loops for-loop
我需要编写一个重复程序来获取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;
}
Run Code Online (Sandbox Code Playgroud)
这只是将1ans 显示0为max和min.我的逻辑背后的问题是什么?
包括以下头文件:
#include <limits.h>
Run Code Online (Sandbox Code Playgroud)
...然后更改以下内容:
int i, maximum, minimum, number;
Run Code Online (Sandbox Code Playgroud)
... 至:
int i, maximum, minimum, number;
maximum = INT_MIN;
minimum = INT_MAX;
Run Code Online (Sandbox Code Playgroud)
...并更改以下内容:
maximum = ( number > maximum );
minimum = ( number < minimum );
Run Code Online (Sandbox Code Playgroud)
... 至:
maximum = (number > maximum) ? number : maximum;
minimum = (number < minimum) ? number : maximum;
Run Code Online (Sandbox Code Playgroud)
......整个程序可以写成如下:
#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;
}
Run Code Online (Sandbox Code Playgroud)
备注:
逻辑运算符>并<返回true或false(因此任何非零整数,1表示true或0表示false).您打算做的是改变与该结果相关的值maximum和minimum值,因此需要?和:运算符.或者,您可以使用控制流语句if,如下所示:
if ( number > maximum ) maximum = number;
if ( minimum < minimum ) minimum = number;
Run Code Online (Sandbox Code Playgroud)
您还main应该使用特殊void参数指定不应将任何参数传递给它的函数,如下所示:
int main( void ) {
// ... code.
}
Run Code Online (Sandbox Code Playgroud)
...... 来自C11规范6:11:6(第179页)
的使用功能与空括号声明符(未原型格式参数类型说明符)是一个过时特征.