水能帮个忙!谢谢
不知错在哪里,希望指点指点(我是初学者)
谢谢!
(用Dev-C++编译无错,但不能得到真确结果)
倒转数组
#include<stdio.h>
#include<cstdlib>
main()
{
void invert(int*p,int n);
int i,m;
printf("please input the length of the arrary");
scanf("i=%d",&i);
int array[i];
for (m=0;m<=i;m++)
scanf("%d",&array[m]);
invert(array,i);
printf("the inverted arrary is:");
for(m=0;m<=i;m++)
printf("%d",array[m]);
system("pause");
return 0;
}
void invert(int*p,int n)
{
int *k;
int temp,j=n-1;
k=p+n/2;
for(;p<=k;p++,j-=2)
{
temp=*p;*p=*(k+j);*(k+j)=temp;
}
}
[解决办法]
数组越界了
[解决办法]
scanf("i=%d",&i);
int array[i];
这样能定义数组?
数组大小必须为整型常量.
[解决办法]
int array[i];
-->
int *array = (int *)malloc(i * sizeof(int));
用完了之后记得释放:
free(array);
[解决办法]
细看还有不少的错误,楼主对照看看吧。
#include<stdio.h>#include<stdlib.h>int main(){ void invert(int*p,int n); int i; int m; printf("please input the length of the arrary"); /*scanf("i=%d",&i);*/ scanf("%d", &i); /*int array[i];*/ int *array = (int *)malloc(i * sizeof(int)); /*for (m=0;m<=i;m++)*/ for (m=0;m<i;m++) scanf("%d",&array[m]); invert(array,i); printf("the inverted arrary is:"); /*for(m=0;m<=i;m++)*/ for(m=0;m<i;m++) printf("%d ",array[m]); free(array); system("pause"); return 0;}void invert(int*p,int n){ int *k, *d = p; int temp,j=n-1; k=p+n/2; for(;p<k;p++,j--) { temp=*p; *p=*(d+j); *(d+j)=temp; }}
[解决办法]
#include<stdio.h>#include<cstdlib>void invert(int*p,int n);int main(){ int i,m; printf("please input the length of the arrary:"); scanf("%d",&i); int *array=(int *)malloc((i+1)*sizeof(int)); //for (m=0;m<=i;m++) 越界了 for(m=0; m<i; m++){ scanf("%d",&array[m]); } invert(array,i); printf("the inverted arrary is:"); //for(m=0;m<=i;m++) for(m=0; m<i; m++){ printf("%d",*(array+m)); } free(array); system("pause"); return 0;}void invert(int*p,int n){ int *k, *d = p; int temp,j=n-1; k=p+n/2; for(;p<k;p++,j--) { temp=*p; *p=*(d+j); *(d+j)=temp; } }