数组里数据段交换问题
将a[20]分为3段 P Q R ,交换R和P的位置,P与Q长度自己设置 下面是写的程序 在TC上能运行 在VC上运行时总提示“该内存不能为read” 看网上说是内存有问题,拜托来个好心人帮我运行下 看看程序本身有没有问题程序代码:
#include"stdio.h" #define N 20 main() { void move(a,q,r); int a[N],r,q,i; printf("input %d number:\n",N); for(i = 0;i < N;i++) scanf("%d",&a[i]); for(i = 0;i < N;i++) printf("%d ",a[i]); printf("\ninput the first number's positions of Q&R:\n"); scanf("%d%d",&q,&r); printf("\ndata P is:\n"); for(i = 0;i < q;i++) printf("%d ",a[i]); printf("\ndata Q is:\n"); for(i = q;i < r;i++) printf("%d ",a[i]); printf("\ndata R is:\n"); for(i = r;i < N;i++) printf("%d ",a[i]); printf("\n"); if(!(q > 0 && q < r && r < N)) { printf("wrong\n"); exit(1); } move(a,q,r); /* 在这步就提示该内存不能为read了 是调用的程序有错误还是电脑本身有毛病啊 最近编程序总是提示应用程序错误 怎么回事啊 */ for(i = 0;i < N;i++) printf("%d ",a[i]); } void move(a,q,r) /*设置交换程序 */ int a[],q,r; { int i,j,t[N]; for(j = r;j < N;j++) t[i++] = a[i]; for(j = q;j < r;j++) t[i++] = a[i]; for(j = 0;j < q;j++) t[i++] = a[i]; for(i = 0; i < N; i++) a[i] = t[i]; }
[ 本帖最后由 gaochizhen33 于 2010-11-17 20:29 编辑 ]