Excelsior Li 2023-02-23 16:44 采纳率: 93.9%
浏览 25
已结题

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

输入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;
    }
}

  • 写回答

3条回答 默认 最新

  • sleep_i_like 2023-02-23 16:52
    关注
    
    #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;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月3日
  • 已采纳回答 2月23日
  • 修改了问题 2月23日
  • 创建了问题 2月23日

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路