1. c语言编程题:颠倒字符串
#include<stdio.h>
#defineN20
voidinvert(char*s){char*p,*q,c;
p=q=s;while(*q)q++;q--;//p指向首字符,q指向尾字符
while(p<q){c=*p;*p=*q;*q=c;p++;q--;}
}
voidmain(){chars[N][256];inti,n;
scanf("%d",&n);for(i=0;i<n;i++)gets(s[i]);
for(i=0;i<n;i++)invert(s[i]);
for(i=0;i<n;i++)printf("%s ",s[i]);
}
2. 用c语言将一组字符串前后颠倒
有人已经回答过:
http://..com/question/423482939587489732.html
代码如下:
void fun(char*s)
{
int i,j=0,n;
char t[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]='\0';
}
3. C语言字符串数组反转相关的问题
c语言的问题字符串反转可以使用下列两种方法:
使用Array.Reverse方法
对于字符串反转,我们可以使用.NET类库自带的Array.Reverse方法
public
static
string
ReverseByArray(string
original)
{
char[]
c
=
original.ToCharArray();
Array.Reverse(c);
return
new
string(c);
}
可以使用栈后进先出的特性来对数组进行反转。先将数组所有元素压入栈,然后再取出,顺序很自然地就与原先相反了。
public
static
string
ReverseByStack(this
string
original)
{
Stack<char>
stack
=
new
Stack<char>();
foreach
(char
ch
in
original)
{
stack.Push(ch);
}
char[]
c
=
new
char[original.Length];
for
(int
i
=
0;
i
<
original.Length;
i++)
{
c[i]
=
stack.Pop();
}
return
new
string(c);
}
4. 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];
5. C语言实现字符串单词反转
int reverse(char *str, int begin, int end)
{
int result = 0;
if(begin < end)
{
result = 1;
return result;
}
char tmp;
while(begin<end)
{
tmp = str[begin];
str[begin] = str[end];
str[end] = str[begin];
end--;
begin++;
}
return result;
}
int main()
{
int begin,end =0
char * str = "i am an handsome boy";
end = strlen(str) -1;
reverse(str, 0, end);
end = 0;
while (str[end] != '\0')
{
while(str[end] != ' ' && str[end] != '\0')
{
end ++;
}
reverse(str, begin, end-1);
while(str[end] == ' ' && str[end] != '\0')
{
end ++;
}
begin = end;
}
printf(str);
return 0 ;
}
6. 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;
}
7. 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;
}
8. 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;
}
9. 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;
}