m0_63492694 2021-10-29 23:02 采纳率: 50%
浏览 47
已结题

题目要求如图,为什么有时候输出正确,有时候输出烫呢?正确的代码该怎么写呢?

img

img

img

  • 写回答

1条回答 默认 最新

  • 关注

    Fun9函数中,j是static int,它的值一直增加。在Fun9(a,s)后再去计算Fun(a,C),Fun9(a,s)中的j会对Fun9(a,s)中的j产生影响。
    所以在Fun(a,C)的时候,j并不是从0开始的,所以相当于C中前面的部分没有赋值。所以会出现烫烫烫
    代码一:(这个函数实现逆序输出数字,比如n=123,输出的s是"321")

    void Funt9(int n,char s[])
    {
        if(n==0)
            *s = 0;
        else
        {
            *s = '0'+ n%10;
            Funt9(n/10,s+1);
        }
    }
    

    代码二:(正序输出,n=123,s输出"123")

    #include <stdio.h>
    
    void Funt9(int n,char s[])
    {
        int i,k;
        static int j = 0;
        char c;
        if(n == 0)
        {
            s[j] = 0;
            //这里实现字符串s的逆序,j是字符串s的长度
            for(i=0,k=j-1;i<k;i++,k--)
            {
                c = s[i];
                s[i] = s[k];
                s[k] = c;
            }
            j = 0; //这里j置0,避免对下一次调用Funt9时产生影响。
        }else
        {
            s[j] = '0'+ n%10;
            j++;
            Funt9(n/10,s);
        }
    }
    int main()
    {
        char s[10],C[10];
        int a = 12345;
        int b =789;
        int j = 0;
        Funt9(a,s); //得到的s是正序输出
        Funt9(b,C);
        printf("%s\n",s);
        printf("%s\n",C);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月7日
  • 已采纳回答 10月30日
  • 创建了问题 10月29日

悬赏问题

  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应