c语言 利用指针实现求数组元素中的最大元素和第二大元素

编程
2025-03-04 16:34:50
推荐回答(5个)
回答1:

#include

#include

#define N 10

//12 33 24 23 55 34 45 33 21 34

int max_value(int arr[], int sec_max)

{

int i; 

int max;

int size = N;

max = arr[0];

sec_max = arr[0];

for ( i = 0; i < size; i++)

{

if (max < arr[i])

{

sec_max = max;

max = arr[i];           

}

if (sec_max < arr[i] && arr[i] < max)

{

sec_max = arr[i];

}

}

if (max == sec_max)

{

sec_max = arr[1];

for (int i = 1; i < size; i++)

{

if (sec_max < arr[i])

{

sec_max = arr[i];

}

}

}

return max;

}

void main()

{

int a[N];

int i, max, second_max;

printf("please input 10 numbers:\n");

for ( i = 0; i < N; i++)

{

scanf("%d", &a[i]);

}

max = max_value(a, &second_max);

printf("max = %d\n", max);

printf("second_max = %d\n", second_max);

system("pause");

}

运行效果:

扩展资料:

system()函数用法:

用法:int system(char*command);

system函数已经被收录在标准c库中,可以直接调用。

程序例:

#include

#include

int main(void)

{

printf("About to spawn and run a DOS command\n");

system("dir");

return 0;

}

又如:system("pause")可以实现冻结屏幕,便于观察程序的执行结果;system("CLS")可以实现清屏操作。而调用color函数可以改变控制台的前景色和背景,具体参数在下面说明。

回答2:

#include
int main()
{
int *p;
int a[10]={0,1,2,3,4,5,6,7,8,9};
int max,max2,maxi;
p=a;
max=p[0];
maxi=0; //记录最大值的位置,当寻找第二大值时,此值作为依据。
int i;
for(i=0;p+i {
if(max<*(p+i))
{
max = *(p+i);
maxi = i;
}
}
p=a; //重置指针到数组的开始位置
if(maxi !=0) //要小心第一大值。
{
max2=p[0];
}
else
{
max2=p[1];
}
for(i=0;p+i {
if(max2<*(p+i) && maxi !=i) //忽略第一大值
{
max2 = *(p+i);
}
}
printf("max=%d,max2=%d",max,max2);
return 0;
}

回答3:

int max1,max2;
int p[N],*a;
...... //数组p初始化
a = p;
max1 = max2 = *p; //给max1和max2给一个初值
for(int i=0;i{
if(max1<*a)
max1 = *a;
a++;
} //第一次循环获取最大值
a = p; //重新定位指针a到p的首地址
for(int i=0;i{
if(max2<*a&&*a!=max1)
max2 = *a;
a++;
} //第二次循环获得次大值

回答4:

#include
#define N 10
void main()
{
int first,second,a[N],i;

for(i=0;i scanf("%d",(a+i));

first=second=a[0];

for(i=0;i {
if(first<*(a+i))
{
second = first;
first = *(a+i);
}
}

printf("%d %d\n",first,second);
}

回答5:

#define N 10
int main(int argc, char *argv[])
{
int ar[N] = {5,4,8,6,2,1,9,6,3,0};
int max , vicemax, i = 0;
int *p = ar;
max = vicemax = ar[0];
while(i < N)
{
if(*(p+i) > max)
{
vicemax = max;
max = *(p+i);
}
i++;
}
printf("max: %d vicemax: %d\n",max, vicemax);
system("PAUSE");
return 0;
}