可以設(shè)置一個(gè)中間值,讓兩端的字符相交換,然后前頭的向后移動(dòng)一位,后頭的向前移動(dòng)一位。當(dāng)前頭的變量大于中間值時(shí)。程序停止執(zhí)行。
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供古丈網(wǎng)站建設(shè)、古丈做網(wǎng)站、古丈網(wǎng)站設(shè)計(jì)、古丈網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、古丈企業(yè)網(wǎng)站模板建站服務(wù),十年古丈做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
這就要求你必須為yuan函數(shù)傳遞個(gè)字符串參數(shù)a;然后就是翻轉(zhuǎn),但是翻轉(zhuǎn)的字符串不會(huì)超出原字符串的長(zhǎng)度,故而可設(shè)計(jì)用它自身將翻轉(zhuǎn)值帶出。
void fan(char *str1)并將main()中的聲明改為 void fan(char *str1);并且,fan()函數(shù)中for(i=0,j=t-1;j=0;i++,j--)中間的j = 0是賦值,不是判定,且for語(yǔ)句的中間表達(dá)式是該循環(huán),不結(jié)束的條件。
( int i=0 ;ij;++i,--j ){ char temp = src[j];src[j] = src[i];src[i] = temp;} return src;} 在主函數(shù)中輸入10個(gè)等長(zhǎng)的字符串。
reverse(s+1);printf(%c,*s);} 這種方法在s很長(zhǎng)的情況下會(huì)一直遞歸到底,不是很好。
即輸入1234,輸出4321,就可以采用類似的方式:void reverse_int_output(int a){ char buf[20]; sprintf(buf, %d, a);//將a轉(zhuǎn)為字符串 reverse_output_str(buf);//調(diào)用剛才的函數(shù)反序輸出。
反序字符串,只需要將首尾字符依次調(diào)換即可。
再給你補(bǔ)充點(diǎn)知識(shí)如下:getchar 由宏實(shí)現(xiàn):#define getchar() getc(stdin)。
printf(%c , i);fa(i+1);} } void fb(int i) { if(i = a) { printf(%c , i);fb(i-1);} } 題目的大致程序是這樣的。用遞歸來寫程序,首先要注意,什么是遞歸,如何寫遞歸。
程序沒問題的 , 我想你是在輸入時(shí)加了空格了吧,getchar()和putchar()函數(shù)會(huì)把空格也當(dāng)作字符輸入存儲(chǔ)的,所以在輸入1 2 3的時(shí)候就已經(jīng)達(dá)到5個(gè)字符了,你可以試試把程序中的5改成9試試,那就應(yīng)該沒問題了。
問題分析:要把整數(shù)逐位輸出,無論正序還是反序,都需要將各個(gè)位分離。在C中的做法就是,通過對(duì)10取余,取出個(gè)位,然后通過除以10,起到“移位”的效果。
1.創(chuàng)建一個(gè)新的項(xiàng)目和。c文件,輸入頭和主要功能。2.聲明調(diào)用的函數(shù)返回并定義變量類型。3.輸入一個(gè)整數(shù),如下圖所示。4.使用if語(yǔ)句來確定整數(shù)是否為負(fù)數(shù),或者使用putchar來打印負(fù)號(hào)。5.調(diào)用一個(gè)函數(shù),如下圖所示。
{ if(*s==\0)return;reverse(s+1);printf(%c,*s);} 這種方法在s很長(zhǎng)的情況下會(huì)一直遞歸到底,不是很好。