『壹』 用c語言,翻轉字元串,(例如輸入「ABCD」,則輸出「DCBA」)!方法越多越好!!
【方法一】
//也是最簡單的有點投機
#include <stdio.h>
int main(){
 char str[]="ABCD";
 int i;
 for(i=3;i>=0;i--) printf("%c",str[i]);
 return 0;
}
【方法二】
/*
   用指針的,將第一個與最後一個互換,第二個與倒數第二個互換……直到逆置完成
*/
#include <stdio.h>
#include <string.h>
int main(){
 char str[]="ABCD",*start,*end,t;
 int len,i;   
 len=strlen(str);
 start=str;
 end=&str[len-1];
 while(start<end){
     t=*start;
     *start=*end;
     *end=t;
     start++;
     end--;
 }
 printf("REVERSED:\n");
 for(i=0;str[i];i++) printf("%c",str[i]);
 return 0;
}
【方法三】
//用堆棧的性質來實現
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#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:");/*輸入你要逆置的字元串e.g.「ABCD」*/
 gets(str);
 len_str=strlen(str);
 for(i=0;i<len_str;i++)
     push(str[i],&s);
 printf("The disorder is:");
 for(i=0;i<len_str;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);
}
還可以用遞歸的思想來解決該問題,這里就不多說了……
『貳』 C語言 把字元串前後倒置
這樣改就好了:
voidfun(char*s)
{
inti,j=0,n;
chart[100];//t不要和s指向同一個字元串,不然後面的賦值操作有點亂套。
n=strlen(s);
for(i=n-1;i>=0;i--)//i==0的時候也要復制過去。
t[j++]=s[i];
for(i=0;i<n;i++)
s[i]=t[i];
s[++i]='
