有大佬能解釋一下這代碼嗎,作為小白看不懂為什么運行結(jié)果是10 1 3 12 22,拜托啦
#include <stdio.h>
void replaceMax(int arr[],int value)
{
? ? int max = arr[0];
? ? int index = 0;
? ? int i;
? ? for(i=1;i<5;i++)
? ? {
? ? ? ? if(arr[i]>max)
? ? ? ? {
? ? ? ? ? ? max=arr[i]; ? ? ? ? ?//將數(shù)組中較大的數(shù)賦值給max
? ? ? ? ? ? index = i; ?//記錄當(dāng)前索引
? ? ? ? } ? ? ? ? ? ? ? ?
? ? } ?
? ? arr[index] = value;
}
int main()
{
? ? int arr1[] = {10,41,3,12,22};
? ? int arr2[] = {1,2,3,4,5};
? ? int i; ?
? ? replaceMax(arr1, arr2[0] ); //將數(shù)組arr1和數(shù)組arr2的第一個元素傳入函數(shù)中
? ? for(i=0;i<5;i++)
? ? {
? ? ? ? printf("%d ",arr1[i]); ? ? ? ? ? ? ? ?
? ? }
? ? return 0; ? ?
}
2019-03-12
這個代碼里面一共有兩個部分,要實現(xiàn)的是把arr2中第一個元素替換arr1中最大的元素,這就是上面那個函數(shù) replaceMax在做的。 定義的max, index是為了找到里面最大的元素以及該元素的位置,定義的value是為了最后的替換,替換過程在最后一行,也就是
arr[index] = value,就是把元素(value)替換到arr里的過程。
在定義完這個函數(shù)以后就進行到了main函數(shù),里面也調(diào)用了replaceMax去換元素,然后利用for loop去把每一個元素都打印出來。