三年级Z组 2023-02-02 17:34 采纳率: 63.6%
浏览 38
已结题

牛客网NC16644


  #include <iostream>
#include <string.h>
using namespace std;
int main()
{
    int p1,p2,p3,x;
    cin>>p1>>p2>>p3;
    char a[100];
    cin>>a;
    x=strlen(a);
    int i,j;
    char b,c,d;
    for(i=0;i<x;i++)
    { 
        if(a[i]!='-')cout<<a[i];
        if(a[i]=='-'){
            b=a[i-1],c=a[i+1];
            for(;++b<c;)
            {
                if(p1==1,p3==1)
                {
                    if(65<=b&&b<=90)
                    {
                        b=b+32,c=c+32;
                        d=b+1;
                        for(j=0;j<p2;j++)cout<<d;
                        b++;
                    }
                    else {
                        d=b+1;
                    for(j=0;j<p2;j++)cout<<d;
                    b++;}
                }
                if(p1==2,p3==1)
                {
                    if(97<=b&&b<=122)
                    {
                        b=b-32,c=c-32;
                        d=b+1;
                        for(j=0;j<p2;j++)cout<<d;
                        b++;
                    }
                    else {
                        d=b+1;
                    for(j=0;j<p2;j++)cout<<d;
                    b++;}
                }
                if(p1==1,p3==2)
                {
                    if(65<=b&&b<=90)
                    {
                        b=b+32,c=c+32;
                        d=c-1;
                        for(j=0;j<p2;j++)cout<<d;
                        c--;
                    }
                    else {
                        d=c-1;
                    for(j=0;j<p2;j++)cout<<d;
                    c--;}
                }
                if(p1==2,p3==2)
                {
                    if(97<=b&&b<=122)
                    {
                        b=b-32,c=c-32;
                        d=c-1;
                        for(j=0;j<p2;j++)cout<<d;
                        c--;
                    }
                    else {
                        d=c-1;
                    for(j=0;j<p2;j++)cout<<d;
                    c--;}
                }
            }
        }
    }
}

我自己检查了很久,找不到错误在哪,编码没问题,运行出错,输入1 2 1,a-d,结果是accDDd
思路是遇到“-”,就直接分类输出,p1=3情况还未考虑进去

  • 写回答

4条回答 默认 最新

  • 关注

    看了一下题目要求,你的代码有几个问题:
    (1)题目说明字符串长度不超过100,也就是可以包括100,所以char a[100]要改大一些,比如,char a[102]
    (2)p1可取的值是1、2、3,你的代码里没有考虑p1==3的情况
    (3)if(p1==1,p3==1)这种,括号里是逗号表达式,返回结果是p3==1的结果,与p1==1没有关系,应该改成 if(p1==1&& p3==1)
    你的这种代码写法逻辑容易出现混乱。for(;++b<c;)这个for循环建议用下面的结构来写:

    for (; ++b < c;)
                {
                    if (p1 == 1)
                    {
                        if (p3 == 1)
                        {
                            //
                        }
                        else if (p3 == 2)
                        {
                            //
                        }
                    }
                    else if (p1 == 2)
                    {
                        if (p3 == 1)
                        {
                            //
                        }
                        else if (p3 == 2)
                        {
                            //
                        }
                    }
                    else if (p1 == 3)
                    {
                        if (p3 == 1)
                        {
                            //
                        }
                        else if (p3 == 2)
                        {
                            //
                        }
                    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月3日
  • 已采纳回答 2月2日
  • 创建了问题 2月2日

悬赏问题

  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line