weixin_46632647
被神明喜欢
采纳率100%
2020-06-12 14:01

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;
}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • u013053075 人在旅途~ 10月前

    首先去掉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;
    }
    
    点赞 1 评论 复制链接分享
  • qq_29366533 qq_29366533 10月前

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

    点赞 评论 复制链接分享
  • lotusily 蓝星xing 10月前
    cout << "-1";
            break;    
    
    
                        将这里的break;   干掉,因为你只执行一次就跳出了
    
    点赞 评论 复制链接分享
  • EquinoxPrime EkuinoxPrime 10月前

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

    点赞 评论 复制链接分享

为你推荐