水能帮个忙!谢谢

LnLover 2010-05-01 09:09:04
不知错在哪里,希望指点指点(我是初学者)
谢谢!
(用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;
}
}
...全文
87 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wensefu 2010-05-02
  • 打赏
  • 举报
回复

#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;
}

}
LnLover 2010-05-02
  • 打赏
  • 举报
回复
Thank you all!
feiyu218 2010-05-01
  • 打赏
  • 举报
回复
过来学习
jldream110 2010-05-01
  • 打赏
  • 举报
回复
路过学习
flyyyri 2010-05-01
  • 打赏
  • 举报
回复
ding le
wibnmo 2010-05-01
  • 打赏
  • 举报
回复
指针有风险,编程须谨慎。。
huanmie_09 2010-05-01
  • 打赏
  • 举报
回复
细看还有不少的错误,楼主对照看看吧。

#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;
}
}
huanmie_09 2010-05-01
  • 打赏
  • 举报
回复
int array[i];
-->
int *array = (int *)malloc(i * sizeof(int));

用完了之后记得释放:
free(array);
huanmie_09 2010-05-01
  • 打赏
  • 举报
回复
scanf("i=%d",&i);
int array[i];
这样能定义数组?
数组大小必须为整型常量.
supergerm 2010-05-01
  • 打赏
  • 举报
回复
数组越界了

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧