C語(yǔ)言用指針函數(shù)尋找數(shù)組中的最大值與次大值
代碼示例:
#include <stdio.h>
// 函數(shù)用于找出數(shù)組中的最大值和次大值
void LargestTow(int a[], int n, int *pfirst, int *psecond) {
*pfirst = a[0];
*psecond = a[1];
if (*psecond > *pfirst) {
// 如果初始的次大值大于最大值,交換它們
int temp = *pfirst;
*pfirst = *psecond;
*psecond = temp;
}
for (int i = 2; i < n; i++) {
if (a[i] > *pfirst) {
// 如果當(dāng)前元素大于最大值,更新次大值為原來(lái)的最大值,最大值更新為當(dāng)前元素
*psecond = *pfirst;
*pfirst = a[i];
} else if (a[i] > *psecond) {
// 如果當(dāng)前元素大于次大值但小于最大值,更新次大值為當(dāng)前元素
*psecond = a[i];
}
}
}
int main() {
int n;
scanf("%d", &n);
int a[n];
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
int max, second_max;
LargestTow(a, n, &max, &second_max);
printf("%d %d\n", max, second_max);
return 0;
}以下是按照先遍歷數(shù)組找出最大值,然后再次遍歷數(shù)組找出最小值的思路,使用 C 語(yǔ)言編寫(xiě)的代碼來(lái)解決上述問(wèn)題(找出n個(gè)整數(shù)中的最大值和次大值):
#include <stdio.h>
// 函數(shù)用于找出數(shù)組中的最大值和次大值
void LargestTow(int a[], int n, int *pfirst, int *psecond) {
int max_value = a[0];
int max_index = 0;
// 第一次遍歷數(shù)組,找出最大值及其索引
for (int i = 1; i < n; i++) {
if (a[i] > max_value) {
max_value = a[i];
max_index = i;
}
}
*pfirst = max_value;
// 將最大值所在位置的元素設(shè)為一個(gè)很小的值,避免它干擾找次大值
a[max_index] = -99999999;
int second_max_value = a[0];
// 第二次遍歷數(shù)組,找出次大值
for (int i = 1; i < n; i++) {
if (a[i] > second_max_value) {
second_max_value = a[i];
}
}
*psecond = second_max_value;
}
int main() {
int n;
scanf("%d", &n);
int a[n];
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
int max, second_max;
LargestTow(a, n, &max, &second_max);
printf("%d %d\n", max, second_max);
return 0;
}題目描述
求n個(gè)整數(shù)中的最大值和次大值。要求定義一個(gè)函數(shù)LargestTow(),求數(shù)組a的最大值和次大值兩個(gè)值,分別存入形參指針pfirst和psecond所指存儲(chǔ)單元,函數(shù)原型如下:
void LargestTow(int a[],int n,int *pfirst,int *psecond)
{
/*數(shù)組a有n個(gè)元素,將數(shù)組中的最大值存入形參指針pfirst所指內(nèi)存單元,將數(shù)組中第二大的值存入形參指針psecond所指內(nèi)存單元。 */
}輸入描述
輸入有兩行,輸入第一行是一個(gè)整數(shù)n,1<n<=1000;第二行是n個(gè)整數(shù),由空格隔開(kāi)。
輸出描述
輸入兩個(gè)整數(shù),表示數(shù)組中最大的兩個(gè)值。輸出占一行。
樣例輸入
5
6 3 4 9 8
樣例輸出
9 8
總結(jié)
到此這篇關(guān)于C語(yǔ)言用指針函數(shù)尋找數(shù)組中的最大值與次大值的文章就介紹到這了,更多相關(guān)C語(yǔ)言尋找數(shù)組最大值與次大值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何通過(guò)UltraEdit解析BMP文件內(nèi)部結(jié)構(gòu)(BMP位圖基礎(chǔ))
我們先打開(kāi)畫(huà)圖隨便畫(huà)一幅圖并采用24位bmp圖像格式保存,就得到了一張24位真彩色的位圖,下面我們來(lái)詳細(xì)分析bmp位圖的各個(gè)組成部分,感興趣的朋友跟隨小編一起看看吧2021-08-08
使用C++ MFC編寫(xiě)一個(gè)簡(jiǎn)單的五子棋游戲程序
這篇文章主要介紹了使用C++ MFC編寫(xiě)一個(gè)簡(jiǎn)單的五子棋游戲程序,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
C++實(shí)現(xiàn)LeetCode(163.缺失區(qū)間)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(163.缺失區(qū)間),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
深入理解:Java是類(lèi)型安全的語(yǔ)言,而C++是非類(lèi)型安全的語(yǔ)言
本篇文章是對(duì)Java是類(lèi)型安全的語(yǔ)言,而C++是非類(lèi)型安全的語(yǔ)言進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
C++、python和go語(yǔ)言實(shí)現(xiàn)的簡(jiǎn)單客戶(hù)端服務(wù)器代碼示例
這篇文章主要介紹了C++、python和go語(yǔ)言實(shí)現(xiàn)的簡(jiǎn)單客戶(hù)端服務(wù)器代碼示例,本文分別給出了3種語(yǔ)言的客戶(hù)端服務(wù)器通信代碼實(shí)例,需要的朋友可以參考下2015-03-03
C/C++運(yùn)用WMI接口實(shí)現(xiàn)查詢(xún)系統(tǒng)信息
Windows?Management?Instrumentation(WMI)是一種用于管理和監(jiān)視Windows操作系統(tǒng)的框架,本文主要介紹了如何運(yùn)用WMI接口實(shí)現(xiàn)查詢(xún)系統(tǒng)信息,感興趣的可以了解下2023-11-11
C語(yǔ)言 數(shù)與串之間轉(zhuǎn)換的方法
C語(yǔ)言 數(shù)與串之間轉(zhuǎn)換的方法,需要的朋友可以參考一下2013-05-05

