c语言的问题,解释一道函数题

来源:百度知道 编辑:UC知道 时间:2024/09/22 03:55:06
{
int bb[4];
int i,j,k,flag;
for(i=0;i<200;i++)
{
bb[0]=a[i]/1000;
bb[1]=a[i]%1000/100;
bb[2]=a[i]%100/10;
bb[3]=a[i]%10;
for(j=0;j<4;j++)
{
if(bb[j]%2==0)
flag=1;
else
{
flag=0;
break;
}
}
if(flag==1)
{
b[cnt]=a[i];cnt++;
}
}
for(i=0;i<cnt-1;i++)
for(j=i+1;j<cnt;j++)
if(b[i]<b[j])
{
k=b[i];
b[i]=b[j];
b[j]=b[k];
}
}
请给出每一步的详细解释

{
int bb[4];
int i,j,k,flag;
for(i=0;i<200;i++)
{
bb[0]=a[i]/1000; //把a[i]的千位数(或千位以上的数)给bb[0]
bb[1]=a[i]%1000/100;// 把a[i]的百位数给bb[1]
bb[2]=a[i]%100/10; //把a[i]的十位数给bb[2]
bb[3]=a[i]%10; //把a[i]的个位数给bb[3]
for(j=0;j<4;j++)
{
if(bb[j]%2==0)// 如果 个十百千 位里有偶数
flag=1; //做个标记
else
{
flag=0; //有一个不是偶数,判断下一个a[i]
break;
}
}
if(flag==1) // 如果 个十百千 位里都是偶数
{
b[cnt]=a[i];cnt++;//用 b[cnt] 把这个 a[i]存起来
}
}
for(i=0;i<cnt-1;i++)// 冒泡排序法把存起来的a[i](存到b[i]里的)从大到小排序
for(j=i+1;j<cnt;j++)
if(b[i]<b[j])
{
k=b[i];
b[i]=b[j];
b[j]=k;///不是b[k]
}
} //总体来说就是把a[] 中个十百千位都是偶数的保留在b[]中,并按从大到小的顺序排

{
int bb[4]; //定义一个整型数组bb,有4个元素。
int i,j,k,flag; //定义4个整型变量,分别是:i,j,k,flag
for(i=0;i<200;i++) //for循环,从0开始执行,执到i==200退出循环。
{
bb[0]=a[i]/1000; //i等于几,就用a[i]/1000取的值赋给bb[0]
bb[1]=a[i