求哪位给个文字说明的思路

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>

void jm() {
printf("\n");
printf(" **************\n");
printf(" 开始猜单词游戏\n");
printf(" **************\n");
printf(" 1.开始 2.退出\n");

}

void change(char a[100],char b[100]) {
int d, f;
char t;
for (int i = 0;i < strlen(a);i++) {
d = rand() % (strlen(a));
f = rand() % (strlen(a));
t = a[f];
a[f] = a[d];
a[d] = t;
}
}

int jg(int pd) {
int score=0;
if (pd == 0) {
printf("right\n");
score++;
printf("目前得分:%d\n", score);
}
if (pd != 0) {
printf("wrong\n");
score--;
printf("目前得分:%d\n", score);
}
return score;
}

int main()
{
int x,n;
int score ;
FILE *fp = NULL;
char a[100], b[100], c[100];

fp = fopen("C:\\Users\\噢噢噢\\Desktop\\word.txt", "r");
if (fp == NULL) {
    printf("open error\n");
    return -1;
}

jm();

scanf("%d", &x);
if (x == 1) {
    Sleep(200);
    system("CLS");
    for (int i = 0;i <= 50;i++) {
        printf(" ");
        printf("  %d", 2 * i);
        printf("\b\b");
        Sleep(50);
    }
    printf("请输入你想猜多少单词:");
    scanf("%d", &n);
     
        while (fgets(a, 30, fp)&&n>0) {

            int pd = 0;
            a[strlen(a) - 1] = '\0';
            strcpy(b, a);

            change(a, b);

            printf("请猜下这个单词原型:%s\n", a);
            
            scanf("%s", c);

            pd = strcmp(b, c);

            score=jg(pd);
            n--;
        }

        printf("最终得分为:%d", score);
        fclose(fp);
    }
     
else if (x == 0)
    return 0;

void change(char a[100],char b[100])
这是随机交换数组中任意两个字母的位置的函数,但函数比较扯淡,b数组根本就没用上
int jg(int pd)
这个是裁判函数,jg的意思是结果,如果pd为0,则猜对了,加1分,否则不加分,给出相应提示
void jm()是显示菜单函数,jm是啥中文词的首字母?
main里面比较好玩,好像词库文件有无穷的单词,随便你要玩多少单词都有
第一个循环不知道要干啥,感觉像玩进度条
后面循环就是根据你选择玩多少单词,从文件里去取,取出来后用change打乱,然后让你猜出单词,你输入的结果会用strcmp字符串比较函数进行比较,将比较结果有jg函数进行处理,单词玩玩后就结束了