c語言各種古怪的寫法


點(diǎn)擊「閱讀原文」查看良許原創(chuàng)精品視頻。
點(diǎn)擊「閱讀原文」查看良許原創(chuàng)精品視頻。
我覺得這是一個送分題,奈何知乎人才太多了,給出了各種古怪的寫法,如果是做項目的話,我比驕建議一些正常的寫法,就是大家都能看得懂的,不要搞什么花里胡哨,不過你要是交流的話,既然是交流,我不覺得要多正規(guī),即使你的觀點(diǎn)有問題,我覺得也可以拿出來說說,畢竟是交流,各抒己見,發(fā)表自己的觀點(diǎn)是最重要的。
---- 為什么不建議大家花里胡哨
我覺得花里胡哨之前首先是你基礎(chǔ)非常好了再去花里胡哨,不要自己很多基礎(chǔ)的東西還搞不清楚就去花里胡哨。
---- 看這個代碼,題外話
看看基礎(chǔ)搞不明白的殺傷有多大。
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);
?}
}
這個是在網(wǎng)上看到的一個代碼,比較典型的基礎(chǔ)不牢靠,對strlen 理解不夠。
常規(guī)解題代碼
我覺得對于這個題目,使用for是非常常規(guī)的思考方式,所以我看了所有的回答之后,寫了一個常規(guī)的代碼。
---- 代碼如下
#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
請按任意鍵繼續(xù).?.?.
---- 為什么是 void main ,而不是int main ,題外話
這個是一個知乎留言提到的,很多人也對這個有疑惑,main 的寫法有幾種,有的被認(rèn)為是正規(guī)的,有的被認(rèn)為是不正規(guī)的。
main是一個函數(shù),既然是一個函數(shù),就遵從函數(shù)的規(guī)則就好。
所以,這樣寫輸出并沒有什么問題
#include?
char?*?main()
{
?printf("hhh\n");?
????return?(char?*?)NULL;
}
我們還要知道比較常見的幾種
int?main(int?argc,char?**argv){}
int?main(int?argc,char?*argv[]){}
int?main(void){}
---對于返回值的認(rèn)知
main 函數(shù)是被操作系統(tǒng)調(diào)用的,既然是被操作系統(tǒng)調(diào)用的,操作系統(tǒng)會判斷函數(shù)的返回值,通過返回值來判斷程序是否正確運(yùn)行,所以main函數(shù)的返回值是有意義的,我示例中的寫法并不規(guī)范。
對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
請按任意鍵繼續(xù).?.?.
這里涉及到遞歸,如果沒有這個概念的人,腦子可能彎不過來
大概是這樣執(zhí)行順序的
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)
重點(diǎn)在于只有if 判斷為假后,才結(jié)束遞歸,但是遞歸不能無限大,太大了會撐爆棧空間的哦
遞歸的文章
比如這樣

再看看一個高贊的奇葩寫法
作者:已注銷了
鏈接:https://www.zhihu.com/question/420856018/answer/1474402510
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
#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;
}
推薦閱讀:
5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機(jī),樹莓派,等等。在公眾號內(nèi)回復(fù)「1024」,即可免費(fèi)獲取!!
