sickasshole
2021-07-14 10:17
采纳率: 100%
浏览 33

c语言请教吴彦祖们一个问题

img

img

这个第十行写成for(int j=0;j<81;j++)怎么运行结果就会不同?teacher告诉我是编译错误,俺也不是很理解

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • qfl_sdu 2021-07-14 10:35
    已采纳

    因为在每次循环时,没有在gets前把b重置为0,这样就会导致上一次的输入对下一次的输入产生影响。而且b也没有初始化。
    假设第一次输入的字符串是abcdefg,那么b数组中就是abcdefg\0(因为没有初始化,后面是什么就不知道了,可能是英文字母,也可能是别的东西),所以如果用for(j=0;j<81;j++)那么得到的很可能就是多于gets()输入的长度。
    同理,当第二次输入时,如果输入bcd,因为在gets前没有把b中的内容重置为0,所以b中的内容是bcd\0efg(后面的未知),所以如果用for(j=0;j<81;j++),循环的次数仍然大于gets得到的字符串的长度。

    点赞 1 打赏 评论
  • qzjhjxj 2021-07-14 10:23

    for(int j=0;j<81;j++),这个81是哪里得来的?

    点赞 打赏 评论

相关推荐 更多相似问题