使用用户输入查找最大和最小数字

时间:2014-06-12 23:00:13

标签: c loops if-statement for-loop

这是一个关于在一组数字中找到最大和最小数字的问题,但我们不知道用户想要多少数字 -

到目前为止,这就是我所做的:

#include <stdio.h>
#include <conio.h>
int main()
{

int num;
int i;
int maxi=0;
int minim=0;
int cont = 0;

printf ("\nQuantity of numbers?: ");
scanf ("%d", &num);
while (num>0)
    {
    printf ("\nEnter number:");
    scanf ("%d", &i);
    if (num>i)
        minim=i++;

    else
        if (i>num)
            max=i++;
            cont++;
}

printf ("\nBiggest number is es: %d", maxi);
printf ("\nSmallest number is: %d", minim);
getch();
return 0;
}

我做了我的程序,询问用户想要放多少个数字,然后我让程序读取它们,但是当它读取最大或最小的数字时,它有时会变小而变得很小而且它不会读取负数。

如何让我的计划更好?

3 个答案:

答案 0 :(得分:0)

您正在与错误的值进行比较。

do 
{
   printf("Enter a number.\n");
   scanf("%i", &input);
   if min > input 
     min = input
   if max < input
     max = input   
}   while (input > 0);

答案 1 :(得分:0)

#include <stdio.h>
#include <conio.h>
#include <limits.h>

int main(){
    int num;
    int i;
    int maxi=0;
    int minim=INT_MAX;
    int cont = 0;

    printf ("\nQuantity of numbers?: ");
    scanf("%d", &num);
    if(num > 0){
        while (num>0){
            printf ("\nEnter number:");
            if(scanf("%d", &i) == 1 && !(i<0)){
                if(minim > i)
                    minim = i;
                if (maxi < i)
                    maxi = i;
                ++cont;
                --num;
            } else {
                //fprintf(stderr, "redo input!\n")
                ;
            }
            scanf("%*[^\n]%*c");
        }

        printf ("\nBiggest number is : %d", maxi);
        printf ("\nSmallest number is : %d\n", minim);
    }
    getch();
    return 0;
}

答案 2 :(得分:0)

您应该将mini初始化为最大可能的int,即INT_MAXmaxi,以尽可能小的int,即INT_MIN。这样,即使第一个数字为负数,也会考虑maxi,如果第一个数字为正,则仍会考虑mini。常量INT_MAXINT_MIN包含在<climits><limits.h>中。

此外,您将当前输入的数字与num进行比较,#include<limits.h> #include<stdio.h> int main() { int num; int maxi=INT_MIN; //initialize max value int mini=INT_MAX; //initialize min value int temp; scanf("%d", &num); //take in number of numbers while(num--) //loop "num" times, num decrements once each iteration of loop { scanf("%d", &temp); //Take in new number if(temp>maxi) //see if it is new maximum maxi=temp; //set to new maximum if(temp<mini) //see if new minimum mini=temp; //set to new minimum } printf("\nMaxi is:\t%d\nMini is:\t%d\n", maxi, mini); //print answer return 0; } 是用户输入的数字的计数器,而不是他想要比较的值之一。更好的修改代码将是:

{{1}}