牛客网NC16644


  #include 
#include 
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;iif(a[i]!='-')cout<if(a[i]=='-'){
            b=a[i-1],c=a[i+1];
            for(;++bif(p1==1,p3==1)
                {
                    if(65<=b&&b<=90)
                    {
                        b=b+32,c=c+32;
                        d=b+1;
                        for(j=0;jelse {
                        d=b+1;
                    for(j=0;jif(p1==2,p3==1)
                {
                    if(97<=b&&b<=122)
                    {
                        b=b-32,c=c-32;
                        d=b+1;
                        for(j=0;jelse {
                        d=b+1;
                    for(j=0;jif(p1==1,p3==2)
                {
                    if(65<=b&&b<=90)
                    {
                        b=b+32,c=c+32;
                        d=c-1;
                        for(j=0;jelse {
                        d=c-1;
                    for(j=0;jif(p1==2,p3==2)
                {
                    if(97<=b&&b<=122)
                    {
                        b=b-32,c=c-32;
                        d=c-1;
                        for(j=0;jelse {
                        d=c-1;
                    for(j=0;j

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

看了一下题目要求,你的代码有几个问题:
(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)
                    {
                        //
                    }
                }

if(p1==1,p3==1) 语句中使用逗号,而不是与运算符(&&),该语句不是判断多个条件,而是仅判断 p3 == 1。其他的 if 语句同样存在这个问题。

if 内是逗号 , ??

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632