哪里出错了
#include
int main()
{
char a[26],b[26],c[15] = {0} ;
int i,j;
char m;
for(i = 0,m = 'A';i<26;i++)
{
a[i] = m++;
}
for(i = 0,m = 'a';i<26;i++)
{
b[i] = m++;
}
gets(c);
i = 0;
while(c[i])
{
for(j = 0;j<26;j++)
{
if(c[i] == a[j])
{
c[i] = a[26-j+1];
}
else if(c[i] == b[j])
{
c[i] = b[26-j+1];
}
}
i++;
}
printf("%s\n",c);
return 0;
}
char a[26],b[26],c[15] = {'\0'} ;
这里只是将c[0]设置为{'\0'};
你的本意是3个数组都要设置为0
而且char也太小了
修改了四处看行不
#include<stdio.h>
int main()
{
char a[26],b[26],c[15] = {'\0'} ;
int i,j;
char m;
for(i = 0,m = 'A'; i<26; i++)
{
a[i] = m++;
}
for(i = 0,m = 'a'; i<26; i++)
{
b[i] = m++;
}
gets(c);
i = 0;
while(c[i]!='\0')//这里改了
{
for(j = 0; j<26; j++)
{
if(c[i] == a[j])
{
c[i] = a[25-j];//这里改了
}
else if(c[i] == b[j])
{
c[i] = b[25-j];//这里改了
}
}
i++;
}
printf("%s\n",c);
return 0;
}
您的问题有两个:
#include <stdio.h>
int main()
{
char a[30], b[30], c[15];
int i, j;
char m;
for (i = 0, m = 'A'; i < 26; i++)
{
a[i] = m++;
}
for (i = 0, m = 'a'; i < 26; i++)
{
b[i] = m++;
}
gets(c);
i = 0;
while (c[i])
{
for (j = 0; j < 26; j++)
{
if (c[i] == a[j])
{
c[i] = a[25 - j];
break;
}
else if (c[i] == b[j])
{
c[i] = b[25 - j];
break;
}
}
i++;
}
printf("%s\n", c);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: