御坂19090 发表于 2022-11-19 18:32:31

这个问题在哪里呀?

这个程序这2个//去掉任何一个都会出错错误提示是这样。
想不出哪里错了。

桃花飞舞 发表于 2022-11-19 18:32:32

这个程序这2个//去掉任何一个都会出错错误提示是这样。
想不出哪里错了
帮把代码稍微改了一下.是可以正常运行了。

#include<stdio.h>

int main()
{
        int i,a,b = 0, j;
        char *p, in = {0}, s = {0};
        _Bool h = 0;

        p = in;                                          //把指针指向数组的首元素的首地址,以便后面使用

        printf("请输入一个整数: ");
        scanf("%d",&i);

        if(i < 0)
        {
                i = -i;
                h =1;
        }

        for(j = 10; ; j*=10)
        {
                a = i %j;                                 //把数字i的第 j/10位取出来
                *p++ = a/(j / 10) + '0';             //是把变量a中的数字转换为字符形式存储到in的数组中,前面用p指向了数组a的首元素的首地址
                i -= a;                                    //改变变量i的值,减掉j/10位的值
                b++;                                        //这里把b做累加统计字符个数

                if(i == 0)
                {
                        a = 0;
                        if(h)
                        {
                                s = '-';
                        }

                        p--;                                                //现在*p 的值为0或者控制符,移动指针p使他指向前一个已知字符,

                        while (b > 0)
                        {
                                s = *p--;                //移动指针p把数组in里存储的字符赋给数组s
                                b--;                              //数组in里面字符个数减一
                        }
                        s = '\0';
                        break;
                }
        }
       
        return 0;
}
程序这2个// 和i -= a;其实就是在把数值的每一位给提取并转换为字符
如果看不懂,就把指针和数组搞明白了,再来看这个,

御坂19090 发表于 2022-11-19 18:33:35

代码是这样的这2个//去掉任何一个都会出错这个错误提示,为什么呀

jackz007 发表于 2022-11-19 19:08:44

本帖最后由 jackz007 于 2022-11-19 19:10 编辑

      你这个程序什么功能?
      你希望别人完整地敲一遍你的代码?????
      要求助就必须贴代码文本!!!

jhq999 发表于 2022-11-19 19:19:46

如果去掉a=i%j;,没赋初值的a可以是任意值,下面凡是涉及a的运算后的值也是任意值
页: [1]
查看完整版本: 这个问题在哪里呀?