轉(zhuǎn)自:嵌入式Linux
我覺得這是一個(gè)送分題,奈何知乎人才太多了,給出了各種古怪的寫法,如果是做項(xiàng)目的話,我比驕建議一些正常的寫法,就是大家都能看得懂的,不要搞什么花里胡哨,不過你要是交流的話,既然是交流,我不覺得要多正規(guī),即使你的觀點(diǎn)有問題,我覺得也可以拿出來說說,畢竟是交流,各抒己見,發(fā)表自己的觀點(diǎn)是最重要的。
---- 為什么不建議大家花里胡哨
我覺得花里胡哨之前首先是你基礎(chǔ)非常好了再去花里胡哨,不要自己很多基礎(chǔ)的東西還搞不清楚就去花里胡哨。
---- 看這個(gè)代碼,題外話
看看基礎(chǔ)搞不明白的殺傷有多大。
voidstart_f(intfirst_start) { chartime_buf[512]; charbuf[512]; if(!first_start) { sprintf(time_buf,"%s",get_time()); intlen=strlen(time_buf); time_buf[len-1]=0; printf("time_buf:%s ",time_buf); } }
這個(gè)是在網(wǎng)上看到的一個(gè)代碼,比較典型的基礎(chǔ)不牢靠,對(duì)strlen 理解不夠。
常規(guī)解題代碼
我覺得對(duì)于這個(gè)題目,使用for是非常常規(guī)的思考方式,所以我看了所有的回答之后,寫了一個(gè)常規(guī)的代碼。
---- 代碼如下
#include"stdio.h" voidmain(void) { inti=0; for(i=1;i<=100;i++) ?{ ??printf("%d?",i); ?} ?for(i=99;i>=1;i--) { printf("%d",i); } }
---- 代碼輸出
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100999897969594939291908988878685848382818079787776757473727170696867666564636261605958575655545352515049484746454443424140393837363534333231302928272625242322212019181716151413121110987654321 -------------------------------- Processexitedafter0.04664secondswithreturnvalue2 請(qǐng)按任意鍵繼續(xù)...
---- 為什么是 void main ,而不是int main ,題外話
這個(gè)是一個(gè)知乎留言提到的,很多人也對(duì)這個(gè)有疑惑,main 的寫法有幾種,有的被認(rèn)為是正規(guī)的,有的被認(rèn)為是不正規(guī)的。
main是一個(gè)函數(shù),既然是一個(gè)函數(shù),就遵從函數(shù)的規(guī)則就好。
所以,這樣寫輸出并沒有什么問題
#include char*main() { printf("hhh "); return(char*)NULL; }
我們還要知道比較常見的幾種
intmain(intargc,char**argv){} intmain(intargc,char*argv[]){} intmain(void){}
---對(duì)于返回值的認(rèn)知
main 函數(shù)是被操作系統(tǒng)調(diào)用的,既然是被操作系統(tǒng)調(diào)用的,操作系統(tǒng)會(huì)判斷函數(shù)的返回值,通過返回值來判斷程序是否正確運(yùn)行,所以main函數(shù)的返回值是有意義的,我示例中的寫法并不規(guī)范。
對(duì)main的解讀
比較玄乎的寫法
#include"stdio.h" voidfun(intn) { if(n<100) ?{ ??printf("%d?",n);? ??fun(n+1); ?}? ?printf("%d?",n); } int?main(void) { ?fun(1); ?return?0; }
---- 程序輸出
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100999897969594939291908988878685848382818079787776757473727170696867666564636261605958575655545352515049484746454443424140393837363534333231302928272625242322212019181716151413121110987654321 -------------------------------- Processexitedafter0.05336secondswithreturnvalue0 請(qǐng)按任意鍵繼續(xù)...
這里涉及到遞歸,如果沒有這個(gè)概念的人,腦子可能彎不過來
大概是這樣執(zhí)行順序的
fun(1) ->fun(2) --->fun(3) ........ ---->fun(99)
---- 把上面的代碼修改下
#include"stdio.h" voidfun(intn) { if(n<100) ?{ ??printf("fun(%d)?",n);? ??fun(n+1); ?}? ?printf("fun(%d)?",n); } int?main(void) { ?fun(1); ?return?0; }
---- 代碼輸出
fun(1)fun(2)fun(3)fun(4)fun(5)fun(6)fun(7)fun(8)fun(9)fun(10)fun(11)fun(12)fun(13)fun(14)fun(15)fun(16)fun(17)fun(18)fun(19)fun(20)fun(21)fun(22)fun(23)fun(24)fun(25)fun(26)fun(27)fun(28)fun(29)fun(30)fun(31)fun(32)fun(33)fun(34)fun(35)fun(36)fun(37)fun(38)fun(39)fun(40)fun(41)fun(42)fun(43)fun(44)fun(45)fun(46)fun(47)fun(48)fun(49)fun(50)fun(51)fun(52)fun(53)fun(54)fun(55)fun(56)fun(57)fun(58)fun(59)fun(60)fun(61)fun(62)fun(63)fun(64)fun(65)fun(66)fun(67)fun(68)fun(69)fun(70)fun(71)fun(72)fun(73)fun(74)fun(75)fun(76)fun(77)fun(78)fun(79)fun(80)fun(81)fun(82)fun(83)fun(84)fun(85)fun(86)fun(87)fun(88)fun(89)fun(90)fun(91)fun(92)fun(93)fun(94)fun(95)fun(96)fun(97)fun(98)fun(99)fun(100)fun(99)fun(98)fun(97)fun(96)fun(95)fun(94)fun(93)fun(92)fun(91)fun(90)fun(89)fun(88)fun(87)fun(86)fun(85)fun(84)fun(83)fun(82)fun(81)fun(80)fun(79)fun(78)fun(77)fun(76)fun(75)fun(74)fun(73)fun(72)fun(71)fun(70)fun(69)fun(68)fun(67)fun(66)fun(65)fun(64)fun(63)fun(62)fun(61)fun(60)fun(59)fun(58)fun(57)fun(56)fun(55)fun(54)fun(53)fun(52)fun(51)fun(50)fun(49)fun(48)fun(47)fun(46)fun(45)fun(44)fun(43)fun(42)fun(41)fun(40)fun(39)fun(38)fun(37)fun(36)fun(35)fun(34)fun(33)fun(32)fun(31)fun(30)fun(29)fun(28)fun(27)fun(26)fun(25)fun(24)fun(23)fun(22)fun(21)fun(20)fun(19)fun(18)fun(17)fun(16)fun(15)fun(14)fun(13)fun(12)fun(11)fun(10)fun(9)fun(8)fun(7)fun(6)fun(5)fun(4)fun(3)fun(2)fun(1)
重點(diǎn)在于只有if 判斷為假后,才結(jié)束遞歸,但是遞歸不能無限大,太大了會(huì)撐爆棧空間的哦
遞歸的文章
C 語言,你真的懂遞歸了嗎?
比如這樣
再看看一個(gè)高贊的奇葩寫法
#include intmain(){ printf("1"); printf(""); printf("2"); printf(""); printf("3"); printf(""); printf("4"); printf(""); printf("5"); printf(""); printf("6"); printf(""); printf("7"); printf(""); printf("8"); printf(""); printf("9"); printf(""); printf("10"); printf(""); printf("11"); printf(""); printf("12"); printf(""); printf("13"); printf(""); printf("14"); printf(""); printf("15"); printf(""); printf("16"); printf(""); printf("17"); printf(""); printf("18"); printf(""); printf("19"); printf(""); printf("20"); printf(""); printf("21"); printf(""); printf("22"); printf(""); printf("23"); printf(""); printf("24"); printf(""); printf("25"); printf(""); printf("26"); printf(""); printf("27"); printf(""); printf("28"); printf(""); printf("29"); printf(""); printf("30"); printf(""); printf("31"); printf(""); printf("32"); printf(""); printf("33"); printf(""); printf("34"); printf(""); printf("35"); printf(""); printf("36"); printf(""); printf("37"); printf(""); printf("38"); printf(""); printf("39"); printf(""); printf("40"); printf(""); printf("41"); printf(""); printf("42"); printf(""); printf("43"); printf(""); printf("44"); printf(""); printf("45"); printf(""); printf("46"); printf(""); printf("47"); printf(""); printf("48"); printf(""); printf("49"); printf(""); printf("50"); printf(""); printf("51"); printf(""); printf("52"); printf(""); printf("53"); printf(""); printf("54"); printf(""); printf("55"); printf(""); printf("56"); printf(""); printf("57"); printf(""); printf("58"); printf(""); printf("59"); printf(""); printf("60"); printf(""); printf("61"); printf(""); printf("62"); printf(""); printf("63"); printf(""); printf("64"); printf(""); printf("65"); printf(""); printf("66"); printf(""); printf("67"); printf(""); printf("68"); printf(""); printf("69"); printf(""); printf("70"); printf(""); printf("71"); printf(""); printf("72"); printf(""); printf("73"); printf(""); printf("74"); printf(""); printf("75"); printf(""); printf("76"); printf(""); printf("77"); printf(""); printf("78"); printf(""); printf("79"); printf(""); printf("80"); printf(""); printf("81"); printf(""); printf("82"); printf(""); printf("83"); printf(""); printf("84"); printf(""); printf("85"); printf(""); printf("86"); printf(""); printf("87"); printf(""); printf("88"); printf(""); printf("89"); printf(""); printf("90"); printf(""); printf("91"); printf(""); printf("92"); printf(""); printf("93"); printf(""); printf("94"); printf(""); printf("95"); printf(""); printf("96"); printf(""); printf("97"); printf(""); printf("98"); printf(""); printf("99"); printf(""); printf("100"); printf(""); printf("99"); printf(""); printf("98"); printf(""); printf("97"); printf(""); printf("96"); printf(""); printf("95"); printf(""); printf("94"); printf(""); printf("93"); printf(""); printf("92"); printf(""); printf("91"); printf(""); printf("90"); printf(""); printf("89"); printf(""); printf("88"); printf(""); printf("87"); printf(""); printf("86"); printf(""); printf("85"); printf(""); printf("84"); printf(""); printf("83"); printf(""); printf("82"); printf(""); printf("81"); printf(""); printf("80"); printf(""); printf("79"); printf(""); printf("78"); printf(""); printf("77"); printf(""); printf("76"); printf(""); printf("75"); printf(""); printf("74"); printf(""); printf("73"); printf(""); printf("72"); printf(""); printf("71"); printf(""); printf("70"); printf(""); printf("69"); printf(""); printf("68"); printf(""); printf("67"); printf(""); printf("66"); printf(""); printf("65"); printf(""); printf("64"); printf(""); printf("63"); printf(""); printf("62"); printf(""); printf("61"); printf(""); printf("60"); printf(""); printf("59"); printf(""); printf("58"); printf(""); printf("57"); printf(""); printf("56"); printf(""); printf("55"); printf(""); printf("54"); printf(""); printf("53"); printf(""); printf("52"); printf(""); printf("51"); printf(""); printf("50"); printf(""); printf("49"); printf(""); printf("48"); printf(""); printf("47"); printf(""); printf("46"); printf(""); printf("45"); printf(""); printf("44"); printf(""); printf("43"); printf(""); printf("42"); printf(""); printf("41"); printf(""); printf("40"); printf(""); printf("39"); printf(""); printf("38"); printf(""); printf("37"); printf(""); printf("36"); printf(""); printf("35"); printf(""); printf("34"); printf(""); printf("33"); printf(""); printf("32"); printf(""); printf("31"); printf(""); printf("30"); printf(""); printf("29"); printf(""); printf("28"); printf(""); printf("27"); printf(""); printf("26"); printf(""); printf("25"); printf(""); printf("24"); printf(""); printf("23"); printf(""); printf("22"); printf(""); printf("21"); printf(""); printf("20"); printf(""); printf("19"); printf(""); printf("18"); printf(""); printf("17"); printf(""); printf("16"); printf(""); printf("15"); printf(""); printf("14"); printf(""); printf("13"); printf(""); printf("12"); printf(""); printf("11"); printf(""); printf("10"); printf(""); printf("9"); printf(""); printf("8"); printf(""); printf("7"); printf(""); printf("6"); printf(""); printf("5"); printf(""); printf("4"); printf(""); printf("3"); printf(""); printf("2"); printf(""); printf("1"); printf(""); return0; }
原文標(biāo)題:c語言各種古怪的寫法
文章出處:【微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
評(píng)論