我覺得這是一個送分題,奈何人才太多了,給出了各種古怪的寫法,如果是做項目的話,我比驕建議一些正常的寫法,就是大家都能看得懂的,不要搞什么花里胡哨,不過你要是交流的話,既然是交流,我不覺得要多正規,即使你的觀點有問題,我覺得也可以拿出來說說,畢竟是交流,各抒己見,發表自己的觀點是最重要的。
—— 為什么不建議大家花里胡哨
我覺得花里胡哨之前首先是你基礎非常好了再去花里胡哨,不要自己很多基礎的東西還搞不清楚就去花里胡哨。
—— 看這個代碼,題外話
看看基礎搞不明白的殺傷有多大。
——————————
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\n",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 withreturnvalue 2
請按任意鍵繼續. . .
—— 為什么是 void main ,而不是Int main ,題外話
這個是一個留言提到的,很多人也對這個有疑惑,main 的寫法有幾種,有的被認為是正規的,有的被認為是不正規的。
main是一個函數,既然是一個函數,就遵從函數的規則就好。
所以,這樣寫輸出並沒有什么問題
——————————
#include <stdio.h> char * main() { printf("hhh\n"); 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 判斷為假后,才結束遞歸,但是遞歸不能無限大,太大了會撐爆棧空間的
再看看下面這個高贊的奇葩寫法:
#include <stdio.h> 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; }
#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 判斷為假后,才結束遞歸,但是遞歸不能無限大,太大了會撐爆棧空間的哦 遞歸的文章 C 語言,你真的懂遞歸了嗎? 比如這樣:
