获取整型数组的第二大的数,完全采用数组来实现(当然也可以借助单链表来做)。
大体思想就是:先由小到大排序,然后可以获得最大的数,接着可以得到第二大的数,这里考虑到了数组中可能会出现重复数据的情况。gcc调试通过。
#include<stdio.h>
#include<stdlib.h>
#define N 12
void GetSecondNumber(int array[N])
{
int i,j,tmp,array_backup[N];
printf("原数组为:\n");
for(i=0;i<N;i++)
{
printf("%5d",array[i]);
}
printf("\n");
// 数组的备份,为了以后查找第二大的数的下标
for(i=0;i<N;i++)
{
array_backup[i]=array[i];
}
// 对原数组进行冒泡排序
for(i=0;i<N-1;i++)
{
for(j=0;j<N-i-1;j++)
{
if(array[j]>array[j+1])
{
tmp=array[j];
array[j]=array[j+1];
array[j+1]=tmp;
}
}
}
printf("排序后的数组为:\n");
for(i=0;i<N;i++)
{
printf("%5d",array[i]);
}
printf("\n");
// 以下为寻找第二大的数并匹配其下标
i=N-1;
if(array[i]>array[i-1])
{
printf("该数组中第二大的数是:%5d\n",array[i-1]);
printf("其下标是:");
for(j=0;j<N;j++)
{
if(array[i-1]==array_backup[j])
printf("%3d,",j);
}
printf("\n");
exit(0);
}
while(array[i]==array[i-1])
{
--i;
if(i-1==0)
{
printf("该数组中没有第二大的数。\n");
exit(0);
}
}
printf("该数组中第二大的数是:%d\n",array[i-1]);
printf("其下标是:");
for(j=0;j<N;j++)
{
if(array[i-1]==array_backup[j])
printf("%3d,",j);
}
printf("\n");
}
int main()
{
int i,array[N];
printf("请依次输入 %d 个数值,建立测试数组:\n",N);
for(i=0;i<N;i++)
{
scanf("%d",&array[i]);
}
GetSecondNumber(array);
return 0;
}
调试环境:Ubuntu Desktop 8.04.4 VI 7.1.138 GCC 4.2.4
QQ:81064483
E-mail:AllenNewOK@126.com
复习之用,不足之处,烦请高手们指点。< ^_^ >
分享到:
相关推荐
给定两个整型数组,本题要求找出不是两者共有的元素。 输入格式: 输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。 输出格式: 在一行中按照数字给出的...
在数组中找到最大值是一个经典的C语言数组程序。 该程序可以让您了解迭代,数组和条件运算符。 我们迭代地检查数组的每个元素并找到最大值。
c语言中找出一个整型数组中的元素的最大值。源码
定义20个元素的整型数组并赋初值。输入一个数,如果该数在数组中存在,则删除该数,其后的每个数前移一位,最后补0。
数组是引用类型,也就是说在定义和调用函数时,数组这种参数前加不加ref它都是引用参数,但是实参数组一定要初始化
C语言程序设计-从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main函数中输出;请编写fun函数;.c
C语言程序设计-从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main函数中输出;本.cC语言程序设计-
整型数组与Object数组的互操作性
(1)实现构造函数重载,可以根据指定的元素个数动态创建初始值为0的整型数组,或根据指定的内置整型数组动态创建整型数组。 (2)设计拷贝构造函数和析构函数,注意使用深拷贝。 (3)设计存取指定位置的数组元素...
写一个函数名为convert,实现将给定的3× 3的整型数组转置(行列互换)。 要求:(1)由键盘按矩阵的形式输入3× 3的整型数组。 (2)函数的原型为:void convert(int b[3][3]) (3)在源程序中书写必要的注释。
C# 将两个整型数组的元素相加。别忘给评分!
要按升序和降序对一组随机生成的整型数组元素进行排序。要求:不提供单独的升序和降序排序方法(不分别定义一个升序和一个降序方法),而只提供一个排序方法SortArray(),它接受一个委托类型的参数compare,该参数...
猴子吃桃问题的一种解答。使用了一个全局整型数组arr。
实现 字符串,整型数据,字符型数组互相转换源码
二维整型数组的“最大点”.c
数据结构课程设计 设计并模拟实现整型多维数组类型
java代码-使用java定义一个2行3列的整型数组的源代码 ——学习参考资料:仅用于个人学习使用!
C# 将整型数组元素转换为字符串.别忘了给评分!
二维整型数组.c
填写下述del函数内容,功能是删除整型数组中指定的数。 如:数组中的数为: 4、8、9、7、0、1要删除的数为 9; 删除后数组中的值为:4、8、7、0、1 要求:写出算法思路分析的过程。 编写函数fun,函数的功能是:将...