数组里数据段交换问题
将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 编辑 ]






貌似我没说没错误吧 而且改完了之后结果正确么 我用VC运行了次 结果没有交换啊 还是原样输出 调用交换程序 要怎么写代码 程序中调用没有用啊
..调用函数中的a[j]写成a[i]了 后来才看出来 白费力气了