社区讨论

蒟蒻弄了两段自觉一样的代码,出现玄学结果

P1765手机参与者 2已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@mi7dyv8g
此快照首次捕获于
2025/11/20 20:06
4 个月前
此快照最后确认于
2025/11/20 20:06
4 个月前
查看原帖
CPP
求大佬解释。。
读入:i see dead people
输出:31
问题:1,下面两段代码是否设置上一毛一样?
        若不是,2,哪里不一样?
        若是,2,为啥我把加粗的那句小于号改小于等于,上面的变34下面的不变?
      3,第一段,我把
      if(s[i]==' ')
        sum++;删去,输出28,加上等号仍然是在原来的基础上加三,它好像一直自动给我加三,是什么原理?
      ```
#include #include using namespace std; int main() { int ci,sum=0; string s; getline(cin,s); for(int i=0;i<s.length();i++) { if(s[i]==' ') sum++; if(s[i]!=' ') { if(s[i]<=111) { ci=(s[i]-96)%3; if(ci==0) { ci=3; } sum+=ci; } if(s[i]>111&&s[i]<=115) { ci=(s[i]-111)%4; if(ci==0) ci=4; sum+=ci; }
CPP
    if(s[i]<=118&&s[i]>=116)
    {
  	  ci=(s[i]-115)%3;
    if (ci==0)
      ci=3;
    sum+=ci;
  }
  if(s[i]>118&&s[i]<=122)
  {
    ci=(s[i]-118)%4;
  	if(ci==0)
  	{
      ci=4;
      cout<<ci;
 	}
    sum+=ci;
  }
  }
}
cout<<sum<<endl; }
CPP
#include #include using namespace std; int main() { int ci,sum=0; string s; getline(cin,s); ** for(int i=0;i<s.length();i++)** { if(s[i]==' ') sum++; if('a'<=s[i]&&s[i]<=111) { ci=(s[i]-96)%3; if(ci==0) { ci=3; } sum+=ci; } if(s[i]>111&&s[i]<=115) { ci=(s[i]-111)%4; if(ci==0) ci=4; sum+=ci; } if(s[i]<=118&&s[i]>=116) { ci=(s[i]-115)%3; if (ci==0) ci=3; sum+=ci; } if(s[i]>118&&s[i]<=122) { ci=(s[i]-118)%4; if(ci==0) { ci=4; } sum+=ci; } } cout<<sum<<endl; }
CPP

回复

5 条回复,欢迎继续交流。

正在加载回复...