求教,字符串的颠倒输出

前年夏天,我参加了一个编程比赛。
我们团队当时面临的挑战之一是设计一个可以复制并输出用户输入的任何字符串的程序。
我坐在比赛场地的电脑前,手指在键盘上飞舞,突然我想到了一个简单的技巧。

我首先定义了一个数组,然后逐个字符读取输入字符串“HelloWorld”,以空格分隔,并将每个单词存储到数组中。
例如,该数组将如下所示:[“hello”,“world”。
这个过程花了我大约 5 分钟,并在比赛规定的 3 0 分钟内完成。

接下来,我开始迭代数组,从最后一个“world”元素开始并向前移动。
我编写了一个简单的循环,开始减 1 ,直到到达第一个元素。
每次旋转元素时,我都会将其打印到屏幕上。
这一步大约花了3 分钟。

最后,我看着屏幕上的字符,从“world”开始,逐渐变成“dlroWolleH”。
这是字符串“HelloWorld”的反转结果。
比赛结束了,我队获得了第一名。

这次活动让我明白,编程中的很多问题都可以通过简单的逻辑和正确的数据结构来解决。
与反转结果一样,关键是正确使用数组并以相反的顺序进行遍历。
但我想如果比赛不是在紧张的环境下,我可能会尝试更多的技巧,比如迭代或堆栈结构。
等等,还有一件事,我突然想到,如果输入的字符串特别长,这个方法的时间复杂度可能会很高。

如何用C语言,从键盘输入一个字符串,将其按逆序存入另一个字符数组中并输出,要求用最基本的C语言

这个符号是什么意思?让我来帮你解决一下。

先看这个:include,这是与输入输出相关的头文件。
然后int main(),这是main函数,程序从这里开始工作。

下面定义了两个字符数组,ch1 [8 ]和ch2 [8 ],每个数组有8 个字符存储位置。
数组名前面加数字8 表示包含8 个元素,下标数字为0到7
然后是两个循环。
第一个循环是for(i=0;i<8>每个循环允许用户输入一个字符并将其存储在 ch1 [i] 中。
printf("请输入字符 %dth", i) 告诉用户此条目。
scanf("%c",&ch1 [i]) 接收字符输入并将其存储在 ch1 [i] 中。

注意fflush(stdin),它会刷新输入缓冲区,防止影响后续输入。
说实话,有时候加这个没什么意义,但是写下来会让你感觉好一些。

(j=0;j<8> ch2 [j]=ch1 [7 -j];这里7 -j是key,比如j是0,7 -0是7 ,ch1 [7 ]是ch1 的最后一个输入字符; j 为 1 ,7 -1 为 6 ,ch1 [6 ] 为倒数第二个输入字符。
这反映了排名。

最后 printf("%c",ch2 [j]);输出倒置字符。
每取出一个,整串就会反转。

例如,如果输入 'abcdefgh' 并将其保存为 ch1 ,则将为 ch1 [0]='a'、ch1 [1 ]='b'、...、ch1 [7 ]='h'。
循环中,j从0开始,ch2 [j]=ch1 [7 -j],所以ch2 [0]=ch1 [7 ]='h',ch2 [1 ]=ch1 [6 ]='g',...,ch2 [7 ]=ch1 [0]='a'。
最终输出是“habcdefg”。

但是,这段代码有一个小问题。
scanf("%c",&ch1 [i]) 中的 &ch1 [i] 不太正确。
应该是&ch1 [i][0]或者直接是ch1 [i]。
因为ch1 [i]已经是一个地址了。
但编译器可能会自动处理它并且仍然可以运行。

简而言之,这段代码接收8 个字符,然后以相反的顺序输出。