小黄练编程 发表于 2021-12-26 15:22:52

想让下面程序顺利输出最大值次最大值,错哪了?

#include<stdio.h>
max12(int *a,int n)//n为数组元素个数。
{
        int i,j,max=0,t,k;
        for(i=0;i<n;i++)
        {
                scanf("%d",a);
        }
        for(i=0;i<n;i++)
        {
                if(a>max)
                {
                        max=a;
                        j=i;
                }
        }
        t=a;a=a;a=t;//求出最大值,然后将其调到a位子。
        max=0;//从新赋值,求第二个最大值。
        for(i=1;i<n;i++)//从a开始在查找一边,求第二个最大值。
        {
                if(a>max)
                {
                        max=a;
                        k=i;
                }
        }
        printf("最大值%d\n次最大值%d\n",a,a);
}
intmain()
{
        int c,a;
        c=max12(a,5);
        return c;
}{:10_266:}{:10_266:}

jackz007 发表于 2021-12-26 16:10:44

本帖最后由 jackz007 于 2021-12-26 16:11 编辑

#include<stdio.h>

void max12(int * a , int n)
{
      int i , j , max , t                                             ;
      for(i = 0 ; i < n ; i ++) scanf("%d" , & a)                  ; // 学了这么长时间编程,不会不知道 scanf() 需要提供变量地址的事情吧?
      for(i = 0 ; i < n ; i ++)
      {
                for(max = j = i ; j < n ; j ++) if(a > a) max = j ;
                if(max != i)
                {
                        t = a                                        ;
                        a = a                                     ;
                        a = t                                          ;
                }
      }
      printf("最大值%d\n次最大值%d\n" , a , a)                  ;
}
intmain(void)
{
      int c , a                                                      ;
      max12(a , 5)                                                      ;
}

小黄练编程 发表于 2021-12-26 16:54:58

本帖最后由 小黄练编程 于 2021-12-26 16:56 编辑

jackz007 发表于 2021-12-26 16:10


{:10_299:}{:10_299:}{:10_299:}{:10_299:},我就只有没加&错了还有把互换的a当成了最大值而不是a错了, 我后面main()那些地方没问题吗?没加啥void,c代表输出两个数啥的
页: [1]
查看完整版本: 想让下面程序顺利输出最大值次最大值,错哪了?