c語(yǔ)言函數(shù)調(diào)用逆位輸出 c語(yǔ)言逆序輸出

用C語(yǔ)言寫 字符串逆序輸出

逆序輸出有很多種,具體的實(shí)現(xiàn)方法取決于你題目的要求

創(chuàng)新互聯(lián)公司是一家業(yè)務(wù)范圍包括IDC托管業(yè)務(wù),虛擬主機(jī)、主機(jī)租用、主機(jī)托管,四川、重慶、廣東電信服務(wù)器租用,服務(wù)器托管,成都網(wǎng)通服務(wù)器托管,成都服務(wù)器租用,業(yè)務(wù)范圍遍及中國(guó)大陸、港澳臺(tái)以及歐美等多個(gè)國(guó)家及地區(qū)的互聯(lián)網(wǎng)數(shù)據(jù)服務(wù)公司。

1. 如果只是要求逆序輸出,那么可以采用類似的方法:

void reverse(char *s)

{

if(*s=='\0')

return;

reverse(s+1);

printf("%c",*s);

}

這種方法在s很長(zhǎng)的情況下會(huì)一直遞歸到底,不是很好。

2. 如果需要將字符串整個(gè)逆序在函數(shù)外面輸出,那么可能希望采用返回字符串指針的方式;實(shí)現(xiàn)如下:

char * reverse( char* s )

{

static char *p = s+strlen(s)-1; //p是一個(gè)靜態(tài)變量,指向當(dāng)前遞歸層處理的字符串尾,而s指向字符串頭

if(s p)

{

char c = *p; //交換頭尾字符

  *p = *s;

 *s = c;

p--; //尾向前挪一個(gè)

reverse(s+1); //相當(dāng)于頭向后挪一個(gè)

}

return s;

}

3.1 當(dāng)然,有的時(shí)候,并不需要reverse函數(shù)本身遞歸,而是可以借助一些輔助的遞歸函數(shù),比如說(shuō):

void reversehelp(char * head, char * end)

{

if (head end)

{

char c = *head;

*head = *end;

*end = c;

reversehelp(++head, --end);

}

}

然后在調(diào)用時(shí)像這樣調(diào)用:

char * reverse(char * s)

{

char * end = s + strlen(s) - 1;

reversehelp(s, end);

return s;

}

3.2 類似的輔助函數(shù)還可以采用一個(gè)字符串指針和一個(gè)長(zhǎng)度參數(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)用時(shí)如下:

char *reverse(char *s)

{

reversehelp( s, strlen(s) );

return s;

}

C語(yǔ)言,用調(diào)用函數(shù)逆序輸出10個(gè)數(shù)

代碼里有一些問(wèn)題,看注釋。

#includestdio.h

int?nixu?(int?n,int?a[]);

void?main()

{

int?a[10],i;

printf("please?input?10?numbers\n");

for(i=0;?i10;?i++)

scanf("%d",a[i]);????/*數(shù)組10個(gè)元素,最大下標(biāo)只能到9,a[10]越界;另外a[i]才是需要輸入的元素,而不是恒定某一個(gè)元素*/

nixu?(10,?a);

for(i=0;?i10;?i++)????/*輸出數(shù)組同樣也要循環(huán)*/

printf("%d??",a[i]);????/*數(shù)組10個(gè)元素,最大下標(biāo)只能到9,a[10]越界*/

}

int?nixu?(int?n,?int?a[])????/*函數(shù)定義參數(shù)不能和局部變量重名*/

{

int?i,k=(n-1)/2,t;????/*運(yùn)算符/比-優(yōu)先級(jí)高,要加括號(hào)*/

for(i=0;?i=k;?i++)

{????/*逆序過(guò)程只要一重循環(huán)就可以了*/

t=a[i];

a[i]=a[n-i-1];????/*尾部對(duì)應(yīng)的數(shù)組下標(biāo)要找對(duì)*/

a[n-i-1]=t;

}

return?0;????/*返回隨便一個(gè)值就可以,調(diào)用的地方不需要函數(shù)返回值,不能返回?cái)?shù)組首地址*/

}

用C語(yǔ)言, 定義一個(gè)函數(shù),實(shí)現(xiàn)數(shù)組調(diào)用的逆序輸出

你的go 函數(shù) 里有 return k; 在最后的pfintf里執(zhí)行完go函數(shù)的時(shí)候 k=-1(跳出循環(huán)執(zhí)行return k;)被輸出 了。

#includestdio.h

#define N 8

int go(char a[]){

int k;

for(k=N-1;k=0;k--){

printf("%2d",a[k]);

}

return k;

}

main(){

char b[]={3,2,5,1,7,4,9,0};

go(b);

}

改成這樣就可以了。

新聞名稱:c語(yǔ)言函數(shù)調(diào)用逆位輸出 c語(yǔ)言逆序輸出
網(wǎng)站URL:http://muchs.cn/article8/docccip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)App開(kāi)發(fā)、品牌網(wǎng)站制作、動(dòng)態(tài)網(wǎng)站、面包屑導(dǎo)航、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司