遍历字符串)想知道每一步在干什么

输入ABCDE,输出CBDAE


#include<stdio.h>
int f(char a[])
{
    if(*a=='\0')
    return 0;
    else
    return 1+f(a+1);
}
main()
{
    char a[100];
    int 1,k;
    gets(a);
    i=f(a)/2;
    k=0;
    while(1)
    {
        if(a[i+k]=='\0')
        break;
        putchar(a[i+k]);
        if(k>=0)
        k=-k-1;
        else
        k=-k;
    }
}


#include<stdio.h>
// 定义函数f,用于计算字符串a的长度
int f(char a[])
{
    // 如果字符串a的首字符为空,则返回0
    if(*a=='\0')
    return 0;
    // 否则,返回1+f(a+1),即字符串a的长度
    else
    return 1+f(a+1);
}
// 主函数
main()
{
    // 定义字符串a,长度为100
    char a[100];
    // 定义变量i和k
    int i,k;
    // 使用gets函数获取用户输入的字符串a
    gets(a);
    // 计算字符串a的长度,并将其赋值给变量i
    i=f(a)/2;
    // 将变量k初始化为0
    k=0;
    // 使用while循环,当字符串a的第i+k个字符为空时,跳出循环
    while(1)
    {
        if(a[i+k]=='\0')
        break;
        // 使用putchar函数输出字符串a的第i+k个字符
        putchar(a[i+k]);
        // 如果变量k大于等于0,则将变量k赋值为-k-1
        if(k>=0)
        k=-k-1;
        // 否则,将变量k赋值为-k
        else
        k=-k;
    }
}

函数f是统计字符串中有效字符的个数。
然后main中先得到输入的字符串a,然后以中间字符位置i为标准,
遍历它前面的字符与后面的字符,这样完成遍历a所有字符。