再給你補(bǔ)充點(diǎn)知識(shí)如下:getchar 由宏實(shí)現(xiàn):#define getchar() getc(stdin)。
成都創(chuàng)新互聯(lián)制作網(wǎng)站網(wǎng)頁找三站合一網(wǎng)站制作公司,專注于網(wǎng)頁設(shè)計(jì),成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作,網(wǎng)站設(shè)計(jì),企業(yè)網(wǎng)站搭建,網(wǎng)站開發(fā),建網(wǎng)站業(yè)務(wù),680元做網(wǎng)站,已為上千家服務(wù),成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)將一如既往的為我們的客戶提供最優(yōu)質(zhì)的網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷推廣服務(wù)!
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語句來確定整數(shù)是否為負(fù)數(shù),或者使用putchar來打印負(fù)號(hào)。5.調(diào)用一個(gè)函數(shù),如下圖所示。
1、如果只是要求逆序輸出,那么可以采用類似的方法:void reverse(char *s){ if(*s==\0)return;reverse(s+1);printf(%c,*s);} 這種方法在s很長(zhǎng)的情況下會(huì)一直遞歸到底,不是很好。
2、數(shù)組定義完,沒有初始化;系統(tǒng)會(huì)分配一段物理內(nèi)存給數(shù)組,如果不初始化,就會(huì)打印出亂碼,該段內(nèi)存地址有可能之前被使用過。
3、先用strrev庫函數(shù)把整個(gè)字符串倒過來,然后利用漢字編碼為負(fù)數(shù)的特點(diǎn)判斷為漢字的倒序連續(xù)輸出兩個(gè)字符即可達(dá)到目的。
4、( int i=0 ;ij;++i,--j ){ char temp = src[j];src[j] = src[i];src[i] = temp;} return src;} 在主函數(shù)中輸入10個(gè)等長(zhǎng)的字符串。
printf(%c,strchange(str,k-i));str在哪聲明滴?沒有聲明就用,當(dāng)然不行。
反序方法見 下面 函數(shù) void op(char *s). 主函數(shù)是調(diào)用的例子。
采用函數(shù)進(jìn)行字符串逆序輸出,過程為:定義函數(shù),參數(shù)為字符串指針 定義局部變量指針t指向原字符串 移動(dòng)t指針到字符串尾 向移動(dòng)t指針,直到回到原指針頭,輸出各位置字符。
只需將字符串的第一個(gè)元素和最后一個(gè)元素交換,第二個(gè)元素和倒數(shù)第二個(gè)元素交換,直到字符串長(zhǎng)度一半時(shí),就完成倒序了。切記不要全部倒序,不然又恢復(fù)成原字符串了。