⑴ 如何用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(" ");
}
(1)c语言字符串逆转扩展阅读:
字符串倒序输出的五种方法
1、使用数组循环
2、StringBuffer的reverse方法
3、StringBuffer的循环
4、栈的后进先出
5、迭代完成
⑵ 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语言 字符串反转函数(不使用库函数)
char *revstr(char *str, size_t len)
{
char *start = str;
char *end = str + len - 1;
char ch;
if (str != NULL)
{
while (start < end)
{
ch = *start;
*start++ = *end;
*end-- = ch;
}
}
return str;
}
⑷ 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语言中,如何逆序任意输出的字符串 求简单易懂的方法。
一般的逆序用两个while,但没多少人用,给你三种常见方法
一 设置两个指针,分别指向字符串的头部和尾部,然后交换两个指针所指的字符,并向中间移动指针直到交叉。
char *Reverse(char *s){ // p指向字符串头部 char *p = s ; // q指向字符串尾部 char *q = s ; while(*q) ++q ; q -- ; // 交换并移动指针,直到p和q交叉 while(q > p) { char t = *p ; *p++ = *q ; *q-- = t ; } return s ;}二 用递归的方式,需要给定逆序的区间,调用方法:Reverse(s, 0, strlen(s)) ;
// 对字符串s在区间left和right之间进行逆序,递归法char *Reverse( char *s, int left, int right ){ if(left >= right) return s ; char t = s[left] ; s[left] = s[right] ; s[right] = t ; Reverse(s, left + 1, right - 1) ;}三 非递归法,同样指定逆序区间,和方法一没有本质区别,一个使用指针,一个使用下标。
// 对字符串str在区间left和right之间进行逆序char *Reverse( char *s, int left, int right ){ while( left < right ) { char t = s[left] ; s[left++] = s[right] ; s[right--] = t ; } return s ;}
⑹ 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语言写 字符串逆序输出
逆序输出有很多种,具体的实现方法取决于你题目的要求
1. 如果只是要求逆序输出,那么可以采用类似的方法:
void reverse(char *s)
{
if(*s=='\0')
return;
reverse(s+1);
printf("%c",*s);
}
这种方法在s很长的情况下会一直递归到底,不是很好。
2. 如果需要将字符串整个逆序在函数外面输出,那么可能希望采用返回字符串指针的方式;实现如下:
char * reverse( char* s )
{
static char *p = s+strlen(s)-1; //p是一个静态变量,指向当前递归层处理的字符串尾,而s指向字符串头
if(s < p)
{
char c = *p; //交换头尾字符
*p = *s;
*s = c;
p--; //尾向前挪一个
reverse(s+1); //相当于头向后挪一个
}
return s;
}
3.1 当然,有的时候,并不需要reverse函数本身递归,而是可以借助一些辅助的递归函数,比如说:
void reversehelp(char * head, char * end)
{
if (head < end)
{
char c = *head;
*head = *end;
*end = c;
reversehelp(++head, --end);
}
}
然后在调用时像这样调用:
char * reverse(char * s)
{
char * end = s + strlen(s) - 1;
reversehelp(s, end);
return s;
}
3.2 类似的辅助函数还可以采用一个字符串指针和一个长度参数的方式,如下例:
void reversehelp( char* s, int n )
{
if ( n > 1 )
{
char c = s[n-1];
s[n-1] = s[0];
s[0] = c;
reversehelp( s+1, n-2 );
}
}
然后在调用时如下:
char *reverse(char *s)
{
reversehelp( s, strlen(s) );
return s;
}
⑻ c语言如何实现字符串按位翻转
如果所说的是字符串的反转操作是很方便的,只要使用一个辅助单元就可以实现:
char s[200],i,j,c;
gets(s);
for(j=0;s[j];j++);
for(i=0;i<j;i++,j--)
{c=s[i];s[i]=s[j];s[j]=c;}
puts(s);
⑼ C语言字符串逆转函数
只需要将字符数组的前后数据进行交换就行了。
#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语言中如何实现字符串的反转
#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;
}
两个明显的误解:
char* a="12***"; 这样定义是错误的。这样 a指向字符串常量的指针。而字符串常量是不能改变的。所以停止运行。
c中数组是从0开始编号的。所以字符串最后一个字符是a[len-1];