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\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;
}
相關文章
- log4j.properties 列印到控制檯 寫法
- 新學一種c語言寫法C語言
- 如何用GO語言編寫快取服務?Go快取
- C語言 編寫線段樹C語言
- 易語言帶陣列json的編寫方法陣列JSON
- 手寫程式語言-如何為 GScript 編寫標準庫
- 手機寫作業系統之 使用C語言編寫核心作業系統C語言
- 實驗1 C語言輸入輸出和簡單程式編寫C語言
- Shell編寫,1到100的和。
- 從 0 到 1 再到 100, 搭建、編寫、構建一個前端專案前端
- 陣列分組chunk的一種寫法陣列
- 用Java寫編譯器(1)- 詞法和語法分析Java編譯語法分析
- 機器語言編寫helloworld
- Cython,一個簡化 Python 編寫 C 擴充套件的語言Python套件
- 教你在 C 語言上編寫自己的協程
- 使用C語言編寫貪食蛇程式原始碼C語言原始碼
- 用C語言編寫小遊戲——“井字棋”C語言遊戲
- 實驗1_C語言輸入輸出和簡單程式編寫C語言
- C語言-檔案讀寫C語言
- (2)verilog與Systemverilog兩種語言編寫打兩拍
- 編譯warp,d語言寫的c/c++前處理器.編譯C++
- Keepalived 2.0.14 釋出,C 語言編寫的路由軟體路由
- 使用Go語言從零編寫PoS區塊鏈(譯)Go區塊鏈
- 9 SystemVerilog語言編寫SPI接收
- MyBatis實戰:如何將拼接的SQL列印到日誌MyBatisSQL
- C#/VB.NET 新增多行文字水印到Word文件C#
- CSS,我可以寫 if/else 語法了?CSS
- C語言爬蟲程式編寫的爬取APP通用模板C語言爬蟲APP
- C語言編寫作業系統有什麼好處C語言作業系統
- 用 C 語言編寫多程式 Web 伺服器【粗暴版】Web伺服器
- C語言:排列陣列的三種方法:冒泡法、選擇法、插入法C語言陣列
- 從0到1編寫一個指令碼引擎指令碼
- C語言基礎-1、陣列C語言陣列
- 我們應該如何編寫高質量的前端程式碼前端
- golang中一種不常見的switch語句寫法Golang
- 驚呆了,老外竟然用50種程式語言寫“Hello,Word!”,我服了...
- 用C語言寫strcat、strcpy、strlen、strcmpC語言
- 應該是最後一次創業了,我們就寫個日記吧 20221106創業