这个代码用指针求数组的最大值和第二大的值错在哪里了

#include<stdlib.h>;
#include<stdio.h>;
#include<string.h>;
#pragma warning (disable:4996);
int main()
{
    int a[] = { 5,100,56,45,21,67,32,68,41,99,13,71 };
    int *p = a;
    int max1=0;
    int max2=0;
    for (int i = 0; i < sizeof(a) / sizeof(a[0]) - 1; i++)
    {
        int max1 = *p;
        if (max1 < *(p + i))
        {
            max1 = *(p + i);
        }
    }
    printf("max1=%d\n", max1);
    for (int i = 0; i < sizeof(a) / sizeof(a[0]) - 1; i++)
    {
        int max2 = *p;
        if (max2 < *(p + i) && *(p + i)< max1)
        {
            max2 = *(p + i);
        }
    }
    printf("max2=%d\n", max2);
    system("pause");
    return 0;    
}

#include<stdlib.h>;
#include<stdio.h>;
#include<string.h>;
#pragma warning (disable:4996);
int main()
{
    int a[] = { 5,100,56,45,21,67,32,68,41,99,13,71 };
    int *p = a;

    int max1=0;
    int max2=0;
    for (int i = 0; i < sizeof(a) / sizeof(a[0]) - 1; i++)
    {

        if (max1 < *(p + i))
        {
            max1 = *(p + i);
        }
    }
    printf("max1=%d\n", max1);
    for (int i = 0; i < sizeof(a) / sizeof(a[0]) - 1; i++)
    {

        if (max2 < *(p + i) && *(p + i)< max1)
        {
            max2 = *(p + i);
        }
    }
    printf("max2=%d\n", max2);
    system("pause");
    return 0;
}

如果有帮助请点一下我回答右上方的采纳,谢谢!以后有什么问题可以互相交流。

你这个for循环不对,要么改成<=,要么将减1去掉,否则数组最后一个值不参加运算,结果自然也不对了

#include<stdlib.h>;
#include<stdio.h>;
#include<string.h>;
#pragma warning (disable:4996);
int main()
{
    int i=0;
    int a[] = { 5,100,56,45,21,67,32,68,41,99,13,71 };
    int *p = a;
    int max1=*p;
    int max2=*p;
    for (i = 0; i < sizeof(a) / sizeof(a[0]); i++)
    {
        if (max1 < *(p + i))
        {
            max1 = *(p + i);
        }
    }
    printf("max1=%d\n", max1);
    for (i = 0; i < sizeof(a) / sizeof(a[0]) ; i++)
    {
        if (max2 < *(p + i) && *(p + i)< max1)
        {
            max2 = *(p + i);
        }
    }
    printf("max2=%d\n", max2);
    system("pause");
    return 0;    
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632