C While 循环显示 Max 和 Min 并以 0 结尾,但我不想考虑 0
C While loop displaying Max and Min and ends with 0, but I don't want 0 to factor in
我制作了一个显示最小值和最大值的 C do while 循环。当用户输入 0 时循环结束。
我的问题是当我输入一组都大于 0 的数字时,我的最小值是零。
例如当我输入
19,16,8,12,9
我的 max is 19
,但是我的 min is 0
.
我需要 min
是集合的 min
,所以在这种情况下是 8.
我也遇到了集合
的负整数的问题
-6,-4,-9,-12
min is -12
,可是我的max is 0
。在这种情况下,我想要我的 max to be -4
。
我该如何解决这个问题。这是因为我必须输入 0 才能结束程序吗?我应该试试 while 循环吗?
感谢任何帮助。
#include<stdio.h>
main()
{
int L,S,X;
do{
printf("\ninput number:");
scanf("%d",&X);
if (X>L){
L=X;
}
if (X<S){
S=X;
}
} while(X!=0);
printf("\nmax %d, min %d",L,S);
printf("\n");
return 0;
}
首先扫描一个值存入L和S,同时加一个if判断第一个数字本身是否为0
#include<stdio.h>
main() {
int L,S,X;
printf("\ninput number:");
scanf("%d",&X);
L=X;
S=X;
if(X!=0){
do{
printf("\ninput number:");
scanf("%d",&X);
if (X>L){
L=X;
}
if (X<S){
S=X;
}
}while(X!=0);}
printf("\nmax %d, min %d",L,S);
printf("\n");
return 0;
}
您的变量 L
和 S
未初始化,因此从一些未知值开始。最小值应从 INT_MAX 开始,最大值应从 INT_MIN.
开始
您必须分别用最小值和最大值初始化 L
和 S
变量。由于L
和S
都是整数,将L
的值设置为INT_MIN
,将S
设置为INT_MAX
(这些常量存在于<limits.h>
).
因此,您的代码将是:
#include <stdio.h>
#include <limits.h>
main()
{
int L = INT_MIN ,S = INT_MAX , X;
printf("\nInput number:");
scanf("%d",&X);
while (X)
{
if (X>L){
L=X;
}
if (X<S){
S=X;
}
printf("\nInput number:");
scanf("%d",&X);
}
printf("\nmax %d, min %d",L,S);
printf("\n");
return 0;
}
此代码也解决了 0
问题。因为,当您输入数字时,下一条语句会检查数字是否为 0
。
我制作了一个显示最小值和最大值的 C do while 循环。当用户输入 0 时循环结束。
我的问题是当我输入一组都大于 0 的数字时,我的最小值是零。
例如当我输入
19,16,8,12,9
我的 max is 19
,但是我的 min is 0
.
我需要 min
是集合的 min
,所以在这种情况下是 8.
我也遇到了集合
-6,-4,-9,-12
min is -12
,可是我的max is 0
。在这种情况下,我想要我的 max to be -4
。
我该如何解决这个问题。这是因为我必须输入 0 才能结束程序吗?我应该试试 while 循环吗?
感谢任何帮助。
#include<stdio.h>
main()
{
int L,S,X;
do{
printf("\ninput number:");
scanf("%d",&X);
if (X>L){
L=X;
}
if (X<S){
S=X;
}
} while(X!=0);
printf("\nmax %d, min %d",L,S);
printf("\n");
return 0;
}
首先扫描一个值存入L和S,同时加一个if判断第一个数字本身是否为0
#include<stdio.h>
main() {
int L,S,X;
printf("\ninput number:");
scanf("%d",&X);
L=X;
S=X;
if(X!=0){
do{
printf("\ninput number:");
scanf("%d",&X);
if (X>L){
L=X;
}
if (X<S){
S=X;
}
}while(X!=0);}
printf("\nmax %d, min %d",L,S);
printf("\n");
return 0;
}
您的变量 L
和 S
未初始化,因此从一些未知值开始。最小值应从 INT_MAX 开始,最大值应从 INT_MIN.
您必须分别用最小值和最大值初始化 L
和 S
变量。由于L
和S
都是整数,将L
的值设置为INT_MIN
,将S
设置为INT_MAX
(这些常量存在于<limits.h>
).
因此,您的代码将是:
#include <stdio.h>
#include <limits.h>
main()
{
int L = INT_MIN ,S = INT_MAX , X;
printf("\nInput number:");
scanf("%d",&X);
while (X)
{
if (X>L){
L=X;
}
if (X<S){
S=X;
}
printf("\nInput number:");
scanf("%d",&X);
}
printf("\nmax %d, min %d",L,S);
printf("\n");
return 0;
}
此代码也解决了 0
问题。因为,当您输入数字时,下一条语句会检查数字是否为 0
。