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

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

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 请问有会的吗,用MATLAB做
  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 ARIMA模型时间序列预测用pathon解决
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序,怎么查看客户esp32板子上程序及烧录地址
  • ¥50 html2canvas超出滚动条不显示