#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 内是逗号 , ??
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!