基于visual Studio2013解决C语言竞赛题之1039移动
题目
解决代码及点评
/* 39. 有n个整数,编程序将前面的各个数依次向后移动k个位置, 最后k个数移到最前边的k个位置(见下图,其中n=8,k=3)。 */ #include <stdio.h> #include <stdlib.h> void main() { const int N = 8; int a[N]; int k; printf("input k:"); scanf_s("%d",&k); for (int i = 0; i < N; i++) { a[i] = i + 1; } //前k个数和最后k个数交换 for (int j = 0; j < k; j++) { a[j] ^= a[N - 1 - j]; a[N - 1 - j] ^= a[j]; a[j] ^= a[N - 1 - j]; } //交换后的前k个数位置矫正 for (int n = 0; n < k / 2; n++) { a[n] ^= a[k - 1 - n]; a[k - 1 - n] ^= a[n]; a[n] ^= a[k - 1 - n]; } //交换后后k个元素位置矫正 for (int m = k; m < 2 * k; m++) { int temp = a[N - 1];//存储最后一个元素 //后N - k - 1个元素向后移动 for (int z = N - 2; z > m - 1;z--) { a[z + 1] = a[z]; } a[m] = temp; } for (int i = 0; i < N; i++) { printf("%-3d",a[i]); } printf("\n"); system("pause"); }
代码编译以及运行
由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:
1)新建工程
2)选择工程
3)创建完工程如下图:
4)增加文件,右键点击项目
5)在弹出菜单里做以下选择
6)添加文件
7)拷贝代码与运行
程序运行结果
代码下载
http://download.csdn.net/detail/yincheng01/6681845
解压密码:c.itcast.cn