题目
解决代码及点评
/************************************************************************/
/*
5. 输入N个数到数组中,选出其中最大的数和最小的数,并分别将它们与最前面和最后面的数互换
*/
/************************************************************************/
#include <stdio.h>
#include <stdlib.h>
void swap5(int * arr,int num1,int num2) // 交换两个值
{arr[num1]^=arr[num2]; // 这里用异或来进行交换,可以省略定义中间变量arr[num2]^=arr[num1];arr[num1]^=arr[num2];
}
void printfArr5(int *arr ,int n)
{for (int i=0;i<n;i++){printf("%4d",arr[i]);}printf("\n");
}int FindMax5(int *arr,int n)
{int max=0;for (int i=1;i<n;i++) // 寻找最大值{if (arr[max]<arr[i]) // 如果当前值比最大值还大,那么记录更大的值{max=i;}}return max;
}
int FindMin5(int *arr,int n)
{int min=0;for (int i=1;i<n;i++) // 寻找最小值,简单的定义个变量保存最小值{if (arr[min]>arr[i]) // 如果当前值比最小值还小,那么保存更小的值{min=i;}}return min;
}void main()
{int arr[100]={0};for (int i=0;i<100;i++) // 产生100个随机数{arr[i]=rand()%100;}printfArr5(arr,100);int min=FindMin5(arr,100); // 寻找最小的数int max=FindMax5(arr,100); // 寻找最大的数printf("最大的数:%4d\n",arr[max]);printf("最小的数:%4d\n",arr[min]);swap5(arr,min,99); // 最小数交换到末尾swap5(arr,max,0); // 最大数交换头printfArr5(arr,100);system("pause");
}
代码下载及其运行
代码下载链接:
http://download.csdn.net/detail/yincheng01/6651951
解压密码为c.itcast.cn
下载解压后用VS2013打开工程文件
点击 “本地Windows调试器” 执行
程序运行结果