for循环问题,两个代码的区别

问题遇到的现象和发生背景

小明用字母 A对应数字 1,B对应 2,以此类推,用 Z对应 26。对于 27以上的数字,小明用两位或更长位的字符串来对应,例如 AA对应27,AB对应28,AZ对应52,LQ对应329。
请问2019对应的字符串是什么?

问题相关代码,请勿粘贴截图
#include <stdio.h>
int main() {
    
    int i , j , k ;
    for (i=1; i <= 26; i++) {
        for (j=1; j <= 26; j++) {
            for (k=1; k <= 26; k++) {
                int t = i * 26 * 26 + j * 26 + k;
                if ( t== 2019) {
                    printf("%d %d %d", i, j, k);
                    
                    break;
                }
            }
        }
    }
    return 0;
}

img

#include <stdio.h>
int main() {

    int i=1, j=1, k=1;
    for (i; i <= 26; i++) {
        for (j; j <= 26; j++) {
            for (k; k <= 26; k++) {
                int t = i * 26 * 26 + j * 26 + k;
                if (t == 2019) {
                    printf("%d %d %d", i, j, k);
                    break;
                }
            }
        }
    }
    return 0;
}

img

我想要达到的结果

这两个代码区别在哪里?为什么结果不同?

第二个代码中的 int i=1, j=1, k=1;for 循环里面的问题。
第一个代码在 i 为 2时,for (j=1; j <= 26; j++)j 仍是从 1 开始循环;
第二个代码在 i 为 2时,for (j; j <= 26; j++)j 是从 26 开始循环。

区别大了,第一个代码,每次进入i的for循环k都是从1开始的,第二个代码k没有地方重置为1,一直累加;j同理。

在for循环中,第一个代码给for循环赋初值,第二个没有赋初值,所以第二个代码,原本是外部循环每变化一次,内部循环就要从1递增到26,但是第二个代码因为for循环不对(j,k)进行初始化,所以j,k经过一次循环后,j=26,k=26。再次进入j、k的循环,由于不初始化循环条件(即应该令=1,k=1),所以不会第二次进行for循环。有点绕口,不知道你能不能看懂