先说结论 是因为被覆盖了 首先你声明的是char类型的数组 a[0]只能存一个字符 , 想要存更多就要往后继续占用更多的空间 blue 就要占4个 空间.你如果不加循环 输出的话确实是blue 。总共进行了三次赋值 第一次在循环外, 第二次 ,第三次在循环内部 给你个图更好理解
字符串输入不用 & 符,scanf("%s",a);