对部分字符的处理,从键盘上连续输入5个字符,将其中出现的小写字母,做加密转换处理,加密选择是用该字母后面的第三个字母替换

#include
int main()
{
char a[5]={0};/一串5个字符的字符串/
int i;/a[i]的下标/
for(i=0;i<5;i++)
scanf("%c",&a[i]);/*初始化,输入5个字符*/
if(a[i]>=97&&a[i]<=119)/*97=a,a[i]=a~z时*/
a[i]=a[i]+3;/*变换到下第三个*/
else if(a[i]>119&&a[i]<=122)
a[i]=a[i]-23;
for(i=0;i<5;i++)
printf("%c",a[i]);

}

把if-else那段代码放到第一个for循环里面即可,因为如果不放到for循环里面,则处理的是数组下标i=5后面的字符,不符题意,且数组越界了,修改如下:


#include<stdio.h>
int main()
{
    char a[5]={0};//一串5个字符的字符串
    int i;//a[i]的下标
    for(i=0;i<5;i++){
            scanf("%c",&a[i]);/*初始化,输入5个字符*/
        if(a[i]>=97&&a[i]<=119)/*97=a,a[i]=a~z时*/
            a[i]=a[i]+3;/*变换到下第三个*/
        else if(a[i]>119&&a[i]<=122)
            a[i]=a[i]-23;
    }
    
    
    for(i=0;i<5;i++)
        printf("%c",a[i]);

}

img

其实你的代码就两点问题:
1.main 函数第一行的第二行的注释有问题,没有加 星号
2. for循环应该
加上大括号
,不管代码是不是一行,它表示这个大括号内的内容都属于循环体内需要执行的语句,如果没有加大括号,程序会以循环开头的第一条语句作为循环内的语句进行执行,所以你的代码执行出来的结果不对

img

字符串数组你给了五个位置只能储存4个位置,因为最后一个位置要放\0,将char a[5]改成char a[6]