当前位置:首页 > > strongerHuang
[导读]我觉得这是一个送分题,奈何知乎人才太多了,给出了各种古怪的写法,如果是做项目的话,我比骄建议一些正常的写法,就是大家都能看得懂的,不要搞什么花里胡哨,不过你要是交流的话,既然是交流,我不觉得要多正规,即使你的观点有问题,我觉得也可以拿出来说说,毕竟是交流,各抒己见,发表自己的观点是最重要的。


转自:嵌入式Linux

我觉得这是一个送分题,奈何知乎人才太多了,给出了各种古怪的写法,如果是做项目的话,我比骄建议一些正常的写法,就是大家都能看得懂的,不要搞什么花里胡哨,不过你要是交流的话,既然是交流,我不觉得要多正规,即使你的观点有问题,我觉得也可以拿出来说说,毕竟是交流,各抒己见,发表自己的观点是最重要的。


---- 为什么不建议大家花里胡哨

我觉得花里胡哨之前首先是你基础非常好了再去花里胡哨,不要自己很多基础的东西还搞不清楚就去花里胡哨。


---- 看这个代码,题外话

看看基础搞不明白的杀伤有多大。

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 with return value 2
请按任意键继续. . .

---- 为什么是 void main ,而不是int main ,题外话

这个是一个知乎留言提到的,很多人也对这个有疑惑,main的写法有几种,有的被认为是正规的,有的被认为是不正规的。

main是一个函数,既然是一个函数,就遵从函数的规则就好。

所以,这样写输出并没有什么问题

#include  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 语言,你真的懂递归了吗?

比如这样

再看看一个高赞的奇葩写法

作者:已注销了
链接:https://www.zhihu.com/question/420856018/answer/1474402510
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 #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;
}


推荐阅读:

FreeRTOS V10.4.0更新了哪些功能?

su、sudo、sudo su、sudo -i使用和区别

百度网盘国际版 Dubox 干净好用,却与国内用户无缘


关注 微信公众号『strongerHuang』,后台回复“1024”查看更多内容,回复“加群”按规则加入技术交流群。


长按前往图中包含的公众号关注

免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

随着现代家庭生活方式不断升级,厨房已不再只是功能空间,而逐渐成为融合审美表达、健康管理与智能体验的重要场域。消费者在关注空间整体性的同时,也对食材储存的安全性、洁净度以及使用便利性提出了更高要求。基于对中国家庭真实使用场...

关键字: 冰箱 嵌入式

在嵌入式系统、工业物联网等各类电子设备中,UART与网口是两种应用广泛的通信接口,前者作为经典的串行通信接口,承担着简单设备互联、调试日志传输等基础任务,后者则专注于高速、远距离的数据交互,是设备接入网络、实现大数据量传...

关键字: 嵌入式 通信接口 网口通讯

在软件开发领域,设计模式被誉为“解决特定问题的最佳实践”,但在嵌入式开发中,它却常常处于“边缘地带”。许多嵌入式工程师职业生涯中可能从未刻意使用过设计模式,甚至认为这些“软件工程理论”与单片机、传感器、实时系统等硬件紧密...

关键字: 嵌入式 设计模式

在居住结构持续演进与消费需求不断升级的背景下,中国家庭厨房正经历从“功能集合”向“系统空间”的深层转变。厨房不再只是烹饪的场所,而逐渐成为融合效率、健康、美学与家庭互动的重要生活空间。基于对这一趋势的长期洞察,西门子家电...

关键字: 嵌入式 蒸玲珑

在物联网设备、工业控制系统和智能家居等嵌入式场景中,轻量级WEB服务器扮演着核心角色。它们不仅需要满足资源受限环境下的性能需求,还需兼顾安全性、可扩展性和开发效率。本文从资源占用、功能特性、适用场景三个维度,对比分析六大...

关键字: 嵌入式 WEB服务器

在嵌入式软件开发工具领域,一场悄然的变革正在发生。随着全球软件行业向订阅制转型,嵌入式软件开发工具的授权模式也迎来了重要调整。市场上的嵌入式软件开发工具基本可以分为三类:商用开发工具,开源开发工具和厂商私有开发工具,其中...

关键字: 嵌入式 MCU RISC-V

在资源受限的嵌入式系统中,传统调试工具(如JTAG)往往成本高昂且占用引脚资源。本文介绍一种基于串口的低成本调试方案,通过自定义协议实现内存数据的实时监控,硬件成本可降低80%以上,特别适用于8/16位MCU开发场景。

关键字: 嵌入式 串口 内存数据

随着国家家电以旧换新补贴政策的持续推进,绿色节能、品质升级正成为越来越多家庭的新年焕新关键词。面对消费者在居住空间、生活效率与健康体验上的多元需求,西门子家电围绕新春焕新节点,正式开启“开门红”焕新季,通过国家补贴与企业...

关键字: 嵌入式 咖啡机 嵌饮机

设计人员通过瑞萨远程板场可在新MCU发布首日免费开始编程和编码

关键字: MCU 嵌入式 电路板
关闭