#include
using namespace std;
void inverse(int *p, int n)
{
int t,*d;
while(p<d)
{
d=p+9;
t=*p;
*p=*d;
*d=t;
p++;
d--;
}
}
int main()
{
int n=10,i,c=0;
int a[n];
for(c=0;c<n;c++)
cin>>a[c];
inverse(a,10);
cout<<"逆序排列的数据为:\n";
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
这个代码为什么不能反序输出数组?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- fortunely2 2021-11-23 10:49关注
不要还没学会走,就想飞。你的inverse函数代码前几行就错了,而且使用了指针没有任何防护(空指针及数据溢出检查)。
while(p<d)
p没有做空指针检查,d没有初始化。后面不看了。对于数组,能用下标指示器(索引),就尽量不要用指针。首尾2个指示器,交换数组元素不好吗?
void inverse(int a[], int n) { if (n < 0) return; for (int i = 0, j = n - 1; i < j; ++i, --j) { // swap a[i] and a[j] int t = a[i]; a[i] = a[j]; a[j] = t; } } int main() { int n = 10; int *a = new int[n](); // 输入数据到数组a // ... inverse(a, n); // 翻转数组a // 输出逆序后数组a // ... delete a; return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 微信会员卡接入微信支付商户号收款
- ¥15 如何获取烟草零售终端数据
- ¥15 数学建模招标中位数问题
- ¥15 phython路径名过长报错 不知道什么问题
- ¥15 深度学习中模型转换该怎么实现
- ¥15 HLs设计手写数字识别程序编译通不过
- ¥15 Stata外部命令安装问题求帮助!
- ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
- ¥15 TYPCE母转母,插入认方向
- ¥15 如何用python向钉钉机器人发送可以放大的图片?