转自:嵌入式Linux
我觉得这是一个送分题,奈何知乎人才太多了,给出了各种古怪的写法,如果是做项目的话,我比骄建议一些正常的写法,就是大家都能看得懂的,不要搞什么花里胡哨,不过你要是交流的话,既然是交流,我不觉得要多正规,即使你的观点有问题,我觉得也可以拿出来说说,毕竟是交流,各抒己见,发表自己的观点是最重要的。
---- 为什么不建议大家花里胡哨
我觉得花里胡哨之前首先是你基础非常好了再去花里胡哨,不要自己很多基础的东西还搞不清楚就去花里胡哨。
---- 看这个代码,题外话
看看基础搞不明白的杀伤有多大。
voidstart_f(intfirst_start) { chartime_buf[512]; charbuf[512]; if(!first_start) { sprintf(time_buf,"%s",get_time()); intlen=strlen(time_buf); time_buf[len-1]=0; printf("time_buf:%s ",time_buf); } }
这个是在网上看到的一个代码,比较典型的基础不牢靠,对strlen 理解不够。
常规解题代码
我觉得对于这个题目,使用for是非常常规的思考方式,所以我看了所有的回答之后,写了一个常规的代码。
---- 代码如下
#include"stdio.h" voidmain(void) { inti=0; for(i=1;i<=100;i++) { printf("%d ",i); } for(i=99;i>=1;i--) { printf("%d",i); } }
---- 代码输出
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100999897969594939291908988878685848382818079787776757473727170696867666564636261605958575655545352515049484746454443424140393837363534333231302928272625242322212019181716151413121110987654321 -------------------------------- Processexitedafter0.04664secondswithreturnvalue2 请按任意键继续...
---- 为什么是 void main ,而不是int main ,题外话
这个是一个知乎留言提到的,很多人也对这个有疑惑,main 的写法有几种,有的被认为是正规的,有的被认为是不正规的。
main是一个函数,既然是一个函数,就遵从函数的规则就好。
所以,这样写输出并没有什么问题
#include char*main() { printf("hhh "); return(char*)NULL; }
我们还要知道比较常见的几种
intmain(intargc,char**argv){} intmain(intargc,char*argv[]){} intmain(void){}
---对于返回值的认知
main 函数是被操作系统调用的,既然是被操作系统调用的,操作系统会判断函数的返回值,通过返回值来判断程序是否正确运行,所以main函数的返回值是有意义的,我示例中的写法并不规范。
对main的解读
比较玄乎的写法
#include"stdio.h" voidfun(intn) { if(n<100) { printf("%d ",n); fun(n+1); } printf("%d ",n); } int main(void) { fun(1); return 0; }
---- 程序输出
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100999897969594939291908988878685848382818079787776757473727170696867666564636261605958575655545352515049484746454443424140393837363534333231302928272625242322212019181716151413121110987654321 -------------------------------- Processexitedafter0.05336secondswithreturnvalue0 请按任意键继续...
这里涉及到递归,如果没有这个概念的人,脑子可能弯不过来
大概是这样执行顺序的
fun(1) ->fun(2) --->fun(3) ........ ---->fun(99)
---- 把上面的代码修改下
#include"stdio.h" voidfun(intn) { 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 intmain(){ 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(""); return0; }
原文标题:c语言各种古怪的写法
文章出处:【微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。
责任编辑:haq
评论