代码解释,对每一行的代码进行解释

#include<stdio.h>int main(){ int a, b, c, d; int m[5]; int i = 1; int k; for (a = 100; a < 999; a++) { b = a % 10; c = (a / 10) % 10; d = (a / 100) % 10; if (a == (b * b * b + c * c * c + d * d * d)) { m[i] = a; i++; } } scanf_s("%d", &k); printf("%d", m[k]); return 0;}


#include<stdio.h>
int main()
{
     int a, b, c, d; int m[5];
     int i = 1;
     int k; 
     for (a = 100; a < 999; a++) //从100-900中循环,把满足if条件的数字保存到数组m中。
     {
         b = a % 10;  //获取个位数,保存变量b中。
         c = (a / 10) % 10;  //获取十位数,保存再变量c中。
         d = (a / 100) % 10;  //获取百位数,保存再变量d中。
         if (a == (b * b * b + c * c * c + d * d * d)) 
         { 
             m[i] = a; //满足if调整的a保存再数组m中。
             i++;
         }
     } 
     scanf_s("%d", &k);  //k是获取数组m的下标值,注意不要超过4,因为m数组大小为5。
     printf("%d", m[k]);  //输出m数组中下标号k的值。
     return 0;
}