-
我也遇见了这个问题 之后我请教了一个大佬 先说问题 是在右移时 过大会导致超出ASCII最大值127 a[i]=a[i]+n 中 a[i]会编程乱码 而此时在if里比较的话 乱码没有与之对应的ASCII 就会打印出来乱码 eg z 6或比6大都会让z的移动打印出乱码 更深的原理就是 ASCII127 变-128 问题了 这个不太好说
先说问题点,题目说少于80个字符,应该是包含80个字符,那么算上换行,你数组长度应该是81,否则可能溢出
-=-=-=
代码很多地方可以优化
第一个for,既然循环次数不可预测,就别用for
用while(1)scanf("%c",&a[i++]);即可
可以在循环结束后写m=i-1,不要i每变一次都赋值给m,而且已经知道了最后一个里面存的是换行符,那么循环的时候不要带它
已经执行了n=n%26,可以保证n是正数,后面小于的判断完全是多余的,根本不可能越减越小
最后的if(a[i]!='\n')也是无效判断,已经用m限定了只打印有效字符,根本不可能出现\n