反转字符串的C程序
2021-07-07 08:44:07
深夜i
--
--
反
转
字
符
串
的
C
程
序
用于反转用户输入的字符串的 C 程序。 如果字符串为“hello”,则输出为“olleh”。 C 程序使用 strrev 反转字符串,而不使用 strrev、递归和指针。 反转时保持不变的字符串是回文。
使用 strrev 反转 C 中的字符串
#include <stdio.h>
#include <string.h>
int main()
{
char s[100];
printf("Enter a string to reverse\n");
gets(s);
strrev(s);
printf("Reverse of the string: %s\n", s);
return 0;
}
C反向字符串程序输出:
编译程序时,您可能会收到以下消息:“警告:函数 'strrev' 的隐式声明在 C99 [-Wimplicit-function-declaration] 中无效”。 在这种情况下,我们必须反转没有 strrev 的字符串(参见下一个程序)。
下载反向字符串程序。
C程序反转字符串中的单词
没有 strrev 函数的字符串反转
我们在不使用 strlen 函数的情况下找到字符串的长度,然后使用 for 循环以相反的顺序(从末尾到开头)将其字符复制到新字符串中。
#include <stdio.h>
int main()
{
char s[1000], r[1000];
int begin, end, count = 0;
printf("Input a string\n");
gets(s);
// Calculating string length
while (s[count] != '\0')
count++;
end = count - 1;
for (begin = 0; begin < count; begin++) {
r[begin] = s[end];
end--;
}
r[begin] = '\0';
printf("%s\n", r);
return 0;
}
使用递归反转字符串的C程序
#include <stdio.h>
#include <string.h>
void reverse(char*, int, int);
int main()
{
char a[100];
gets(a);
reverse(a, 0, strlen(a)-1);
printf("%s\n", a);
return 0;
}
void reverse(char *x, int begin, int end)
{
char c;
if (begin >= end)
return;
c = *(x+begin);
*(x+begin) = *(x+end);
*(x+end) = c;
reverse(x, ++begin, --end);
}
在递归方法中,我们交换字符串开头和结尾的字符并向字符串的中间移动。 由于重复的函数调用,此方法效率低下。
使用堆栈反转字符串
我们可以使用堆栈来反转字符串。 将字符串中的字符一个一个推到最后。 通过存储弹出的元素创建另一个。
使用指针反转字符串的C程序
现在我们将使用指针或不使用库函数 strrev 来反转字符串。
#include<stdio.h>
int string_length(char*);
void reverse(char*);
main()
{
char s[100];
printf("Enter a string\n");
gets(s);
reverse(s);
printf("Reverse of the string is \"%s\".\n", s);
return 0;
}
void reverse(char *s)
{
int length, c;
char *begin, *end, temp;
length = string_length(s);
begin = s;
end = s;
for (c = 0; c < length - 1; c++)
end++;
for (c = 0; c < length/2; c++)
{
temp = *end;
*end = *begin;
*begin = temp;
begin++;
end--;
}
}
int string_length(char *pointer)
{
int c = 0;
while( *(pointer + c) != '\0' )
c++;
return c;
}
上一篇:
idea打包java可执行jar包
下一篇:
C 中的回文
评论区