为什么此代码在C ++中的第一个循环中省略了第二个单词

BartekJuśkiewicz

我不知道为什么编译器会像我设置ile那样“跳过”第二个单词1,所以输入第一个句子并自动跳过第二个单词,但是如果我设置ile为其他任何一个>1,我都可以输入两个单词。

任务是检查单词是否相互回文。我试图用循环的getchar代替它,但是工作方式如下。

我的代码:

#include <iostream>
#include <string.h>

using namespace std;

void qsort(char tab[], int min, int max)
{
    if(min<max)
    {
        int min_min = min;
        for(int i=min+1;i<=max;i++)
        {
            if(tab[i]<tab[min])
            {
                swap(tab[++min_min],tab[i]);
            }
        }
        swap(tab[min],tab[min_min]);
        qsort(tab,min,min_min-1);
        qsort(tab,min_min+1,max);
    }
}
bool sprawdz(char tab[],char tab2[])
{
    for(int i=0;i<strlen(tab);i++)
    {
        if(tab[i]!=tab2[i])
        {
            return false;
            break;
        }
    }
    return true;
}

int main()
{
    char tablica1[100];
    char tablica2[100];
    int ile;
    cin>>ile;
    for(int i=0;i<ile;i++)
    {
        cin.getline(tablica1, 100);
        cin.getline(tablica2, 100);
        qsort(tablica1,0,strlen(tablica1)-1);
        qsort(tablica2,0,strlen(tablica2)-1);
        cout<<tablica1<<endl<<tablica2;
        if(sprawdz(tablica1,tablica2))
        {
            cout<<"TAK";
        }
        else
        {
            cout<<"NIE";
        }

    }

    return 0;
}
瓦卡尔

更改此:

cin.getline(tablica1, 100);
cin.getline(tablica2, 100);

至:

cin.getline(tablica1, 100);
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.getline(tablica2, 100);

原因是cin在输入流中留下了换行符。您必须使用cin.ignore()删除它。

另外,您还需要#include <limits>for numeric_limits

请参考以下答案以获得更深入的理解:为什么getline函数在带有结构数组的for循环中不能多次工作?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么BSS中静态数组上的第二个循环比第一个循环快?

来自分类Dev

如何在C#中从第二个嵌套的foreach循环中打破第一个foreach循环

来自分类Dev

为什么第二个for循环会覆盖Python中的第一个?

来自分类Dev

为什么在第二个代码中却出现UnboundLocalError而不是第一个代码?

来自分类Dev

为什么程序在第一个循环中用想要的数组打印另一个数组,而在第二个循环中用额外的变量字符打印目标数组?

来自分类Dev

为什么第二个导航移至第一个导航

来自分类Dev

为什么要比第一个仪器评估第二个仪器?

来自分类Dev

为什么第一个验证不检查第二个?

来自分类Dev

为什么第一个代码有效而第二个代码无效?

来自分类Dev

在链式承诺中,为什么第二个承诺在第一个承诺之前执行?

来自分类Dev

在 js 代码中循环时,第二个功能无法看到第一个功能中定义的变量

来自分类Dev

关闭在第一个窗口的代码中生成的第二个窗口

来自分类Dev

为什么将第二个值放入此C结构的数组会导致第一个插槽的值变得乱码?

来自分类Dev

来自类的C ++第二个函数无权访问第一个

来自分类Dev

C语言中的第一个和第二个调用

来自分类Dev

C第一个fgets()在第二个运行时被跳过

来自分类Dev

如何从第二个结构访问第一个结构-C

来自分类Dev

ActiveRecord中第一个和第二个的替代语法是什么

来自分类Dev

为什么第一个C代码导致一个变量,而第二个代码导致3个变量。是否可以通过稍作更改使第一个程序工作?

来自分类Dev

c ++-如果用作map中的键,如何获取对的第一个和第二个元素?

来自分类Dev

在C ++中,如何仅在第一个“ system()”结束后才执行第二个“ system()”?

来自分类Dev

通过第一个对象在 C++ 中创建第二个对象时,第一个对象去哪里了?

来自分类Dev

为什么第一个将其视为布尔值,第二个则不?

来自分类Dev

为什么我的第一个snippit有效,而我的第二个却无效?

来自分类Dev

为什么我的第一个查询的值作为第二个查询的值返回?

来自分类Dev

Jupyter:为什么第二个命令会使第一个命令停止工作?

来自分类Dev

为什么第一个SQL不能像第二个语句那样使用“ AND”语句?

来自分类Dev

为什么第一个无效,第二个无效?全局和私有变量声明

来自分类Dev

为什么我的第一个snippit有效,而我的第二个却无效?

Related 相关文章

  1. 1

    为什么BSS中静态数组上的第二个循环比第一个循环快?

  2. 2

    如何在C#中从第二个嵌套的foreach循环中打破第一个foreach循环

  3. 3

    为什么第二个for循环会覆盖Python中的第一个?

  4. 4

    为什么在第二个代码中却出现UnboundLocalError而不是第一个代码?

  5. 5

    为什么程序在第一个循环中用想要的数组打印另一个数组,而在第二个循环中用额外的变量字符打印目标数组?

  6. 6

    为什么第二个导航移至第一个导航

  7. 7

    为什么要比第一个仪器评估第二个仪器?

  8. 8

    为什么第一个验证不检查第二个?

  9. 9

    为什么第一个代码有效而第二个代码无效?

  10. 10

    在链式承诺中,为什么第二个承诺在第一个承诺之前执行?

  11. 11

    在 js 代码中循环时,第二个功能无法看到第一个功能中定义的变量

  12. 12

    关闭在第一个窗口的代码中生成的第二个窗口

  13. 13

    为什么将第二个值放入此C结构的数组会导致第一个插槽的值变得乱码?

  14. 14

    来自类的C ++第二个函数无权访问第一个

  15. 15

    C语言中的第一个和第二个调用

  16. 16

    C第一个fgets()在第二个运行时被跳过

  17. 17

    如何从第二个结构访问第一个结构-C

  18. 18

    ActiveRecord中第一个和第二个的替代语法是什么

  19. 19

    为什么第一个C代码导致一个变量,而第二个代码导致3个变量。是否可以通过稍作更改使第一个程序工作?

  20. 20

    c ++-如果用作map中的键,如何获取对的第一个和第二个元素?

  21. 21

    在C ++中,如何仅在第一个“ system()”结束后才执行第二个“ system()”?

  22. 22

    通过第一个对象在 C++ 中创建第二个对象时,第一个对象去哪里了?

  23. 23

    为什么第一个将其视为布尔值,第二个则不?

  24. 24

    为什么我的第一个snippit有效,而我的第二个却无效?

  25. 25

    为什么我的第一个查询的值作为第二个查询的值返回?

  26. 26

    Jupyter:为什么第二个命令会使第一个命令停止工作?

  27. 27

    为什么第一个SQL不能像第二个语句那样使用“ AND”语句?

  28. 28

    为什么第一个无效,第二个无效?全局和私有变量声明

  29. 29

    为什么我的第一个snippit有效,而我的第二个却无效?

热门标签

归档