int i=0,a[]={3,4,5,4,3}; do{a[i++];{while (a[++i]<5); for(i=0;i<5;i++) printf("%d",a[i]);求详细解

 我来答
yuhezcb0755
推荐于2018-05-09 · TA获得超过643个赞
知道小有建树答主
回答量:237
采纳率:0%
帮助的人:116万
展开全部
while前的括号打反了?

程序并不会出问题, 因为第一次循环a[i++];执行后, i = 1; while条件中先++i, 导致i = 2, 而a[2] < 5 条件是不成立的, 直接跳出了do {} while循环. 执行for循环遍历打印a数组.

这里如果a[] = {2,3,4,5,4,3}就出问题了, 正好把a[3]=5跳过去了, 会再次进入循环, 结果是数组越界了. 结果就不一定了, 越界后如果那段内存不可读, 程序就崩溃了, 如果可读读则读到一个随机值, 正好是大于5的, 也就碰巧出循环了.

a[i]++ ?
那分析是这样:
第一次: a[i]++; 此时a[0] = 4; i = 0;
while (a[++i] < 5); 此时i = 1, 判断的是a[1] < 5, 条件成立
第二次:a[i]++; 此时a[1] = 5; i = 1;
while (a[++i] < 5); 此时i = 2; 判断的是a[2] < 5, 条件不成立, 跳出循环.

数据变成45543, 我已运行确认是这结果, 跟你的结果不一样, 看看是不是哪里还输入错了.
追问
哦哦  答案是45543没错 额 跳出循环之后怎么是输出5543啊咳咳 初学者 不太懂啊求详细的后面是如何执行的
追答
跳出循环后, 只有数组下标0和下标1加了1, a[0] 从3变成4, a[1]从4变成5,  第三次条件不成立了, 所以a[2] = 5, a[3] = 4, a[4] = 3都没有变, 结果自然就是45543了

后面的for循环是就是遍历整个数组,从下标0打印到下标4.
散盘打坐有效果吗
2013-06-04 · TA获得超过337个赞
知道小有建树答主
回答量:191
采纳率:0%
帮助的人:95.6万
展开全部
int i=0,a[]={3,4,5,4,3};//数据的定义并初始化
do {
a[i++];

} while(a[++i] < 5) //执行一步a[i++],然后判断a[++i] 是否大于5,大于5则执行下面的语句,否则,继续循环;唯一要区别的是 i++,是先把i用了在把i+1;++i是先把i+1,再使用i;
//do {}while()是先执行循环体后,后进行条件检查,而while(){}是先检查条件后执行;
for(i=0;i<5;i++)
printf("%d",a[i]);
//就是从数组第一个位置(或者说成0号位置)开始顺序打印出这个5个元素,打印的格式是 整形10进制
追问
a[i++]弄错了是a[i]++啊  答案输出是 45535...当i=1的时候 while语句里 就变成了a[2]==5<5.然后怎么执行的啊?求解释
追答
那我就不用回答了 呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9c38907
2013-06-04 · TA获得超过421个赞
知道小有建树答主
回答量:350
采纳率:0%
帮助的人:361万
展开全部
#include<stdio.h>
int main()
{
    int i=0,a[]={3,4,5,4,3};
    do            //do..while();循环,先执行一次循环体
    {
        a[i++];   //a[i++]; 第一次相当于 3; 所以什么都不做,反正不管怎么循环始终都没做任何事
    }
    while (a[++i]<5);   //第一次来判断 4<5成立了,继续循环 第二次。。以下省略
    for(i=0;i<5;i++)    //循环5次
        printf("%d\n",a[i]);    //输出a[i]的值,也就是把a[]中的所有值都输出一遍了
    return 0;
}

希望能帮助你,望采纳。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-06-04
展开全部
当中那个花括号什么啊,这不就是把这个数组输出吗,do a[i++];while (a[++i]<5);这个循环没有意义吧
追问
打错了 晕死  是  do a[i]++ 其他不变  求解释
追答
有前置运算符++i ,所以当a[1]<5时 a[0]+1=4;因为a[2]=5,所以当a[2]<5是条件不成立,所以数组变成了 4,4,5,4,3 ,while(a[++i]<5) 判断的是大于等于5是跳出循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式