帮我解释下C语言里for循环的条件表达式中小于和小于等于的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了帮我解释下C语言里for循环的条件表达式中小于和小于等于的区别相关的知识,希望对你有一定的参考价值。
—————————————————————————
_____________________________________________
以下程序是我按照此图中规律写的,小于和小于等于改好了
—————————————————————————
#include<stdio.h>#define row 5 //行数#define col 5 //列数
void main() int a[row][col]; int i,j,m=0,right=row-1; for(i=0;i<row;i++) if(i%2==0) //右下 for(j=0;j<i;j++) m++; a[right-i][j]=m; for(j=right-i;j<=right;j++) m++; a[j][i]=m; else //上左 for(j=right;j>right-i;j--) m++; a[j][i]=m; for(j=i;j>=0;j--) m++; a[right-i][j]=m;
for (i =0;i<row;i++) for (j=0;j<col;j++) //C的标准输入输出库(stdio.h)的格式比较好用 printf("%2d ",a[i][j]); printf("\n");
printf("\n"); for (i =0;i<2;i++) for (j =0;j<i;j++) printf("%2d ",j); printf("\n"); printf("\n");
-----------------------------------------------------
上图是正确输出的图示
-----------------------------------------------------
*******************************************
我又研究了一下,图示中5 6 7里的7应该是
接下来的这个for(j=right-i;j<=right;j++)循环输出的
*******************************************
for(i=0;i<row;i++) if(i%2==0) //右下 for(j=0;j<i;j++) m++; a[right-i][j]=m; for(j=right-i;j<=right;j++) m++; a[j][i]=m;
外循环 i=0
i 从 0 开始
内循环
j 也从 0 开始
当外循环 i=2 时
j=0; j<i 也就是 j<2
这时候输出的是两个数啊
但是程序输出的是 5 6 7 三个数
我也是想要输出三个数
我想的是 j<=i 也就是 j<=2 才输出三个数
但是正确的却是 j<i j<2 输出的是三个数
————
为什么啊
------------
请看问题补充解答一下,谢谢
追答这个可能不是循环的问题了,给我一下你解题的思路,我调试一下,看是哪一个步骤出问题了,把题目一起发了吧
追问我程序的思路就是图中的连线所指啊,当是偶数时,路线如下先右后下→↓
当时奇数时,先上后左↑←
*******************************************
我又看了下,
printf是一个强大的东西,哪儿的数据不对就把那个数据打出来看看,是不是你预期的数据,就像觉得i和j不对就把这两个都打出来,看看打印的和自己预想的一不一样,调试是程序员不可或缺的一项技能,祝安好
本回答被提问者采纳 参考技术C 小于不能取到那个值以上是关于帮我解释下C语言里for循环的条件表达式中小于和小于等于的区别的主要内容,如果未能解决你的问题,请参考以下文章