int i{1}; for (int i=1; i <= 6; i++) { cout << "i="<<i&
- int i,x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i+
- 循环中的++i和i++
- main(){int i,b,k=0;for(i=1;i<=5;i++){b=i%2;while(b-->=0) k++;
- #include<stdio.h> main() { int i,sum=0; for(i=1;i<=3;sum++,i++) sum+=i; printf("%d\n",sum); }求解释
int i,x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i+
首先,a是一个3*3的二维数组;
然后我们看下代码,稍微调整一下:得到如下的格式:
for(i=0;i<3;i++)
printf("%d",a[2-i][i]);
也就是在for循环中,输出数组的一个变量,具体是哪个值呢?我们继续看;
for循环中,i从0开始直到i=2循环结束,每次循环取的值为数组中的第(2-i)行,第i列的值。因此,依次取的值为a[2][0], a[1][1], a[0][2]。因此,这段程序输出的就是一个次对角线上的数据。
a[2-i][i]表示的是二维数组中的第(2-i)行,第i列的值。
循环中的++i和i++
在这个循环里我感觉没有不同,比如看这两个子程序运行结果是一样的:1、#include<stdio.h>
void main()
{ int i;
for(i=1;i<=100;++i)
{printf("%d,",i);
if(i%10==0)
printf("\n");}
}
2#include<stdio.h>
void main()
{ int i;
for(i=1;i<=100;++i)
{printf("%d,",i);
if(i%10==0)
printf("\n");}
}
运行结果都是输出从一到一百。
但如果i++和++i在别的地方可能是有区别的
main(){int i,b,k=0;for(i=1;i<=5;i++){b=i%2;while(b-->=0) k++;
是2012年的问题了 想必楼主已经知道了答案
看了上面的答案解释的不是很清晰,我这里放一个清晰版的 以便以后的筒子们看
当最后一行加上输出语句时printf("%d,%d",k,b);
输出结果为 k=8,b=-2
现在 我们来模拟一下 for循环中 当i=5时的运行情况
——————第一次
i=5;
b=5%2;(此时b=1)
while(b-->=0)k++;("--"为先判断再自减,b=1>=0执行k++,b再自减b=0,k=6+1=7)
——————第二次
while(b-->=0)k++;("--"为先判断再自减,b=0>=0执行k++,b再自减b=-1,k=7+1=8)
——————第三次
while(b-->=0)k++;("--"为先判断再自减,b=-1>=0不成立 不执行k++,但是已经进行了“b-->=0”这一步的判断 所以依旧执行b--操作 此时 b再自减b=-2)
#include<stdio.h> main() { int i,sum=0; for(i=1;i<=3;sum++,i++) sum+=i; printf("%d\n",sum); }求解释
陷阱题,for循环中的sum++而不是i++导致死循环