sswy 发表于 2018-7-9 17:06:54

学C带你飞39课后题2绝逼是错误的请老师更正

不能加20个9

人造人 发表于 2018-7-9 17:48:33

举例说明,还有截图

ba21 发表于 2018-7-9 18:59:04

如果我没有记错的话,带你飞C的39课2题答案真的正确吗? 是你发表的吧;还没有结贴啊?

说回这里result = (char *)malloc(INIT_SIZE);
#define INCREMENT 10
#define INIT_SIZE INCREMENT

你总共分配了10这么个大小来存和,凭什么能加20个9?





最后麻烦记得结贴。。。

sswy 发表于 2018-7-9 19:35:39

人造人 发表于 2018-7-9 17:48
举例说明,还有截图

谢谢

sswy 发表于 2018-7-9 19:36:19

ba21 发表于 2018-7-9 18:59
如果我没有记错的话,带你飞C的39课2题答案真的正确吗? 是你发表的吧;还没有结贴啊?

说回这里resul ...

谢谢谢谢谢谢

sswy 发表于 2018-7-9 19:49:39

ba21 发表于 2018-7-9 18:59
如果我没有记错的话,带你飞C的39课2题答案真的正确吗? 是你发表的吧;还没有结贴啊?

说回这里resul ...

老师你没看见realloc重新分配吗?所以不用一开始改1000

ba21 发表于 2018-7-9 20:02:40

sswy 发表于 2018-7-9 19:49
老师你没看见realloc重新分配吗?所以不用一开始改1000

到底你还是没有专心学。
用心看,用心学吧。别这么粗心。
最主要的一点是自己不专心又乱指错误;这不给人家笑话。

// 将两个字符串对应的数值相加
char *add_two_strs(char *str1, char *str2)
{
      int carry = 0; // 存放进位
      int num1, num2, num3;
      char *result;

      result = (char *)malloc(INIT_SIZE); // 你不改INCREMENT 你觉得这里能分多大的内存来存放相加后的内容
      if (result == NULL)
      {
                exit(1);
      }
                memset(result, 0, INIT_SIZE);

sswy 发表于 2018-7-9 20:15:29

ba21 发表于 2018-7-9 20:02
到底你还是没有专心学。
用心看,用心学吧。别这么粗心。
最主要的一点是自己不专心又乱指错误;这不给 ...

char *append_result(char *result, char ch)
{
       char *last = result;
      int limit = 0;
      int times = 1;

      // 定位到字符串的末尾
      while (last != '\0')
      {
                if (limit >= INCREMENT)
                {
                        limit = 0;
                        times++;
                        last += INCREMENT;
                }
      }

      last = ch;
      if (limit >= INCREMENT)
      {
            result = (char *)realloc(result, INIT_SIZE + INCREMENT * times);//这里是把result在INIT_SIZE基础上从新分配了内存的
                last += INCREMENT;
      }
      last = '\0';

      return result;
}


老师,首先我比任何都认真学,也请老师认真点看清楚后面的代码,内存是重新用realloce分配了的,懂吗老师?

还有老师我不怕人笑话,因为我要搞懂一个问题,笑话我下有什么,将来不懂才最可笑

sswy 发表于 2018-7-9 20:17:07

ba21 发表于 2018-7-9 20:02
到底你还是没有专心学。
用心看,用心学吧。别这么粗心。
最主要的一点是自己不专心又乱指错误;这不给 ...

num3 = num1 + num2 + carry;
                if (num3 > 9)
                {
                      append_result(result, num3 - 10 + '0');
                        carry = 1;
                }
                else
                {
                        append_result(result, num3 + '0');
                        carry = 0;
                }


认真点看老师,进入append_result之后result大于10会用realloc重新分配,懂吗老师?

人造人 发表于 2018-7-9 20:20:15

sswy 发表于 2018-7-9 20:17
num3 = num1 + num2 + carry;
                if (num3 > 9)
                {


你是正确的

人造人 发表于 2018-7-9 20:21:08

ba21 发表于 2018-7-9 20:02
到底你还是没有专心学。
用心看,用心学吧。别这么粗心。
最主要的一点是自己不专心又乱指错误;这不给 ...

这个如何解释?


人造人 发表于 2018-7-9 20:22:45

第一张看不清,换一张

人造人 发表于 2018-7-9 20:24:46

看gif吧,这一张也很模糊,这不是我的问题

这是2.png

sswy 发表于 2018-7-9 20:32:35

人造人 发表于 2018-7-9 20:20
你是正确的

老师我说的对吗?而且他什么态度,我本来就是做CG的,他居然说我不认真学习,我每天除了睡觉就是练习,这个和我10年前做角色动画一样,我当时非常菜大家都在嘲笑我,但是我现在是业内顶尖高手,就凭一股认真二字,我不怕人家笑我,我不怕真的!

人造人 发表于 2018-7-9 20:39:50

sswy 发表于 2018-7-9 20:32
老师我说的对吗?而且他什么态度,我本来就是做CG的,他居然说我不认真学习,我每天除了睡觉就是练习,这 ...

^_^
你是正确的
的确是小甲鱼老师的代码有问题
@小甲鱼

人造人 发表于 2018-7-9 20:41:49

sswy 发表于 2018-7-9 20:32
老师我说的对吗?而且他什么态度,我本来就是做CG的,他居然说我不认真学习,我每天除了睡觉就是练习,这 ...

你的确很认真,我之前学这部分时就没有发现这个
我不记得之前是怎么回事了,但是就是没有发现这个问题
^_^

sswy 发表于 2018-7-9 20:58:29

人造人 发表于 2018-7-9 20:41
你的确很认真,我之前学这部分时就没有发现这个
我不记得之前是怎么回事了,但是就是没有发现这个问题
...

谢谢老师,记得您一直回复我的问题,谢谢您,感谢

sswy 发表于 2018-7-9 20:59:06

人造人 发表于 2018-7-9 20:41
你的确很认真,我之前学这部分时就没有发现这个
我不记得之前是怎么回事了,但是就是没有发现这个问题
...

还送给我了单片机的书,再次感谢,学生一直记得

sswy 发表于 2018-7-9 21:01:23

ba21 发表于 2018-7-9 20:02
到底你还是没有专心学。
用心看,用心学吧。别这么粗心。
最主要的一点是自己不专心又乱指错误;这不给 ...

老师,敢讽刺我,就敢出来道个歉嘛,希望以后你能多帮助我

ba21 发表于 2018-7-9 23:31:10

sswy 发表于 2018-7-9 21:01
老师,敢讽刺我,就敢出来道个歉嘛,希望以后你能多帮助我

怎么敢讽刺你,给你指正你当讽刺,这老师我当不起。

然后 你指出的这里,我看了一眼,我猜 的没错的话,这是有进位的时候要求增大内存。
   num3 = num1 + num2 + carry;
                if (num3 > 9)
                {
                        append_result(result, num3 - 10 + '0');
                        carry = 1;
                }
                else
                {
                        append_result(result, num3 + '0');
                        carry = 0;
                }

再者 你是你提问的,我是来给你答的,没有讽刺你的意思。你要是觉得我说得不好,你可接回复不用我答即可。话说回来你学得好不好跟我有半毛钱关系{:10_278:},给你讲起我好像回复你占了你什么便宜一样。


还有一点,你觉得甲鱼老师的代码有问题,我们答的不好,你可以直接呼他交流。
页: [1] 2
查看完整版本: 学C带你飞39课后题2绝逼是错误的请老师更正