橘猫不是大懒猫 2021-12-07 18:50 采纳率: 100%
浏览 22
已结题

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;
}
  • 写回答

1条回答 默认 最新

  • 关注

    改成这样试一下

    
    #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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月15日
  • 已采纳回答 12月7日
  • 创建了问题 12月7日

悬赏问题

  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题
  • ¥20 基于matlab的航迹融合 航迹关联 航迹插补
  • ¥15 用Matlab实现图中的光线追迹
  • ¥15 联想笔记本开机出现系统更新界面
  • ¥15 各位帮帮我 我不想重做系统
  • ¥30 微信小程序蓝牙数据透传
  • ¥15 加氢站氢负荷数据集来源
  • ¥15 umi接入sentry遇到问题