输入一个正整数n和n个整数,找出这n个数中的最大数和最小数

img


是哪里错了?
为什么怎么也算不对呢?到底是哪一步错了?
求指点,谢谢了

最大最小值要初始化的,而且应该是max,min和a比较,和n有啥关系

int n,a,i,max,min;
scanf("%d",&n);
for(i=0;i<n;i++)
{
    scanf("%d",&a);
    if(i==0)
         max = min = a;
    else
    {
        if(max < a)
            max = a;
        if(min > a)
            min  = a;
    }
}
printf("max=%d,min=%d",max,min);

你这逻辑有问题,你试一下下面这段


if(a > max){
    max = a;
}
if(a < min){
   min = a;
}

问一下,这个题目是不是说输入n个整数来比较这n个数得出最大最小值,而不是将n也放进去比较


#include<stdio.h>
int main( )
{
int n,i,j,num,max,min;
scanf("%d", &n);
scanf("%d", &num);
max=num;
min=num;
for(i=1; i<n;i++)
{
scanf("%d",&num);
if(max<num)
max=num;
if(min>num)
min=num;
}
printf("max=%d, min=%d\n", max,min);
}

n为要输入的正整数的个数,不能用他来和a比较得出输入的n个数的最大值,最小值,而应该是用max变量和min变量不断赋值后再和后续的a比较得出最大值和最小值,修改如下:


#include <stdio.h>

int main(void){
    
    int i,n,a,max=0,min;
    
    scanf("%d",&n);
    
    for(i=1;i<=n;i++){
        
        scanf("%d",&a);
        
        if(i==1){
            max=a;
            min=a;
        }else{
            if(min>a){
                min=a;
            }
            
            if(max<a){
                max=a;
            }
        }
        
        
    } 
    
    printf("max=%d,min=%d",max,min);
    
    return 0;
} 

img

你是比较那个数的大小,不是拿n值去比较的:

#include<stdio.h>
int main( )
{
int n,a,i;
int max = -10000,min = 10000;//把最大最小值先初始化为极值进行判断
scanf("%d",&n);
for(i=0;i<n;i++)
{
    scanf("%d",&a);
    if(max < a)
         max = a;
    if(min > a)
         min  = a;
}
printf("max=%d,min=%d",max,min);
}

看合你意不?

img

img

#include<stdio.h>
#include<limits.h>
 
int main()
{
    int n, min = INT_MAX, max = INT_MIN;
    scanf("%d", &n);
    
    if(n<=0)return -1;
    
    int arrn[n];

    for (int i = 0; i < n; i++)
    {
        scanf("%d", &arrn[i]);
        
        if (arrn[i] <= min)
        {
            min = arrn[i];
        }
        if (arrn[i] >= max)
        {
            max = arrn[i];
        }
    }
    
    printf("最大值是:%d\n最小值是:%d\n", max, min);

    return 0;
}

中间判断逻辑有问题,是数组内的元素大小判断,跟n没啥关系,可以尝试改成下面这样

int n,a,i,max,min;
scanf("%d",&n);
for(i=0;i<n;i++)
{
    scanf("%d",&a);
    if(i==0)
         max = min = a;
    else
    {
        if(max < a)
            max = a;
        if(min > a)
            min  = a;
    }
}
printf("max=%d,min=%d",max,min);

还有一种情况:a=n