C++中的for循环,求指导
解决时间 2021-02-05 09:47
- 提问者网友:我们很暧昧
- 2021-02-04 10:01
求解释第二个for循环的意思,不理解为什么for(int j=0;a[j];j++)中的a[j],为什么是a[j]呢?一般的形式不都是for(int i=0;i<某某;i++)嘛,初学者,求详解!
此代码要实现的功能为:输入一组非0整数(以0结束)到一个一位数组中,求出这一数组的平均值,并分别统计正负数的个数。
#include
#include
#include
#include
void main()
{
int a[100],c1=0,c2=0;
float ave,s=0;
for(int i=0;i<100;i++){
cin>>a[i];
if(a[i]==0)break;
}
for(int j=0;a[j];j++){
s+=a[j];
if(a[j]>0)c1+=1;
if(a[j]<0)c2+=1;
}
ave=s/(c1+c2);
cout< cout<}
最佳答案
- 五星知识达人网友:动情书生
- 2021-02-04 10:20
C,C++ for 循环有两种形式
for (e0;e1;e2)s;
for(e0;e1;e2){ss;}
也有人这样写
for(init;condition;inc)statement;
for(init;condition;inc){statements}
三个表达式中:
第一个e0,可以称作: 初始化表达式,初始化某些变量;
第二个e1,可以称作:条件表达式,符合条件执行循环,不符合退出循环。
第三个e2,可以称作:自增表达式,递增表达式,用于推进循环,一便循环能够结束。
至于s 和ss 分别是语句或语句组,称为循环语句,是循环的主要执行对象。
e0,e2 是循环结构的组成部分。
都可以是任何合法的C,C++表达式,也可以为空。
e1 可以是任何可以与0 相比较的表达式。
其中C:
e0,e1,e2
不可以是声明语句(?表达式);
C++: 似乎可以是定义语句(?表达式)(声明同时初始化)
s;ss 也可以为空。s可以是任何的合法C,C++可执行语句 。(C:s不可以是声明语句)
ss 可以是任何的合法C,C++语句的组合 。
和其它语言不同
C的for循环的三个表达式,可以是任意表达式,也可以为空。
e0 为空,表示不需要初始化任何东西。
e1 为空,表示无条件循环,不需要判断任何条件。
e3 为空,表示循环语句或语句组执行后,不需要在执行自增表达式了,直接进入下一轮循环
条件判断。
循环语句或语句组为空,表示只需要执行三个表达式,和条件判断。不需要再额外执行其他语句了。
for(int j=0;a[j];j++)中的a[j] 表示判断a[j] 是否为非0,是执行循环,否结束循环。
C,C++的三个循环语句,都是当型循环,没有直到型循环,都是条件非0执行,为0结束。
PS:
C:除了声明语句和流程控制语句函数定义语句类型第一语句外,其他都是表达式。
预处理语句不是C语言的一部分,是另外一种语言,可以称为预处理语言。
函数调用也是表达式,叫做函数调用表达式;
对于有返回值的函数,函数的返回值就是函数调用表达式的值。
对于C来说一般的语句就是表达式加分号;
分号可以区分表达式是语句还是非语句。
表达式就是C的执行代码;
没有分号的表达式仅仅是个表达式,加了分号的表达式就成了一个语句。
全部回答
- 1楼网友:雪起风沙痕
- 2021-02-04 13:11
for(int j=0;a[j];j++)中的a[j];表示只要a[j]不为0,就继续执行循环体
- 2楼网友:山河有幸埋战骨
- 2021-02-04 12:50
for循环中 第一个分号后面的是一个条件判断 ,比如i<5.如果i=6那么这个表达式的值就是0,i=4,那么4<5这个表达式就是判断成功,这个表达式的值就是1.表示可以执行循环里面的程序。同理。如果a[j]这个值本身就是0,那么也表示这个判断是错误的,所以不执行循环里的程序。所以该程序表示如果a[j]=0 的时候 这个循环就结束了。
- 3楼网友:酒醒三更
- 2021-02-04 12:01
为什么是a[j]呢?一般的形式不都是for(int i=0;i<某某;i++)嘛,初学者,求详解!
这个不一定都是i<某某,只是作为一个判断依据,在c++中,除了0以外都是true。那么只要a[i]不为0,循环就会继续运行,i<某某的目的也只是为了判断是否为0或非0(其实就是true 或者false)
- 4楼网友:笑迎怀羞
- 2021-02-04 10:42
没有差别,编程风格(习惯)不一样
还有你第一个最后忘记加分号了
1、
for(i=0;i<=1;i++)
for(j=0;j<=2;j++);
2、
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++);
}
3、
for(i=0;i<=1;i++)for(j=0;j<=2;j++);
三个都一样。
我要举报
大家都在看
推荐资讯