C語言從1列印到100再列印到1該如何編寫?我只服最後一種寫法!

C語言程式設計俱樂部發表於2020-09-26

            我覺得這是一個送分題,奈何人才太多了,給出了各種古怪的寫法,如果是做專案的話,我比驕建議一些正常的寫法,就是大家都能看得懂的,不要搞什麼花裡胡哨,不過你要是交流的話,既然是交流,我不覺得要多正規,即使你的觀點有問題,我覺得也可以拿出來說說,畢竟是交流,各抒己見,發表自己的觀點是最重要的。

—— 為什麼不建議大家花裡胡哨

        我覺得花裡胡哨之前首先是你基礎非常好了再去花裡胡哨,不要自己很多基礎的東西還搞不清楚就去花裡胡哨。

—— 看這個程式碼,題外話

        看看基礎搞不明白的殺傷有多大。

——————————

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是非常常規的思考方式,所以我看了所有的回答之後,寫了一個常規的程式碼。

—— 程式碼如下:

——————————

——————————

    程式碼輸出:

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 判斷為假後,才結束遞迴,但是遞迴不能無限大,太大了會撐爆棧空間的哦

遞迴的文章

C 語言,你真的懂遞迴了嗎?

比如這樣:

 

再看看下面這個高讚的奇葩寫法:

#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;

}

 

相關文章