當前位置:首頁 » 編程語言 » 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判斷條件與循環條件不正確
已經做了修改,看符合要求不,不行的話,再說!!!
又做了修改了,看符合要求不??
不會吧,我調試通過還運行了!!不然怎麼會發上來啊!!至於演算法問題我給注釋吧,你看看!!