C++输入一个字符数组,找出其中是否有字符h,若有输出该字符在数组中第一次出现的位置(下标),否则输出-1,麻烦大佬们帮我看看,我的代码哪里有问题?

无论有没有字符h,输出总是-1,这是为什么?

#include<iostream>
#include<stdio.h>
#include <string.h>
using namespace std;
int main()
{
    char a[50];
    cin >> a;
    for (int i = 0; i < strlen(a); i++)
    {
        if (a[i] == 'h')
        {
            cout << i;
            break;
        }
        else
        {
            cout << "-1";
            break;
        }
    }
    return 0;
}

首先去掉else中的break。
其次在else中追加判断,当最后一个字符时,输出-1。

#include<iostream>
#include<stdio.h>
#include <string.h>
using namespace std;
int main()
{
    char a[50];
    cin >> a;
    for (int i = 0; i < strlen(a); i++)
    {
        if (a[i] == 'h')
        {
            cout << i;
            break;
        }
        else
        {
            if(i == (strlen(a) - 1))
                cout << "-1";
        }
    }
    return 0;
}

将else 改为else if (i==strlen(a)-1)

这个程序只有字符串的第一个字符为h时才会输出i,而且只为0,只要h不出现在第一位则进入else,然后直接break循环所以就一直-1,把else去掉即可

cout << "-1";
        break;    


                    将这里的break;   干掉,因为你只执行一次就跳出了