您的位置:首页 > 职场人生

找出一个整数数组中,第二大的数

2015-11-15 13:28 344 查看
/*
写一个函数找出一个整数数组中第二大的数
*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define SIZE 10
int array[] = {0};

//随机产生一个大小为SIZE的整数数组
void  createArray(int array[])
{
int i = 0;

srand(time(NULL));
for(i = 0; i < SIZE; i++){
array[i] = rand();
}
}

//打印整数数组
void printArray(int array[])
{
int i = 0;
for(i = 0; i < SIZE; i++){
printf("%d, ", array[i]);
}
printf("\n");
}

//获取数组中第二大的数
int getSecondMaxNumber(int array[])
{
int i = 0;
int max = array[0];
int max2 = array[0];
for(i = 1; i < SIZE; i++){
if(array[i] > max){
max2 = max;
max = array[i];
}
else if(array[i] < max){    //排除等于的情况
if(array[i] > max2){
max2 = array[i];
}
}
}
//如果最后第二大的数等于最大的数,说明数组中没有第二大的数
if(max == max2){
return (2^32-1);
}

return max2;
}

//获取数组中第二大的数
int findSecondMaxNumber(int array[])
{
int i = 0;
int max = array[0];
int max2 = array[0];
for(i = 1; i < SIZE; i++){
if(array[i] > max2){
if(array[i] < max){
max2 = array[i];
}
else if(array[i] > max){
max2 = max;
max = array[i];
}
}
}
//如果最后第二大的数等于最大的数,说明数组中没有第二大的数
if(max == max2){
return (2^32-1);
}

return max2;
}

int main(void)
{
createArray(array);
printArray(array);

//int second = findSecondMaxNumber(array)
int second = getSecondMaxNumber(array);
if(second == (2^32-1)){
printf("It is not has second max number!\n");
}
else{
printf("%d\n", second);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C 面试