永发信息网

用C语言,翻转字符串,(例如输入“ABCD”,则输出“DCBA”)!方法越多越好!!

答案:5  悬赏:10  手机版
解决时间 2021-11-18 19:00
  • 提问者网友:夢醒日落
  • 2021-11-18 03:05
用C语言,翻转字符串,(例如输入“ABCD”,则输出“DCBA”)!方法越多越好!!
最佳答案
  • 五星知识达人网友:污到你湿
  • 2021-11-18 04:27
【方法一】
//也是最简单的有点投机
#include

int main(){
char str[]="ABCD";
int i;
for(i=3;i>=0;i--) printf("%c",str[i]);
return 0;
}

【方法二】


#include
#include

int main(){
char str[]="ABCD",*start,*end,t;
int len,i;
len=strlen(str);
start=str;
end=&str[len-1];
while(start t=*start;
*start=*end;
*end=t;
start++;
end--;
}
printf("REVERSED:\n");
for(i=0;str[i];i++) printf("%c",str[i]);
return 0;
}
【方法三】
//用堆栈的性质来实现

#include
#include
#include
#define MAXSTACK 100

char pop(struct stack *stk);
void push(char ch,struct stack *stk);
int empty(struct stack *stk);

struct stack{
int top;
char str[MAXSTACK];
};

int main(void)
{
int i,len_str;
char str[MAXSTACK];
struct stack s;
s.top=-1;
printf("\nInput the string please:");
gets(str);
len_str=strlen(str);
for(i=0;i push(str[i],&s);
printf("The disorder is:");
for(i=0;i if(!empty(&s))
printf("%c",pop(&s));
}
getch();
return 0;
}

char pop(struct stack *stk){
return stk->str[stk->top--];
}

void push(char ch,struct stack *stk){
if(stk->top==MAXSTACK-1){
printf("\nOVERFLOW!\n");
exit(1);
}
else stk->str[++(stk->top)]=ch;
return;
}

int empty(struct stack *stk){
return (stk->top==-1);
}

还可以用递归的思想来解决该问题,这里就不多说了……
全部回答
  • 1楼网友:野慌
  • 2021-11-18 08:00
下班了没时间写,堆栈能很容易的实现
  • 2楼网友:摆渡翁
  • 2021-11-18 07:23
每一个输入都变成一个变量,然后再用printf把变量掉转打印出来
  • 3楼网友:刀戟声无边
  • 2021-11-18 06:57
main()
{
char str[]; int i;
scanf("%s,&str);
int n=strlen(str);
while(i<=n)
{
str[i++]=str[n--];
printf("%c",str[i]);
}
printf("\n");
}
没有测试,你自己试一下.
其实这个本身就是堆栈的性质。
在汇编语言中,入栈和出栈尊从先入后出的原则,先push,再pop,结果就是把这个字符串的输出结果颠倒过来。
  • 4楼网友:执傲
  • 2021-11-18 05:25
用CString中的MakeReverse就可搞定
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯