missyou012
2016-06-16 22:38
结果怎么出来的,为什么是10,,,,能不能对其中的一个结果的由来举个例子
#include <stdio.h>
void replaceMax(int arr[],int value)
{
int max = arr[0]; /*max=10*/
int index = 0;
int i;
for(i=1;i<5;i++)
{
if(arr[i]>max) /*41>10? ,3>41? , 12>41? , 22>41?*/
{
max=arr[i]; //将数组中较大的数赋值给max, max=41
index = i; //记录当前索引, index=1
}
}
arr[index] = value; /*arr[1]=1,将1赋值给arr[1]*/
}
int main()
{
int arr1[] = {10,41,3,12,22};
int arr2[] = {1,2,3,4,5};
int i;
replaceMax(arr1 ,arr2[0] ); //将数组arr1和数组arr2的第一个元素传入函数中
for(i=0;i<5;i++) /*将数组arr1[i]输出,其中arr[1]被替换,arr[1]=10*/
{
printf("%d ",arr1[i]);
}
return 0;
}
#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]; //将数组中较大的数赋值给max
index = i; //记录当前索引
}
}
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]); //将数组arr1和数组arr2的第一个元素传入函数中
for(i=0;i<5;i++)
{
printf("%d ",arr1[i]);
}
return 0;
}
因为arr1[]中最大值是arr[1] = 41,所以max = arr[1]; 但是最后又将arr2[0] = 1,即是value的值赋给了arr[1]. arr[index] = value; 所以最终输出结果为10 , 1, 3, 12 ,22.相当于将arr1[]数组中的最大数换成了arr2[0],然后再将arr1[]输出。希望能够帮助到你。
C语言入门
926020 学习 · 20793 问题
相似问题