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