#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]);
}
其实你的代码就两点问题:
1.main
函数第一行的第二行的注释有问题,没有加 星号 。
2. for循环应该加上大括号,不管代码是不是一行,它表示这个大括号内的内容都属于循环体内需要执行的语句,如果没有加大括号,程序会以循环开头的第一条语句作为循环内的语句进行执行,所以你的代码执行出来的结果不对
字符串数组你给了五个位置只能储存4个位置,因为最后一个位置要放\0,将char a[5]改成char a[6]