C語言從1打印到100再打印到1,該如何編寫?
我覺得這是一個送分題,奈何知乎人才太多了,給出了各種古怪的寫法。如果是做項目的話,我比較建議一些正常的寫法,就是大家都能看得懂的,不要搞什么花里胡哨。不過要是交流的話,既然是交流,我不覺得要多正規,即使你的觀點有問題,我覺得也可以拿出來說說,畢竟是交流,各抒己見,發表自己的觀點是最重要的。
為什么不建議大家花里胡哨?
我覺得花里胡哨之前首先是你基礎非常好了再去花里胡哨,不要自己很多基礎的東西還搞不清楚就去花里胡哨。
先來看下這個代碼:
看看基礎搞不明白的殺傷有多大。
?
void?start_f(int?first_start) { ?char?time_buf[512]; ?char?buf[512]; ?if(!first_start) ?{ ??sprintf(time_buf,"%s",get_time()); ??int?len?=?strlen(time_buf); ??time_buf[len?-1?]?=?0; ??printf("time_buf:%s ",time_buf); ?} }
?
這個是在網上看到的一個代碼,比較典型的基礎不牢靠,對strlen 理解不夠。
常規解題代碼
我覺得對于這個題目,使用for是非常常規的思考方式,所以我看了所有的回答之后,寫了一個常規的代碼。
代碼如下:
?
#include?"stdio.h" void?main(void) { ?int?i=0; ?for(i=1;i<=100;i++) ?{ ??printf("%d?",i); ?} ?for(i=99;i>=1;i--) ?{ ??printf("%d?",i); ?} }?
?
代碼輸出:
?
1?2?3?4?5?6?7?8?9?10?11?12?13?14?15?16?17?18?19?20?21?22?23?24?25?26?27?28?29?30?31?32?33?34?35?36?37?38?39?40?41?42?43?44?45?46?47?48?49?50?51?52?53?54?55?56?57?58?59?60?61?62?63?64?65?66?67?68?69?70?71?72?73?74?75?76?77?78?79?80?81?82?83?84?85?86?87?88?89?90?91?92?93?94?95?96?97?98?99?100?99?98?97?96?95?94?93?92?91?90?89?88?87?86?85?84?83?82?81?80?79?78?77?76?75?74?73?72?71?70?69?68?67?66?65?64?63?62?61?60?59?58?57?56?55?54?53?52?51?50?49?48?47?46?45?44?43?42?41?40?39?38?37?36?35?34?33?32?31?30?29?28?27?26?25?24?23?22?21?20?19?18?17?16?15?14?13?12?11?10?9?8?7?6?5?4?3?2?1 -------------------------------- Process?exited?after?0.04664?seconds?with?return?value?2 請按任意鍵繼續.?.?.
?
為什么是 void main ,而不是Int main?
這個是一個知乎留言提到的,很多人也對這個有疑惑,main 的寫法有幾種,有的被認為是正規的,有的被認為是不正規的。
main是一個函數,既然是一個函數,就遵從函數的規則就好。
所以,這樣寫輸出并沒有什么問題。
?
#include?char?*?main() { ?printf("hhh ");? ????return?(char?*?)NULL; }
?
我們還要知道比較常見的幾種:
?
int?main(int?argc,char?**argv){} int?main(int?argc,char?*argv[]){} int?main(void){}
?
對于返回值的認知:
main 函數是被操作系統調用的,既然是被操作系統調用的,操作系統會判斷函數的返回值,通過返回值來判斷程序是否正確運行,所以main函數的返回值是有意義的,我示例中的寫法并不規范。
對main的解讀:
比較玄乎的寫法:
?
#include?"stdio.h" void?fun(int?n) { ?if(n<100) ?{ ??printf("%d?",n);? ??fun(n+1); ?}? ?printf("%d?",n); } int?main(void) { ?fun(1); ?return?0; }
?
程序輸出:
?
1?2?3?4?5?6?7?8?9?10?11?12?13?14?15?16?17?18?19?20?21?22?23?24?25?26?27?28?29?30?31?32?33?34?35?36?37?38?39?40?41?42?43?44?45?46?47?48?49?50?51?52?53?54?55?56?57?58?59?60?61?62?63?64?65?66?67?68?69?70?71?72?73?74?75?76?77?78?79?80?81?82?83?84?85?86?87?88?89?90?91?92?93?94?95?96?97?98?99?100?99?98?97?96?95?94?93?92?91?90?89?88?87?86?85?84?83?82?81?80?79?78?77?76?75?74?73?72?71?70?69?68?67?66?65?64?63?62?61?60?59?58?57?56?55?54?53?52?51?50?49?48?47?46?45?44?43?42?41?40?39?38?37?36?35?34?33?32?31?30?29?28?27?26?25?24?23?22?21?20?19?18?17?16?15?14?13?12?11?10?9?8?7?6?5?4?3?2?1 -------------------------------- Process?exited?after?0.05336?seconds?with?return?value?0 請按任意鍵繼續.?.?.
?
這里涉及到遞歸,如果沒有這個概念的人,腦子可能彎不過來~
大概是這樣執行順序的:
?
fun(1) ->fun(2) --->fun(3) ........ ---->fun(99)
?
把上面的代碼修改下:
?
#include?"stdio.h" void?fun(int?n) { ?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)
?
本文的重點在于,只有if 判斷為假后,才結束遞歸,但遞歸不能無限大,太大了會撐爆棧空間的哦~
比如這樣:
再看一個高贊的奇葩寫法:
?
作者:已注銷了 鏈接:https://www.zhihu.com/question/420856018/answer/1474402510 來源:知乎 著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。 #include?int?main()?{ ?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("?"); ?return?0; }
?
?
評論
查看更多