这里为什么min输出0

P4414 [COCI2006-2007#2] ABC

jmlcyjm @ 2024-09-08 22:37:25

#include <stdio.h>
int main()
{
    int num[3],max = 0,min = 100,middle = 0;
    char letter[3];
    for(int i = 0;i < 3;i++)
    {
        scanf("%d",&num[i]);
    } 
        scanf("%s",letter);
    for(int j = 0;j < 3;j++)
    {
        if(num[j] >= max)
        {
            max = num[j];
        }
        if(num[j] <= min)
        {
            min = num[j];
        }
    }
    printf("%d %d\n",max,min);
    for(int n = 0;n < 3;n++)
    {
        if(num[n] > min && num[n] < max)
        {
            middle = num[n];
        }
    }

    printf("%d %d %d\n",max,middle,min);
    if(letter[0] == 'A')
    {
        if(letter[1] == 'B')
        {
            printf("%d %d %d",min,middle,max);
        }
        else
        {
            printf("%d %d %d",min,max,middle);
        }
    }
    if(letter[0] == 'B')
    {
        if(letter[1] == 'A')
        {
            printf("%d %d %d",middle,min,max);
        }
        else
        {
            printf("%d %d %d",middle,max,min);
        }   
    }
    if (letter[0] == 'C')
    {
        if(letter[1] == 'B')
        {
            printf("%d %d %d",max,middle,min);
        }
        else
        {
            printf("%d %d %d",max,min,middle);
        }
    }
    return 0;
}

by sunhewei @ 2024-09-15 16:33:14

我这边试了一下 是num[0]变成0了 在输入字符之前num[0]还没问题 就是在输入字符之后自动变成0了 我也不知道是怎么回事 因为我常用cin 不常用scanf 所以我建议你可以换成cin试试


by jmlcyjm @ 2024-09-17 11:05:49

@sunhewei 谢谢您的回复,不过我自己搞懂了,letter数组应定义为4个大小以存放结束符,这里应该是letter数组越界导致了num数组的值被覆盖,我将大小改为4后就没问题了。


by sunhewei @ 2024-09-17 20:17:05

谢谢你 让我也又涨了知识


|