当前位置:首页 » 编程语言 » 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;
}