这些循环语句感觉看懂了,但是碰到题就不知道怎么下手啊

希望有人给我指点一下,万分感谢,C++的
越详细越好

img

一般知道循环次数时用for
不清楚循环次数时用while
while与do...while的区别在于,do...while无论如何都会执行一次,而while如果条件不满足的话一次都不会执行

for的一般用法
for(变量初始化;循环条件;循环变量操作)
例如,for(i=0;i<10;i++)
这句代码的意思是,初始化变量i等于0,循环条件是i小于10,循环变量i每次循环都自加1,因此,这里的for循环体会循环10次,另外,在循环体内也可以利用i进行遍历等操作,例如

int arr[10];
for(int i=0;i<10;i++){
    arr[i]=i*2;
}
//此时数组arr内的数为0246810......

有些时候我们不知道循环次数的,可以用while,满足什么条件时执行循环,例如

bool end=false;
int i=0;
while(end==false){
    if(i==15) end=true;
    i++;
}

但若是end一开始则为true时,便不会进入循环体,因此,用do...while来写的话,则可以保证最少执行一次

它们大致的区别就这些,接下来说说题目
根据上述对三个循环体的介绍来观察如下代码

#include<iostream>
using namespace std;

int main()
{
    int sum=0,average,max,i;
    int arr[10]={100,95,78,82,99,70,75,78,90,86};
    max=arr[0];
    //for写法
    for(i=0;i<10;i++){
        sum+=arr[i];
        if(max<arr[i]){
            max=arr[i];
        }
    }
    average=sum/10;
    cout << "最高分" <<max<< endl;
    cout << "平均分" <<average<< endl;
    
    //重新初始化
    i=0;
    sum=0;
    average=0;
    max=arr[0];
    //while写法
    while(i<10){
        sum+=arr[i];
        if(max<arr[i])max=arr[i];
        i++;
    }
    average=sum/10;
    cout << "最高分" <<max<< endl;
    cout << "平均分" <<average<< endl;
    
    //重新初始化
    i=0;
    average=0;
    sum=0;
    max=arr[0];
    //do...while写法
    do{
        sum+=arr[i];
        if(max<arr[i])max=arr[i];
        i++;
    }while(i<10);
    average=sum/10;
    cout << "最高分" <<max<< endl;
    cout << "平均分" <<average<< endl;
    return 0;
}

图中圈出来的地方我不太懂啊,为什么要写这些,[]里面的是啥啊

img

这样写可以吗,我想先运行程序,然后再输入十位同学的成绩,
#include
using namespace std;
int main()
{
int sum = 0,average, max, i;
int arr[10];
cin>>arr[10];
max= arr[0];
for (i =0;i < 10; i++)
{
sum+=arr[i];
if(max<arr[i])
{
max = arr[i];
}
}
average = sum/10;
cout <<"最高分"<<max<<endl;
cout <<"平均分"<<average<<endl;
return 0;
}