问题标题: 酷町堂:3736 算到一半不会了

0
0
已解决
朱家烨
朱家烨
资深守护
资深守护
#include<iostream>
#include<string>
#include<cstring> 
using namespace std;
int main(){
    string s;
    char x;
    cin>>s>>x;
    for(int i=0;i<s.size;i++)
    {
        if(s[i]==x)
        {
            cout<<i+1;
            break
        }
    }
    return 0;
} 

目前代码

求解


0
已采纳
钱成
钱成
初级守护
初级守护

AC

正文:
额,我觉得,x在s中出现的第一次位置用find找比较简单,最后一次出现的位置是需要通过循环遍历字符串来找;

你的问题是:①头文件多余 #include <cstring> 是当使用字符数组的函数时用到的头文件,

        比如说:当你要求字符数组的长度时,需要用到的函数是  strlen(字符数组名);

                    ②题目要求的是位置,所以找到的下边不需要+1

我的代码如下:
 

...
//别忘了字符串的头文件
string s;  //我把它定义在了主函数外面
...
    定义 x1,x2;  //x1,x2是x在s中先后出现的位置
    定义字符x
    输入
    x1=s.find(x); //判断s中有木有x  (如果有,那么s中第一次出现的x就找到了)
    如果(x1==-1)    //若没有,输出-1
    {
        输入
    }
    否则     //若有,则循环遍历找最后一次出现的位置
    {
        循环
        {
            if(s[i]==x)
            {
                x2=i; //循环结束时,x2的值就是最后一次的位置
            }
        }   
        输出
    }
...

 

 

打字十分不易,望采纳

0
徐紫尘
徐紫尘
高级光能
高级光能
    int a,b;
    string s;
    char x;
    a=s.find_first_of(x);
    b=s.find_last_of(x);
    if(a==-1){
        cout<<"-1";   
    } else{
        cout<<a<<" "<<b;
    }

十分代码,仅供参考

0
0
王泽宇
王泽宇
初级光能
初级光能

b=s.find(x),c=s.find_last_of(x);

if(b!=-1&&c!=-1)cout<<b<<“ ”<<c;

else cout<<-1;

0
0
赵朗
赵朗
高级光能
高级光能

兄弟,你遍历字符串写错了啊,平常我们写错都是要抄10遍的

是s.size()-1

我要回答