33,311
社区成员
发帖
与我相关
我的任务
分享
void reverse(char* str,unsigned int start,unsigned int end)
{
if(start>strlen(str))
return;
if(end>strlen(str))
end=strlen(str)-1;
if(start<end)
{
char tmp = str[start];
str[start]=str[end];
str[end]=tmp;
}
else
return;
reverse(str,++start,--end);
}
#include <stdio.h>
int SimpleStrlen(char str[])
{
if(str == NULL){
return -1;
}
char *end = str;
for(; *end != 0; ++end);
return (end - str);
}
void reverse(char str[], int start, int end)
{
if(str == NULL || start < 0 || end < 0){
return;
}
if(start >= end){
return;
}else{
int l = SimpleStrlen(str);
if(start >= l - 1){
return;
}else if(end >= l){
reverse(str, start, l - 1);
}else{
int tmp = str[start];
str[start] = str[end];
str[end] = tmp;
reverse(str, start + 1, end - 1);
}
}
}
int main(void)
{
char str[100];
int start, end;
gets(str);
scanf("%d%d", &start, &end);
reverse( str, start, end );
printf("%s\n", str);
return 0;
}
0123456
1
4
0432156
0123456
6
10
0123456
0123456
0
10
6543210
#include <stdio.h>
int SimpleStrlen(char str[])
{
if(str == NULL){
return -1;
}
char *end = str;
for(; *end != 0; ++end);
return (end - str);
}
void reverse(char str[], int start, int end)
{
if(str == NULL || start < 0 || end < 0){
return;
}
if(start >= end){
return;
}else{
int l = SimpleStrlen(str);
if(start >= l - 1){
return;
}else if(end >= l){
reverse(str, start, l - 1);
}else{
int tmp = str[start];
str[start] = str[end];
str[end] = tmp;
reverse(str, start + 1, end - 1);
}
}
}
int main(void)
{
char s[] = "0123456";
reverse(s, 0, 10);
printf("s : %s\n", s);
return 0;
}
#include <stdio.h>
char *Reverse(char *s, size_t l, size_t b, size_t e)
{
if(s == NULL || b < 0){
return NULL;
}
if(b >= e){
return s;
}else{
if(b >= l){
return s;
}else if(e >= l){
return Reverse(s, l, b, l - 1);
}
s[l] = s[b];
s[b] = s[e];
s[e] = s[l];
s[l] = 0;
return Reverse(s, l, b + 1, e - 1);
}
}
int main(void)
{
char s[] = "0123456";
Reverse(s, sizeof(s) - 1, 0, 10);
printf("s : %s\n", s);
return 0;
}
#include <stdio.h>
char *Reverse(char *s, size_t l, size_t b, size_t e)
{
if(s == NULL || b < 0 || e >= l){
return NULL;
}
if(b >= e){
return s;
}else{
s[l] = s[b];
s[b] = s[e];
s[e] = s[l];
s[l] = 0;
return Reverse(s, l, b + 1, e - 1);
}
}
int main(void)
{
char s[] = "123456";
Reverse(s, sizeof(s) - 1, 2, 5);
printf("s : %s\n", s);
return 0;
}