首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

水能帮个忙!多谢

2012-02-09 
水能帮个忙!谢谢不知错在哪里,希望指点指点(我是初学者)谢谢!(用Dev-C++编译无错,但不能得到真确结果)倒转

水能帮个忙!谢谢
不知错在哪里,希望指点指点(我是初学者)
谢谢!
(用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);
[解决办法]
细看还有不少的错误,楼主对照看看吧。

C/C++ code
#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;    }}
[解决办法]
C/C++ code
#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;    }    } 

热点排行