详细分析c代码?这是华为的一道面试题,谢谢! 5

#include<stdio.h>intmain(){inta[]={9,6,10,5,2,8,4,7,1,3};intlen=sizeof(a)/sizeof(int)... #include<stdio.h>

int main()
{
int a[] = {9,6,10,5,2,8,4,7,1,3};
int len = sizeof(a) / sizeof(int);
int temp;

for (int i = 0;i<len;)
{
temp = a[a[i] - 1];//temp=a[]={}
a[a[i]-1] = a[i];
a[i] = temp;

if( a[i] == i+1)
i++;
}
for (int j = 0;j < len;j++)
printf("a=%d\n",a[j]);
return 0;
}
展开
 我来答
桃无言8
2011-12-15
知道答主
回答量:25
采纳率:0%
帮助的人:27万
展开全部
temp = a[a[i] - 1]; //将tmp 赋予为 位置为第i个数大小的数字(假设为X)
a[a[i]-1] = a[i]; // 将X赋予为 位置为 i的数字(假设为Y)
a[i] = temp; //将Y赋予为 临时保存X的tmp,就是交换X,Y的值,以便后面作判断筛选

if( a[i] == i+1) //如果 Y(位置 为 第i个数大小 的值)等于i+1
i++; //进入下一层

看不明白就把代码修改一下,把输出写进循环里,看每次替换的结果不就一目了然~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
北京磐安云创科技有限公司_
2023-02-01 广告
价格只是购买产品或服务过程中的一项指标,如果单纯只比较价格,其实考虑并不是那么周到。价格、质量、服务、口碑、是否合适自己的情况等都需要一起考虑。以上回答如果还觉得不够详细,可以来咨询下北京磐安公司。北京磐安公司是一家专业从事高新软件的技术公... 点击进入详情页
本回答由北京磐安云创科技有限公司_提供
手译观p
2011-12-11 · TA获得超过1460个赞
知道小有建树答主
回答量:423
采纳率:50%
帮助的人:399万
展开全部
重点在循环部分,目的是把数组a的内容调整为{1,2,3,4,5,6,7,8,9,10},最后再打印出来
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
老邢阿
2011-12-11
知道答主
回答量:3
采纳率:0%
帮助的人:5068
展开全部
我也不太懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式