pta字符串替换这样做为什么不行?这样应用的话只会替换部分大写字母


#include<stdio.h>
int main()
{
char c,a[26],b[26];
char ch,sh,s[80];
int i,j,k,cnt=0;
c=getchar();
for(i=0;c!='\n';i++)
{
s[i]=c;
cnt++;
c=getchar();
}
for(i=0,ch='A';i<26;i++)
{
a[i]=ch;ch++;
}
for(i=0,sh='Z';i<26;i++)
{
b[i]=sh;sh--;
}
for(j=0;j<cnt;j++)
{
if(s[j]>='A'&&s[j]<='Z')
{
for(k=0;k<26;k++)
if(s[j]==a[k])
s[j]=b[k];
}
}
for(i=0;i<cnt;i++)
printf("%c",s[i]);
return 0;
}

改成这样试一下


#include <stdio.h>
int main()
{
    char c, a[26], b[26];
    char ch, sh, s[80];
    int i, j, k, cnt = 0;
    c = getchar();
    for (i = 0; c != '\n'; i++)
    {
        s[i] = c;
        cnt++;
        c = getchar();
    }
    for (i = 0, ch = 'A'; i < 26; i++)
    {
        a[i] = ch;
        ch++;
    }
    for (i = 0, sh = 'Z'; i < 26; i++)
    {
        b[i] = sh;
        sh--;
    }
    for (j = 0; j < cnt; j++)
    {
        if (s[j] >= 'A' && s[j] <= 'Z')
        {
            for (k = 0; k < 26; k++)
            {
                if (s[j] == a[k])
                {
                    s[j] = b[k];
                    break;
                }
            }
        }
    }
    for (i = 0; i < cnt; i++)
        printf("%c", s[i]);
    return 0;
}