当前位置:首页 » 编程语言 » c语言字符串reverse
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言字符串reverse

发布时间: 2022-02-02 17:30:28

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;
}

㈡ c语言、编写函数reverse_string将字符串反序输出。

只需将字符串的第一个元素和最后一个元素交换,第二个元素和倒数第二个元素交换,直到字符串长度一半时,就完成倒序了。切记不要全部倒序,不然又恢复成原字符串了。

#include<stdio.h>
#include<string.h>
//反序字符串x并返回
char*reverse_string(char*x)
{
intlen=strlen(x);
inti,n=len/2;
chartem;
//第一个和最后一个交换,第二个和倒数第二个交换
//这样就只用交换一半
for(i=0;i<=n;i++)
{
tem=x[i];
x[i]=x[len-1-i];
x[len-1-i]=tem;
}
returnx;
}

intmain()
{
charstr[]="0123456789";
printf("reversestring:%s ",reverse_string(str));
return0;
}

㈢ 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”反转字符串怎么用

有2处错误,在注释中显示
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int n;
char *p;
puts("请输入您要输入字符串的字符个数:");
scanf("%d",&n);
//既然用char*,应统一,不能使用sizeof(int)
p = (char*)malloc(n*sizeof(char));
for(int i=0;i<n;i++)
{
scanf("%c",&p[i]);//用%c接收字符
}
printf("输出reverse后的字符串:");
for(i=n-1;i>=0;i--)
{
printf("%c \t",p[i]);
}
free(p);
system("PAUSE");
return 0;
}

㈤ 如何用C语言将字符串逆序输出

C语言程序如下:

#include<stdio.h>

#include<string.h>

main()

{

int i,j,t,n;

char a[10];

printf("请输入字符串:");

gets(a);

n=strlen(a);

for(i=0;i<=n/2;i++)

{

t=a[i];

a[i]=a[n-1-i];

a[n-1-i]=t;

}

for(j=0;j<n;j++)

printf("%c",a[j]);

printf(" ");

}

(5)c语言字符串reverse扩展阅读:

字符串倒序输出的五种方法

1、使用数组循环

2、StringBuffer的reverse方法

3、StringBuffer的循环

4、栈的后进先出

5、迭代完成

㈥ C语言字符串反转

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

㈦ 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语言写 字符串逆序输出

逆序输出有很多种,具体的实现方法取决于你题目的要求

1.如果只是要求逆序输出,那么可以采用类似的方法:
voidreverse(char*s)
{
if(*s=='')
return;
reverse(s+1);
printf("%c",*s);
}
这种方法在s很长的情况下会一直递归到底,不是很好。

2.如果需要将字符串整个逆序在函数外面输出,那么可能希望采用返回字符串指针的方式;实现如下:
char*reverse(char*s)
{
staticchar*p=s+strlen(s)-1;//p是一个静态变量,指向当前递归层处理的字符串尾,而s指向字符串头
if(s<p)
{
charc=*p;//交换头尾字符
*p=*s;
*s=c;
p--;//尾向前挪一个
reverse(s+1);//相当于头向后挪一个
}
returns;
}

3.1当然,有的时候,并不需要reverse函数本身递归,而是可以借助一些辅助的递归函数,比如说:
voidreversehelp(char*head,char*end)
{
if(head<end)
{
charc=*head;
*head=*end;
*end=c;
reversehelp(++head,--end);
}
}
然后在调用时像这样调用:
char*reverse(char*s)
{
char*end=s+strlen(s)-1;

reversehelp(s,end);
returns;
}

3.2类似的辅助函数还可以采用一个字符串指针和一个长度参数的方式,如下例:
voidreversehelp(char*s,intn)
{
if(n>1)
{
charc=s[n-1];
s[n-1]=s[0];
s[0]=c;
reversehelp(s+1,n-2);
}
}
然后在调用时如下:
char*reverse(char*s)
{
reversehelp(s,strlen(s));
returns;
}

㈨ C语言填空编程题:编写函数reverse,实现将一个字符串逆置

这个主程序定义的字符串不可以被reverse改写,应该是有问题
但这不影响reverse写对:
char *y,c;
y=x; while ( *y ) y++;
y--; while ( y>x ) { c=*y;*y=*x;*x=c; y--; x++; }

㈩ c语言 字符串数组倒序输出

#include<stdio.h>
#include<string.h>
void main()
{
char string1[200]; //用于存放输入的字符串
char string2[200]; //用于存放倒序后的字符串
int invertion(char *ch1, char *ch2); //声明函数
printf("Please input a sentences:\n");
gets(string1); //这里不要用scanf,因为scanf遇到空白符就会结束
printf("Your inputed sentences is:%s\n", string1);

invertion(string1, string2);
printf("The invertion sentences is:%s\n", string2);
getchar();
}

int invertion(char *ch1, char *ch2)/*char1 接收实参传过来的原字符串指针 char2 接收倒序后的新字符串返回主函数*/
{
int count = 1,num=0;
char *ch=ch1;
for(;*ch1!='\0';ch1++)// 统计单词个数
{
if(*ch1==' ')
count++; //单词数等于空格数加1,前面把count初始化为1就是这个原因
if(*ch1==' '&&*(ch1+1)==' ') //防止单词之间有2个空格符而多计数了一个单词数
count--;
}
printf("count = %d\n", count);
ch1=ch1-1;//前面的ch1经过循环之后已经指向字符串的结束标志'\0',这里减1是为了让它指向字符串的最后一个字符
while(ch1>=ch)//让ch1从指向string1的最后一个字符开始往前递减,当减到字符串的首个字符时结束
{ int j=num; //保存num,后面要用到这个数
if(*ch1!=' ')//记录每个单词的长度 ,以空格符作为标志
num++;
else // 知道了每个单词的长度之后,就可以用循环将字符以单词为单位写入数组string中,这样的话单词内就不会倒序了
{
for(int i=1;i<=j;i++,num--)
*(ch2-num)=*(ch1+i);
*ch2=*ch1;
}
ch1--;
ch2++;
}
for(int i=1;i<=num;i++,ch2++)//因为string1的第一个单词前没有空格符,肯定输不出来,所以单独用一个循环将其输出
*(ch2-num)=*(ch1+i);
*ch2='\0'; //string2的结束标志
}

这是我做了修改之后的程序,看看符不符合要求!!
你的那个定义的变量太多,很混乱!循环语句太乱了,if判断条件与循环条件不正确
已经做了修改,看符合要求不,不行的话,再说!!!
又做了修改了,看符合要求不??
不会吧,我调试通过还运行了!!不然怎么会发上来啊!!至于算法问题我给注释吧,你看看!!