【问题标题】:Reversing string variables, or printing an array of char in reverse反转字符串变量,或反向打印 char 数组
【发布时间】:2018-09-15 22:54:28
【问题描述】:

所以我一直在寻找并尝试找到一个简单的解决方案来解决这个问题,它不涉及在 c++ 中很常见的“cin”、“cout”问题的解决方案。我想要完成的是从键盘扫描一个条目,然后以相反的顺序打印它。我认为我的语法有问题,但我不知道问题出在哪里。

使用“abc”作为输入 5 次后得到的输出是这样的:

//Start of input
Enter a string:
abc
abc
abc
abc
abc
╠
cba
cba
cba
cba
cb
Enter a string:
//End of output

这是我的代码。

#include "stdafx.h"
#include <stdio.h>
#include <string>
#define SIZE 20

int main()
{
    char a[SIZE];
    int i, j, k = 0, pass;
    char hold = ' ';

    for (i = 1; i != 0; i++)
    {
        printf("Enter a string: \n");

        for (i = 0; i < SIZE; i++)
        {
            scanf_s("%c", &a[i]);
            k++;
        }

        for (j = k; j > 0; j--)
        {
            printf("%c", a[j]);
        }

        printf("\n");
    }
    return 0;
}

【问题讨论】:

  • 您要求简单的解决方案,但拒绝使用简单的解决方案(std::stringstd::cin)。请解释为什么您希望避免将来自cin 的输入读入string,然后使用内置库将其反转?你觉得这是你需要做很多的事情,还是你的工作不允许使用标准库?
  • 是否有使用 C++ 标签而不是 C 的原因?不使用 C++ 库的原因是什么?
  • @Dai 明白了,我会做出相应的改变。
  • @JiveDadson 我很抱歉。我是新手,所以下次我会解释我的教授的规定。我不是故意引起任何混乱

标签: c arrays char printf scanf


【解决方案1】:

你的

 for (j = k; j > 0; j--)
    {
        printf("%c", a[j]);
    }

有问题 为什么不迭代 a[0]?

看,这是你的输入

 for (i = 0; i < SIZE; i++)
    {
        scanf_s("%c", &a[i]);
        k++;
    }

你在 a[0] 中保留了一个字符,所以你当然应该打印它,比如:

for (j = k; j >= 0; j--)
    {
        printf("%c", a[j]);
    }

【讨论】:

    【解决方案2】:

    没有评论为什么你实际上为此使用 C++ 编译器。

    对于你的问题,你应该倒数到 0 移动整个a

    for (j = k; j >= 0; j--) {
        printf("%c", a[j]);
    }
    

    【讨论】:

      【解决方案3】:

      我只能给你逻辑。但是数组是声明和这样做的简单方法。或者当您执行循环时,将其声明为反向。希望它可以帮助您思考可能的答案。

      for (int a= b; a>= 0; j--){
         //statement here
      }
      

      【讨论】:

        【解决方案4】:

        在 C++ 中会这样:

            std::string inp;
            std::cin >> inp;
            for (auto it = inp.rbegin(); it != inp.rend(); ++it) {
                std::cout << *it;
            }
            std::cout << '\n';
        

        如果您想要一个不涉及 C++ 的答案,请将标记从 C++ 更改为 C。

        【讨论】:

          猜你喜欢
          • 2022-06-18
          • 1970-01-01
          • 2013-12-17
          • 1970-01-01
          • 2014-08-13
          • 1970-01-01
          • 2019-12-19
          • 2013-12-07
          • 1970-01-01
          相关资源
          最近更新 更多