百科问答小站 logo
百科问答小站 font logo



如何智能地在每个数字中间加一个「,」? 第1页

  

user avatar   zorrolang 网友的相关建议: 
      

这个问题不知道为什么推给我好多次,不知道为什么大家对这个问题会表现出热忱。

如何智能的在每个数字中间加一个',',头尾部都没有',',用c语言实现
不用if
例如:
输入:
a[6]={1,2,3,4,5,6}
输出:1,2,3,4,5,6

我实在不知道这个讨论的意义在哪。讨论数据处理方式的第一个前提应该是数据源,即数据的组织和输入方式/格式,不同的源数据组织方式肯定有不同的优化处理方式。所以这个问题如果不按照“例如”给出的例子来说,就丝毫没有可以说的具体点。而如果按照“例如”里的例子来说,又确实没太多说的,无非是一个C语言最最基本语法的“使用比拼”(当然如果你非要绕一个老大的弯子也不是不可以),而这种“比拼”甚至都没有类似下面这种基础问题更有可说的地方:

我一直的观点就是(不针对任何个人),初学者学完语法后就接着往下学,不要总在语法这玩花,继续学习计算机科学的知识,然后用语言到具体的计算机科学的问题上去玩。想通过花哨的语法来展现自己实力的行为并不成熟。

为避免又被举报答非所问,如下:

       #include <stdio.h>  int main(void) {         int a[6]={1,2,3,4,5,6};         int i;          printf("%d", a[0]);         for(i=1; i<sizeof(a)/sizeof(int); i++)                 printf(", %d", a[i]);         printf("
");          return 0; }     

执行结果:

       $ gcc -o mytest mytest.c -Wall $ ./mytest 1, 2, 3, 4, 5, 6     

举一个例子来说明一下什么叫钻牛角尖式的扣语法。下述例子并不针对个人,下面只是我与一个经常问我问题的一个小同学的一段对话,抛开指向性,仅作为一个例子。

很多初学者的第一个误解就是:能用越少的行或越不容易一眼看懂的写法写出的程序就越牛。很多人为了钻研此道,在根本不了解编译器的情况下,就像是要测试编译器一样,不惜一切代价挑战编译器的语法极限。比如下面这个:

       printf("%d", (a!=0)&&(a!=1)?exit(0):NULL);     

可以用匪夷所思来形容,这简直不知道是在脑子里构造了多少行语法后,再使劲压缩合并出来的“怪胎”。本来很简单很普通的几个逻辑,非想要想办法搞成“高深莫测”的样子。

接着,在我说exit(0)没有返回值后,又开始想通过return 0来替换exit(0),他可能是心想“return 0不就是返回0的意思么,这回应该有返回值了”。结果当然还是不行,不过好在这样他能理解三目运算符需要的是“表达式”,只是到底“表达式”的定义是什么,不知道他真正理解了没有。

最后的最后,在实在没有别的可“钻”的时候,针对上了a!=0&&a!=1的“优化和简化”,这就越少行数越牛的价值观的变相体现——越少的字符就越牛。其实在没有更多场景说明的情况下,a!=0&&a!=1这种写法已经没有什么可诟病的了,足够清晰,且一目了然。不知道为什么看到大家都能一眼看懂的语句就觉得“不够高级”,就非得觉得绕的弯越多越高级。就好象觉得写a=a+b的就low爆了,写a+=b的B格就上来了似的。

初学者研究语法本身无可厚非,熟练掌握编程语言语法是使用其编程的基本需要。但是这不代表你要陷进语言语法的坑里不出来了,抠一些极限语法的字眼,但是却又不研究编译原理。我们学习编程语言的主要目的是为了解决实际的问题,比如驱动设备、通信协议、图像处理、数据管理、任务调度、算法等等等等,而不是比谁的语法用的刁钻。




  

相关话题

  视频RAM与IO内存映射的问题,大家可以指导一下吗? 
  C语言编译器是如何实现指针+1这样的一个机制? 
  C 语言线程间怎么通信? 
  为什么C语言100*1.05=104? 
  在c语言当中,for循环,for(i=0;i<10;++i)与for(i=0;i++<10;)啥区别? 
  面向对象程序设计比传统的面向过程程序设计更有什么好处? 
  C语言题目,字符型输入如何使用switch? 
  C语言编译器是如何实现指针+1这样的一个机制? 
  大学c语言学习的考题中,故意用相同变量名来命名形参实参,局部变量和全局变量让学生区分,有实际意义吗? 
  C语言初学者该怎样去更好的学习C语言? 

前一个讨论
为什么C语言中主函数main后面有个()?
下一个讨论
怎样背英语单词才高效?





© 2024-09-28 - tinynew.org. All Rights Reserved.
© 2024-09-28 - tinynew.org. 保留所有权利