HLYYBF 2021-09-16 00:43 采纳率: 92.9%
浏览 33
已结题

程序不知道哪错了,能纠正一下吗

#include<stdio.h>
int main()
{
char a[26];
int i;
for(i=0;i<=25;i++)
scanf("%c",&a[i]); // 输入字符
for(i=0;i<=25;i++)
printf("%5c",a[i]);//输出原字符
for(i=0;i<=25;i++)
if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))
a[i]=a[i]+25-2i;//将第i个字母变为第26-i+1个字母
for(i=0;i<=25;i++)
printf("%c",a[i]);//输出改变后的字符串
return 0;

}

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2021-09-16 07:05
    关注

    a[i]=a[i]+25-2i;//将第i个字母变为第26-i+1个字母
    首先,2i这种写法是不可以的,改为a[i] = a[i] + 25-2*i;
    其次,这行代码不能实现你注释的目标,你是在数组中找替代品,不是把元素的值进行加减
    而且你的注释也是有逻辑问题的,如果i为0,那么第0个要变为第27个?这部越界了么,应该是第26-i-1个吧
    a[i] = a[26-i-1];
    //
    以上回复希望对你有所帮助

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月24日
  • 已采纳回答 9月16日
  • 创建了问题 9月16日