如何用最后一个数字翻转字符串中的第一个数字,然后是倒数第二个和倒数第二个,依此类推?

Posted

技术标签:

【中文标题】如何用最后一个数字翻转字符串中的第一个数字,然后是倒数第二个和倒数第二个,依此类推?【英文标题】:How do I flip the first number in the string with the last number and then second and second last and so on? 【发布时间】:2021-01-21 13:36:26 【问题描述】:

这是我尝试过的,但不合逻辑。 First_num++ 只是复制 2 个数字而不是第二个数字,last_num++ 也是如此 我如何继续这样复制并找出它们 我知道我可以反向计算,因为输出是相同的。我可以通过反转计数来做到这一点,但问题要我一个一个地交换字符。请帮忙,谢谢。

#include <iostream>
#include <cctype>
using namespace std;

void reverse_word(char character[]);

int main()

    char characters[50];
    reverse_word(characters);
    return 0;


void reverse_word(char character[])

    char temp1[2] = "\0";
    char temp2[2] = "\0";
    char first_num = 1;
    char last_num = 1;
    cout << "Enter a word to reverse first word last word second first second last and so on: ";
    cin >> character;
    for (int i=0;i<strlen(character)/2;i++)
    
        strncpy(temp1, character, first_num);
        first_num++;
        strcpy(temp2 , &character[strlen(character)-last_num]);
        last_num++;

    
    for (int i = 0; i < strlen(character) / 2; i++)
    
        cout << temp2;
        cout << temp1;
    

【问题讨论】:

这一定是来自一些在线编码/黑客/竞赛网站的无数无意义的谜题之一。不幸的是,那些无用的网站只不过是一堆谜题,并没有任何材料可以教授有效实现这些基本算法所需的各种 C++ 技术和算法。这只能在一本好的 C++ 教科书中找到。显示的代码比它需要的要长和复杂得多。这里没有快速修复。整个方法是错误的,必须使用适当的算法和 C++ 库函数从头开始重新实现。 我的讲师说 std 很好,但是对于没有很多 c 预处理器指令的程序或者为了我们现在方便的东西,它不需要它。对于古代c库我真的不知道我的大学在全国排名第二 @RyanTan -- 说 std 很好,但是对于没有很多 c 预处理器指令的程序来说不需要它 -- 如果真的这么说,你的讲师是C 程序员,伪装成 C++ 老师,IMO。此外,您对您想要做什么的描述令人困惑。您要回答的实际问题是什么? 我可以向您保证,您不是第一个在 *** 上发布证据证明 C++ 讲师不称职的人。不幸的是,这里没有好的解决方案,除了尝试自己学习 C++,使用经过编辑的高质量教科书。 @RyanTan 另外,如果是reverse_word2 的问题,你为什么要发布不相关的功能,例如reverse_word 和其他功能?理想的程序应该是一个简单的main() 程序,它调用reverse_word2 并带有演示问题的示例数据。 【参考方案1】:

你可以使用c++的内置函数reverse(begin, end),其中beginend迭代器的参数如下:

#include <algorithm> 
#include <iostream>
#include <string>

using namespace std; 

int main() 
 
    string str = "String example"; 
    reverse(str.begin(), str.end()); // outputs --> elpmaxe gnirtS 
    cout<<"\n"<<str; 
    return 0;

这是一个简短而快速的解决方案,但如果您想获得更深入的视图,您可以应用一些不错的算法。

【讨论】:

【参考方案2】:

您应该在同一个 for 循环中计算临时变量,而不是在不同的循环中。

【讨论】:

以上是关于如何用最后一个数字翻转字符串中的第一个数字,然后是倒数第二个和倒数第二个,依此类推?的主要内容,如果未能解决你的问题,请参考以下文章

如何用字符串中最后找到的数字分割字符串?

mysql里面如何用sql语句让字符串的‘123’转换为数字的123?

字符串翻转和替换

mysql里面如何用sql语句让字符串转换为数字

如何用正则表达式判断一个字符串中有数字

mysql查询字符串中有几个字符