/* 功能:将一个一维数组中的偶数依次交换。例如有8个元素, 若其中第1、4、5三元素是偶数时应按下图交换。 例子: a[]={2,3,1,6,8,7,9,5} change to {8, 3, 1, 2, 6, 7, 9, 5} 日期:17:04 2013/10/24 */ #include<stdio.h> #include<stdlib.h> #include<time.h> #define N 10 int *getFirst(int a[],int n); int *getLast(int a[],int n); void main() { int a[N]; time_t t; srand((unsigned)time(&t)); //随机函数发生器 for (int i = 0; i < N; i++) //随机赋值并打印 { a[i] = rand() % 90 + 10; printf("%-3d",a[i]); } int *pLast = getLast(a, N); //将最后一个偶数的地址赋给plast int lastValue = *pLast; int *pFirst = getFirst(a,N); //将第一个偶数的地址赋给pfirst //从后最后一个偶数开始往前轮循,到第一个偶数为止 for (int *p = pLast - 1; p >= pFirst; p--) { if (*p % 2 == 0) { *pLast = *p; //将当前偶是赋给下一个偶数 pLast = p; //将当前偶数赋给标识变量pLast } } *pFirst = lastValue; //将最后一个偶数赋给第一个偶数的地址 printf("\n\n\n"); for (int i = 0; i < N; i++) //随机赋值并打印 { printf("%-3d", a[i]); } system("pause"); } int *getFirst(int a[], int n) { int *pFirst = NULL; for (int *p = a; p < a + N; p++) //数组中最后一个偶数的地址赋给pLast; { if (*p % 2 == 0) { pFirst = p; break; } } return pFirst; } int *getLast(int a[], int n) { int *pLast = NULL; for (int *p = a + n - 1; p >= a; p--) //数组中最后一个偶数的地址赋给pLast; { if (*p % 2 == 0) { pLast = p; break; } } return pLast; }
由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:
1)新建工程
2)选择工程
3)创建完工程如下图:
4)增加文件,右键点击项目
5)在弹出菜单里做以下选择
6)添加文件
7)拷贝代码与运行
http://download.csdn.net/detail/yincheng01/6681845
解压密码:c.itcast.cn