帮我解释下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;

参考技术A 编程语言里 i= 0 的换 用小于 i=1 用 <=追问

外循环 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 输出的是三个数
————
为什么啊
------------

参考技术B 问题不是很清晰啊,想要问什么呢,是for括号里面的那个;j<=right吗,还是什么其他的追问

请看问题补充解答一下,谢谢

追答

这个可能不是循环的问题了,给我一下你解题的思路,我调试一下,看是哪一个步骤出问题了,把题目一起发了吧

追问

我程序的思路就是图中的连线所指啊,当是偶数时,路线如下先右后下→↓

当时奇数时,先上后左↑←

*******************************************

我又看了下,

追答

printf是一个强大的东西,哪儿的数据不对就把那个数据打出来看看,是不是你预期的数据,就像觉得i和j不对就把这两个都打出来,看看打印的和自己预想的一不一样,调试是程序员不可或缺的一项技能,祝安好

本回答被提问者采纳
参考技术C 小于不能取到那个值

以上是关于帮我解释下C语言里for循环的条件表达式中小于和小于等于的区别的主要内容,如果未能解决你的问题,请参考以下文章

C语言for循环详细讲解

c语言用for循环写九九乘法表 我写了一个,能否帮我解释一下每行的含义和为啥这么写

c语言for语句中的条件问题

for 语句执行顺序

for循环执行原理

C语言循环函数用法