C语言 将一个字符数组中的值按逆序重新存放,例如原来顺序good,要求改为doog

如题所述

第1个回答  2015-05-07
#include "stdio.h"
//调用方式如下,自己试试
void main()
{
void Rev(char Str[]);
char test[] = "g0ood";
Rev(test);
printf("%s",test);
}

void Rev(char Str[])
{
int length = strlen(Str);
int i = 0;
for (i = 0; i < length/2; i++)
{
char temp = Str[i];
Str[i] = Str[length - i -1];
Str[length - i -1] = temp;
}
}
第2个回答  推荐于2017-09-25
#include <stdio.h>
void reverse(char *s);
int main(void) 
{
char str[]="good";
reverse(str);
puts(str);
return 0;
}
void reverse(char *s)
{
char *p=s,t;
while(*p&&p++);
for(p--;s<p;s++,p--)
{
t=*s;
*s=*p;
*p=t;
}
}

第3个回答  2015-05-07
#include<stdio.h>
#include<string.h>
main()
{
char s1[100],s2[100];
int i,len;

gets(s1);
len=strlen(s1);

for(i=0;i<len;i++) s2[i]=s1[len-1-i];

printf("%s\n",s2);
}追问

没有学过这种啊

有别的方法吗?

追答

这是最简单的办法了

第4个回答  推荐于2016-03-08
#include <stdio.h>
#include <string.h>

int main()
{
char str[1000], rvsstr[1000];
int i;
gets(str);
int len = strlen(str);
for (i = 0; i < len; ++i){
rvsstr[i] = str[len-i-1];
}
rvsstr[len] = '\0';
puts(rvsstr);
return 0;
}追问

有简单的吗?你这个方法没有学呢

追答

#include
#include

int main()
{
char str[1000], temp;
int i;
scanf ("%s", str);
int len = strlen(str);
for (i = 0; i < len/2; ++i){
temp = str[i];
str[i] = str[len-i-1];
str[len-i-1] = temp;
}
printf ("%s\n", str);
return 0;
}

这个可以吗?

#include
#include

int main()
{
char str[1000], ans[1000];
int i, j = 0;
scanf ("%s", str);
int len = strlen(str);
for (i = len - 1; i >= 0; i--){
ans[j] = str[i];
j++;
}
printf ("%s\n", ans);
return 0;
}

少了一句
#include
#include

int main()
{
char str[1000], ans[1000];
int i, j = 0;
scanf ("%s", str);
int len = strlen(str);
for (i = len - 1; i >= 0; i--){
ans[j] = str[i];
j++;
}
ans[j] = '\0';
printf ("%s\n", ans);
return 0;
}

本回答被提问者采纳
相似回答