永发信息网

C语言 int as(int a[],int n) 错在哪里

答案:4  悬赏:20  手机版
解决时间 2021-04-11 01:02

int as(int a[],int n)
{
int *b[n],*s,i,j,k=n;
while(k>=0) {b[k]=&a[i];k--;}
for(i=0;i<n;i++)
for(j=0;j<n-i;j++)
if(*b[j]>*b[j+1])
{ s=b[j];b[j]=b[j+1];b[j+1]=s;}

return b;
}

最佳答案

你的意图是传递一个数组, 然后再将用一个指针数组来存入该数组每个元素的地址, 通过指针交换来交换数组元素, 然后返回这个指针数组, 如果是这样的话, 就指出以下错误, 1: while(k >= 0) { b[k] = &a[i]; k--}其中K初始为n你不知道数组越界了吗? 其二, 你里面的i初始化了吗? i 里面是垃圾值, 改为 k = n - 1; i = n - 1;


while(k >= 0) b[k--] = &a[--i]; 2: 下面是冒泡排序不? 有误,


for(i = 0; i < n; ++i)



for(j = 0; j < n - i; ++j)



if(*b[j] > *b[j+ 1]) 也不检查一下, i = 0; j < n; if(*b[j] > *b[j + 1]) .... j + 1 越界了,



应该如下写


for(i = 0; i < n; ++i)



for(j = 0; j < n - i - 1; ++j)


if(....) .............


or


for(i = 1; i < n; ++i)



for(j = 0; j < n - i;)



or



for(i = n; i > 0; ++i)



for(j = 0; j < n - 1 ; ++j)


;



for(i = n; i >0; ++i)



for(j = 1; j < n; ++j)



if(*b[j - 1] > *b[j])



总之不能越界,



最后你要返回一个指针数组是不可能的, 因为它是局部变量, 生存期只在这个函数内, 返回值也不正确, 返因指针数组名应用用指向指针的指针,


全部回答
我看出两点:一,int*b[n]数组大小应该是常量,n是变量!二,函数反回值是整型,你反回的b是地址常量!

a[20478]

你定义的函数类型是int 却返回一个数组 肯定不行的

你的是冒泡排序 可以这样写

void as(int *p) { int i,j,k; for(i=1;i<=9;i++) for(j=0;j<10-i;j++) if(*(p+j+1)<*(p+j)) { k=*(p+j+1); *(p+j+1)=*(p+j); *(p+j)=k; } }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
和女朋友聊什么好?
我自己很喜欢上网怎么样才能戒掉
福万通二手车行在什么地方啊,我要过去处理事
如何将一个梯形平均分成两份
5530拍照清吗?
夏天不宜喝黄酒吗?
Lets go swimming, Millie.Sorry, I have ho
济宁社会保险查询网址
Snow0drop什么意思
QQ幻想达到10以后怎么转职?
关于变压器试验中阻抗电压跟负载损耗的问题!
股票的放量是什么意思,股市缩量放量是什么意
Intel 酷睿2四核 Q8300和I3 2320哪个好?
恩施大峡谷5号停车场地址在哪,我要去那里办
中考信号屏蔽器怎么破解
推荐资讯
班级的文明标语有哪些
独立与抱团读后感
在蒸馒头、做面包和酿酒的过程中用到的微生物
杰伦中国网:www.jayzg.com的QQ群是多少啊
石鼻沟在什么地方啊,我要过去处理事情
我想问问完美国际里的55-70新FB多少经验?
房价英语怎么说,求求求日语大神帮翻译辩论词
多选题下列事例哪些应用了光的全反射现象:A.
舟山嵊泗洪家山庄(渔家乐)地址有知道的么?有
单选题有关区域发展的叙述,正确的是A.区域发
2009年中国大城市排名?
急求:关于气候变暖的英语演讲题材
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?