反序方法見 下面 函數(shù) void op(char *s). 主函數(shù)是調(diào)用的例子。
成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)提供從項(xiàng)目策劃、軟件開發(fā),軟件安全維護(hù)、網(wǎng)站優(yōu)化(SEO)、網(wǎng)站分析、效果評估等整套的建站服務(wù),主營業(yè)務(wù)為成都網(wǎng)站建設(shè)、成都做網(wǎng)站,重慶APP軟件開發(fā)以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。成都創(chuàng)新互聯(lián)公司深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
#include stdio.h
void op(char *s){
int i,k;
char c;
k = strlen(s);
for (i=0;ik/2;i++){c=s[i];s[i]=s[k-i-1];s[k-i-1]=c;};
};
int main()
{
char s[200];
printf("input one line string:\n");
gets(s);
op(s);
printf("%s\n",s);
return 0;
}
輸入:abc123
輸出:321cba
只需將字符串的第一個元素和最后一個元素交換,第二個元素和倒數(shù)第二個元素交換,直到字符串長度一半時,就完成倒序了。切記不要全部倒序,不然又恢復(fù)成原字符串了。
#include?stdio.h
#include?string.h
//?反序字符串x并返回
char*?reverse_string(char?*x)
{
int?len?=?strlen(x);
int?i,?n?=?len?/?2;
char?tem;
//?第一個和最后一個交換,第二個和倒數(shù)第二個交換
//?這樣就只用交換一半
for?(i?=?0;?i?=?n;?i++)
{
tem?=?x[i];
x[i]?=?x[len?-?1?-?i];
x[len?-?1?-?i]?=?tem;
}
return?x;
}
int?main()
{
char?str[]?=?"0123456789";
printf("reverse?string?:?%s\n",?reverse_string(str));
return?0;
}
#include stdio.h
#include string.h
void input(char st[]);//定義輸入函數(shù)
void reverse(char st[]);//定義反序函數(shù)
int main()
{
char s[20];
input(s);//調(diào)用輸入函數(shù)
printf("Original string: %s\n", s);//輸出原字符串
reverse(s);//調(diào)用反序函數(shù)
printf("New string: %s\n", s);//輸出反序后的字符串
return 0;
}
void input(char st[])
{
printf("Please enter string: ");
gets(st);
}
//反序函數(shù)
void reverse(char st[])
{
int n=strlen(st);
for (int i=0, j=n-1, t; i(n/2); t=st[i], st[i]=st[j], st[j]=t, i++, j--);
}
擴(kuò)展資料:
gets()用法:
1、gets() 函數(shù)是從鍵盤輸入字符串,該函數(shù)只有一個參數(shù)。參數(shù)類型為 char* 型,即 str 可以是一個字符指針變量名,也可以是一個字符數(shù)組名。打開編輯器,新建一個c語言文件,引入標(biāo)準(zhǔn)庫并新建主函數(shù):
2、gets() 函數(shù)的功能是從輸入緩沖區(qū)中讀取一個字符串存儲到字符指針變量 str 所指向的內(nèi)存空間,這里的程序是用gets函數(shù)輸入字符串,可以看到不像scanf那樣需要使用%號,gets函數(shù)中直接傳入字符串即可:
3、最后運(yùn)行下程序,輸入“i love you”,可以看到gets函數(shù)可以直接輸出空格,而scanf函數(shù)輸出空格則需要使用轉(zhuǎn)義字符實(shí)現(xiàn),因此gets函數(shù)的使用要比scanf簡潔的多。以上就是gets函數(shù)使用方法的演示:
#include?"stdio.h"
#include?"string.h"
void?strReverseB(char?*pstr)
{
int?length=strlen(pstr);
char?tmp;
int?i;
for(i=0;ilength/2;i++)
{
tmp=pstr[i];
pstr[i]=pstr[length-1-i];
pstr[length-1-i]=tmp;
}
}
int?main()
{
char?str[100]={0};
FILE?*fp;
if((fp=fopen("Test.txt","w"))==NULL)
{
printf("File?open?failed!\n");
return?1;
}
printf("Please?input?a?string:");
gets(str);
strReverseB(str);
printf("Output:%s\n",str);
fprintf(fp,"%s",str);
fclose(fp);
}
結(jié)果存到了Test.txt文件中:
#include stdio.h
int main()
{ ?int len,i;
char str[100];
gets(str);
len=strlen(str);
for(i=len-1;i=0;i--)
printf("%c",str[i]);
return 0;
}
拓展資料
C語言是一門通用計(jì)算機(jī)編程語言,應(yīng)用廣泛。C語言的設(shè)計(jì)目標(biāo)是提供一種能以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標(biāo)準(zhǔn)規(guī)格寫出的C語言程序可在許多電腦平臺上進(jìn)行編譯,甚至包含一些嵌入式處理器(單片機(jī)或稱MCU)以及超級電腦等作業(yè)平臺。
逆序輸出有很多種,具體的實(shí)現(xiàn)方法取決于你題目的要求
1. 如果只是要求逆序輸出,那么可以采用類似的方法:
void reverse(char *s)
{
if(*s=='\0')
return;
reverse(s+1);
printf("%c",*s);
}
這種方法在s很長的情況下會一直遞歸到底,不是很好。
2. 如果需要將字符串整個逆序在函數(shù)外面輸出,那么可能希望采用返回字符串指針的方式;實(shí)現(xiàn)如下:
char * reverse( char* s )
{
static char *p = s+strlen(s)-1; //p是一個靜態(tài)變量,指向當(dāng)前遞歸層處理的字符串尾,而s指向字符串頭
if(s p)
{
char c = *p; //交換頭尾字符
*p = *s;
*s = c;
p--; //尾向前挪一個
reverse(s+1); //相當(dāng)于頭向后挪一個
}
return s;
}
3.1 當(dāng)然,有的時候,并不需要reverse函數(shù)本身遞歸,而是可以借助一些輔助的遞歸函數(shù),比如說:
void reversehelp(char * head, char * end)
{
if (head end)
{
char c = *head;
*head = *end;
*end = c;
reversehelp(++head, --end);
}
}
然后在調(diào)用時像這樣調(diào)用:
char * reverse(char * s)
{
char * end = s + strlen(s) - 1;
reversehelp(s, end);
return s;
}
3.2 類似的輔助函數(shù)還可以采用一個字符串指針和一個長度參數(shù)的方式,如下例:
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 );
}
}
然后在調(diào)用時如下:
char *reverse(char *s)
{
reversehelp( s, strlen(s) );
return s;
}