當前位置:首頁 » 編程語言 » c語言字元串翻轉
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言字元串翻轉

發布時間: 2022-01-19 21:26:43

『壹』 用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]='';
}

『叄』 C語言反轉字元串怎麼反轉

寫一個反轉字元串的函數,用來處理單個字元串的反轉。
在主程序中,拆分每個串,遇到空格時,就調用反轉函數對拆分出來的串進行反轉

『肆』 c語言如何實現字元串的反轉

#include<stdio.h>

void reverse(char s[])

{ int i,j;

char c;

for(i=0; s[i]; i++);

for(i--,j=0; j<i;)

{ c=s[j];

s[j++]=s[i];

s[i--]=c;

}

}

int main()

{ char s[200];

gets(s);

reverse(s);

puts(s);

return 0;

}

『伍』 C語言字元串反轉

for(i=0;i<len/2;i++)//<----------------------
{
ch=str[i];
str[i]=str[len-i-1];
str[i]=ch;
}

『陸』 C語言字元串反轉逆序輸出

已改,看注釋
#include <stdio.h>
#include <string.h>
int main()
{
char a[31][31],*start,*end;
int i=0,t,len,k=0;
while(gets(a[i])!=NULL)
{
len=strlen(a[i]);
start=a[i];end=&a[i][len-1];
while(end - start > 0) //比較兩個指針要這樣比較
{
t=*start;
*start=*end;
*end=t;
start++; //start指針向後移
end--; //end指針向前移
}
i++;
k++;

}
for(i=k-1;i>=0;i--) //從k-1開始
{
puts(a[i]);
printf("\n");
}
return 0;
}

『柒』 C語言字元串逆轉函數

  1. 只需要將字元數組的前後數據進行交換就行了。


  2. #include<stdio.h>
    #include<string.h>

    char*reverse(char*x)
    {
    inti,tem,len=strlen(x);
    intn=len/2;
    for(i=0;i<=n;i++)//前後交換數據
    {
    tem=x[i];
    x[i]=x[len-1-i];
    x[len-1-i]=tem;
    }
    returnx;
    }

    intmain()
    {
    charp[]="abcdefghijk";
    printf("relust=%s ",reverse(p));
    return0;
    }

『捌』 c語言的問題字元串反轉

rever()函數修改如下:

char *rever(char *dest,const char *src)
{
int n = strlen(src)-1;
for (dest += n,*(dest+1)=0;n>=0;dest--,n--)
*dest=*src++;
return dest+1;
}

『玖』 C語言中如何實現字元串的反轉

#include<stdio.h>
#include<string.h>

string_change(char*p)
{
inti,len;
chartemp;
len=strlen(p);

//printf("%d ",len);
//testprintf("%d ",len);

for(i=0;i<(len/2);i++)
{
temp=p[i];
p[i]=p[len-1-i];
p[len-1-i]=temp;
}
}

intmain(void)
{
chara[20]="1234567890";

printf("%s ",a);
string_change(a);
printf("%s ",a);

return0;
}

兩個明顯的誤解:

  1. char* a="12***"; 這樣定義是錯誤的。這樣 a指向字元串常量的指針。而字元串常量是不能改變的。所以停止運行。

  2. c中數組是從0開始編號的。所以字元串最後一個字元是a[len-1];

『拾』 C語言 reverse 反轉字元串問題

從一端開始,一直到字元串中間位置,每個字元,與結尾處對稱位置字元對調值即可。

函數如下:

char*reverse(char*s)
{
intl,i;
chart;
l=strlen(s);
for(i=0;i<=l/2;i++)
{
t=s[i];
s[i]=s[l-i-1];
s[l-i-1]=t;
}

returns;
}