int i=0,a[]={3,4,5,4,3}; do{a[i++];{while (a[++i]
来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/06/11 09:42:22
int i=0,a[]={3,4,5,4,3}; do{a[i++];{while (a[++i]
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.
程序并不会出问题, 因为第一次循环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.
int i=0,a[]={3,4,5,4,3}; do{a[i++];{while (a[++i]
main(){int a=1,i=a+1;do{a++;}while(!~i++>3);printf("%d\n",a)
main() {int a=1,i=a+1; do {a++; }while(!i++>3); printf("%d\n
已知int i, a; 执行语句i = (a = 3, a ++, -- a, a + 4, a + 5, ++a);后
main(){int a[3][3]={1,2,3,4,5,6,7,8,9},i=0,sum=0;do{sum+=a[i
已知int i,a;执行语句i=(a=3,a++,- -a,a+4,a+5,++a);后,变量i的值为
#include main { int i=0,a=0; while(i
main() { int a[6]={1,2,3,4,5,6},i,s=0; for(i=1;i
void main() { int i,j,a[10]={2,3,4,5,6,7}; for (i=0;i++
main( ) {int i,a[5]; for(i=0;i2))%5; for(i=4;i>=0;i--) print
int i,a; i=(a=2*4,a+5),a+6;不理解,
int a[3][3]={{1,2,3},{4,5},{6}}; int i,