user-0 提问: [面试题] 用一句C语言实现 unsigned int 数字的倒序输出....

回复:
user: user-1
content: 引用 15 楼 u010030181 的回复:[quote=引用 14 楼 binaryhead 的回复:] 说说我对你的那个一行语句对楼主问题实现的感受：的确漂亮，利用了逗号表达式，简洁实现！但面试官问题亮点也就是逗号表达式这一点上。我上面的效率本意是想说，涉及到输出操作（比如printf），一般思路都是在缓冲区中先准备，最后一次性输出，既可提高效率，也做到可控。我已经有缓冲区准备的思维定势了（代码就说明问题），你纠正了我的这种思维定势，谢谢你。最后要说，钻牛角尖的习惯绝对不是一无是处，但请注意时机和场合。 虽然我测试了很多数据，没出现那种情况，但确实是可能会造成数组的越界……虽然一开始考虑了边界的问题，但写着写着就忘记了……当然最终的结果就是没考虑！我一直都比较赞同你的说法，只是你的用词态度以及说一个问题时又把另一个问题扯进来表示反感！正如这个面试题，我也赞同这是一个垃圾题目，但你把没答案，说的那么理当气壮，我就觉得不舒服了，后来答案有了又说效率的问题，我就更不爽了，一个面试题，有可能考你效率，也可能仅仅考你基础知识点，还有可能两个都要又或者其他的方面，但是不可能在短时间内，所有的东西都整合起来，而且就算给你时间，也不一定能整合起来……鱼和熊掌还不得兼……跟帖这么多，无非就是想表明：在没有完全把握的情况下，多用些maybe、Possible…少些must、should……自己的态度怎么样也会有相应的态度回应……好了，就此告一段落……革命根本就没成功，大家均需努力……[/quote] 呵呵，就此告一段落当然好啊，回顾一下前面你、我的跟贴，透露出的技术以外因素，明眼人一看就透亮了。但作为技术人员，鉴于对你那句“XX的前提是能实现应有的功能！！！”模式句，我印象深刻，所以还请把你质疑我的“二进制转十进制”例程完成，不谈效率，尽管你对最后的那个BufSize参数也不爽。谈及效率，经常离不开优化，而《Unix编程艺术》上的“不成熟的优化是程序设计中的万恶之源”的提醒，是不能忽视的。

user: user-1
content: 一提效率就一定要往二进制的极端上扯，我才是要呵呵了。汇编完全不具有跨CPU移植性，C的移植性如何？所以问题在哪里？问题是：保持一定的可复用性、可维护性（包括可读性）基础上谈效率才有实际意义。 我也分析了我那个转换程序最后插入'\0'时用循环的必要性，当时权衡了可读性和效率实现，即使64位整形，循环的次数也不过20次左右。如果你有兴趣钻研，不妨汇编debug一下，你的printf("%d\t")一次，大约是多少条指令数量级。  至于你说的”效率的前提是实现功能“，没有人会反对你这个观点。当然，火星四溅的根子还在于我前面回复有些尖刻了，比如对别人心态的妄自揣摸，这个我表示反省。

user: user-1
content: 引用 9 楼 u010030181 的回复:[quote=引用 6 楼 binaryhead 的回复:] [quote=引用 5 楼 u010030181 的回复:] [quote=引用 3 楼 binaryhead 的回复:] 遇到这样的面试公司，直接淘鄙视他就是了。任何有过开发较大型的商业软件的经验的人都知道，对程序员的技术素养要求会大致有哪些。但绝对不包括这样钻牛角尖的素养，追求完美与钻牛角尖完全不是一回事。 那么来具体分析一下题目，倒序还要输出，而且要一句C语言实现，可能吗？请考官首先讲清楚C语言中的一句语句的意思。尽管C语言中一行文本可以包括多条语句，只要用分号隔开即可。但一行文本多条C语句，再大多数情况下可读性如何呢？考官的倾向性可以马上判断出来。 至于unsigned int正向输出，本人倒有一篇博文源码，有闲心的可以顺便看看：http://blog.csdn.net/binaryhead/article/details/7530829 额，说得大致同意……但是你没实现过，不代表就不可能…… 仅供参考！！！while (printf("%d\t", num%10), num = num/10);[/quote] 真是高级呀，还用到了逗号表达式，而且为了简化问题，还特意把问题提成了实用价值并不高的逆序输出，就是要把面试者向自己预设的“发明”上靠。效率呢？一个用C程序员如果没有效率意识，那就一个不合格的C程序员，在循环中调用开销比较大的printf！分析一下考官的心态：自己在某次开发中有有所收获（“发明"），就如获至宝，拿自己的”发明“来找知音。不是我吹牛，让面试官这样高手做一下我前面给出源码链接的，正向输出unsigned int的题目，让他10分钟内写出没有bug代码，他如果以前没做过，未必能能做对。 须知：面试是双向选择，面试官的问题也表明自己的倾向！[/quote] 别一说C语言就来谈效率，对于这样的说法，我只能呵呵……要效率可以用汇编，再则可以用二进制，那样才是真效率……效率的前提是能实现应有的功能！！！还有你觉得你写的程序没有BUG？效率很高？我又要呵呵了……考虑16进制数了没？考虑传入的那个指针是否有足够的空间了没或者有没有分配空间？颠过来倒过去的循环无非就是要逆序，但效率很高？？？你干嘛不直接从尾部向前插入？（最末尾的赋值'\0'）[/quote] 不要废话，我已经把代码晾了几年了，你也把你刚才的质疑写一个完整的函数晾出来比比就是了，不限定时间。

user: user-2
content: 引用 6 楼 binaryhead 的回复:[quote=引用 5 楼 u010030181 的回复:] [quote=引用 3 楼 binaryhead 的回复:] 遇到这样的面试公司，直接淘鄙视他就是了。任何有过开发较大型的商业软件的经验的人都知道，对程序员的技术素养要求会大致有哪些。但绝对不包括这样钻牛角尖的素养，追求完美与钻牛角尖完全不是一回事。 那么来具体分析一下题目，倒序还要输出，而且要一句C语言实现，可能吗？请考官首先讲清楚C语言中的一句语句的意思。尽管C语言中一行文本可以包括多条语句，只要用分号隔开即可。但一行文本多条C语句，再大多数情况下可读性如何呢？考官的倾向性可以马上判断出来。 至于unsigned int正向输出，本人倒有一篇博文源码，有闲心的可以顺便看看：http://blog.csdn.net/binaryhead/article/details/7530829 额，说得大致同意……但是你没实现过，不代表就不可能…… 仅供参考！！！while (printf("%d\t", num%10), num = num/10);[/quote] 真是高级呀，还用到了逗号表达式，而且为了简化问题，还特意把问题提成了实用价值并不高的逆序输出，就是要把面试者向自己预设的“发明”上靠。效率呢？一个用C程序员如果没有效率意识，那就一个不合格的C程序员，在循环中调用开销比较大的printf！分析一下考官的心态：自己在某次开发中有有所收获（“发明"），就如获至宝，拿自己的”发明“来找知音。不是我吹牛，让面试官这样高手做一下我前面给出源码链接的，正向输出unsigned int的题目，让他10分钟内写出没有bug代码，他如果以前没做过，未必能能做对。 须知：面试是双向选择，面试官的问题也表明自己的倾向！[/quote] 别一说C语言就来谈效率，对于这样的说法，我只能呵呵……要效率可以用汇编，再则可以用二进制，那样才是真效率……效率的前提是能实现应有的功能！！！还有你觉得你写的程序没有BUG？效率很高？我又要呵呵了……考虑16进制数了没？考虑传入的那个指针是否有足够的空间了没或者有没有分配空间？颠过来倒过去的循环无非就是要逆序，但效率很高？？？你干嘛不直接从尾部向前插入？（最末尾的赋值'\0'）

user: user-1
content: 一个多人协作开发小组中，比较关键的恰恰是接口的确定，实在话就是C头文件的编写。就算是一个人开发，考虑到将来的移植、复用以及给调用者最小负担等思想，接口的确定也是要慎重考虑的问题。接口一旦确定——任务明确了，对实现者其实是一种解放，在给定的框架下完成工作，是我们从小到大都比较适应的，应试教育特点就是任务明确，扯远了，呵呵。

user: user-3
content: 无聊的面试， 无聊的公司，不用考虑。

user: user-1
content: 引用 5 楼 u010030181 的回复:[quote=引用 3 楼 binaryhead 的回复:] 遇到这样的面试公司，直接淘鄙视他就是了。任何有过开发较大型的商业软件的经验的人都知道，对程序员的技术素养要求会大致有哪些。但绝对不包括这样钻牛角尖的素养，追求完美与钻牛角尖完全不是一回事。 那么来具体分析一下题目，倒序还要输出，而且要一句C语言实现，可能吗？请考官首先讲清楚C语言中的一句语句的意思。尽管C语言中一行文本可以包括多条语句，只要用分号隔开即可。但一行文本多条C语句，再大多数情况下可读性如何呢？考官的倾向性可以马上判断出来。 至于unsigned int正向输出，本人倒有一篇博文源码，有闲心的可以顺便看看：http://blog.csdn.net/binaryhead/article/details/7530829 额，说得大致同意……但是你没实现过，不代表就不可能…… 仅供参考！！！while (printf("%d\t", num%10), num = num/10);[/quote] 真是高级呀，还用到了逗号表达式，而且为了简化问题，还特意把问题提成了实用价值并不高的逆序输出，就是要把面试者向自己预设的“发明”上靠。效率呢？一个用C程序员如果没有效率意识，那就一个不合格的C程序员，在循环中调用开销比较大的printf！分析一下考官的心态：自己在某次开发中有有所收获（“发明"），就如获至宝，拿自己的”发明“来找知音。不是我吹牛，让面试官这样高手做一下我前面给出源码链接的，正向输出unsigned int的题目，让他10分钟内写出没有bug代码，他如果以前没做过，未必能能做对。 须知：面试是双向选择，面试官的问题也表明自己的倾向！

user: user-2
content: 引用 14 楼 binaryhead 的回复:说说我对你的那个一行语句对楼主问题实现的感受：的确漂亮，利用了逗号表达式，简洁实现！但面试官问题亮点也就是逗号表达式这一点上。我上面的效率本意是想说，涉及到输出操作（比如printf），一般思路都是在缓冲区中先准备，最后一次性输出，既可提高效率，也做到可控。我已经有缓冲区准备的思维定势了（代码就说明问题），你纠正了我的这种思维定势，谢谢你。最后要说，钻牛角尖的习惯绝对不是一无是处，但请注意时机和场合。 虽然我测试了很多数据，没出现那种情况，但确实是可能会造成数组的越界……虽然一开始考虑了边界的问题，但写着写着就忘记了……当然最终的结果就是没考虑！我一直都比较赞同你的说法，只是你的用词态度以及说一个问题时又把另一个问题扯进来表示反感！正如这个面试题，我也赞同这是一个垃圾题目，但你把没答案，说的那么理当气壮，我就觉得不舒服了，后来答案有了又说效率的问题，我就更不爽了，一个面试题，有可能考你效率，也可能仅仅考你基础知识点，还有可能两个都要又或者其他的方面，但是不可能在短时间内，所有的东西都整合起来，而且就算给你时间，也不一定能整合起来……鱼和熊掌还不得兼……跟帖这么多，无非就是想表明：在没有完全把握的情况下，多用些maybe、Possible…少些must、should……自己的态度怎么样也会有相应的态度回应……好了，就此告一段落……革命根本就没成功，大家均需努力……

user: user-1
content: 说说我对你的那个一行语句对楼主问题实现的感受：的确漂亮，利用了逗号表达式，简洁实现！但面试官问题亮点也就是逗号表达式这一点上。我上面的效率本意是想说，涉及到输出操作（比如printf），一般思路都是在缓冲区中先准备，最后一次性输出，既可提高效率，也做到可控。我已经有缓冲区准备的思维定势了（代码就说明问题），你纠正了我的这种思维定势，谢谢你。最后要说，钻牛角尖的习惯绝对不是一无是处，但请注意时机和场合。

user: user-1
content: 引用 12 楼 u010030181 的回复:[quote=引用 10 楼 binaryhead 的回复:] [quote=引用 9 楼 u010030181 的回复:] [quote=引用 6 楼 binaryhead 的回复:] [quote=引用 5 楼 u010030181 的回复:] [quote=引用 3 楼 binaryhead 的回复:] 遇到这样的面试公司，直接淘鄙视他就是了。任何有过开发较大型的商业软件的经验的人都知道，对程序员的技术素养要求会大致有哪些。但绝对不包括这样钻牛角尖的素养，追求完美与钻牛角尖完全不是一回事。 那么来具体分析一下题目，倒序还要输出，而且要一句C语言实现，可能吗？请考官首先讲清楚C语言中的一句语句的意思。尽管C语言中一行文本可以包括多条语句，只要用分号隔开即可。但一行文本多条C语句，再大多数情况下可读性如何呢？考官的倾向性可以马上判断出来。 至于unsigned int正向输出，本人倒有一篇博文源码，有闲心的可以顺便看看：http://blog.csdn.net/binaryhead/article/details/7530829 额，说得大致同意……但是你没实现过，不代表就不可能…… 仅供参考！！！while (printf("%d\t", num%10), num = num/10);[/quote] 真是高级呀，还用到了逗号表达式，而且为了简化问题，还特意把问题提成了实用价值并不高的逆序输出，就是要把面试者向自己预设的“发明”上靠。效率呢？一个用C程序员如果没有效率意识，那就一个不合格的C程序员，在循环中调用开销比较大的printf！分析一下考官的心态：自己在某次开发中有有所收获（“发明"），就如获至宝，拿自己的”发明“来找知音。不是我吹牛，让面试官这样高手做一下我前面给出源码链接的，正向输出unsigned int的题目，让他10分钟内写出没有bug代码，他如果以前没做过，未必能能做对。 须知：面试是双向选择，面试官的问题也表明自己的倾向！[/quote] 别一说C语言就来谈效率，对于这样的说法，我只能呵呵……要效率可以用汇编，再则可以用二进制，那样才是真效率……效率的前提是能实现应有的功能！！！还有你觉得你写的程序没有BUG？效率很高？我又要呵呵了……考虑16进制数了没？考虑传入的那个指针是否有足够的空间了没或者有没有分配空间？颠过来倒过去的循环无非就是要逆序，但效率很高？？？你干嘛不直接从尾部向前插入？（最末尾的赋值'\0'）[/quote] 不要废话，我已经把代码晾了几年了，你也把你刚才的质疑写一个完整的函数晾出来比比就是了，不限定时间。[/quote]  我很好奇，每次说到一个点的时候，就拿另一个点来搪塞，我都懒得说了，我只好呵呵……我不知道哪天面试官叫我“根据xx条件，输出一个xx结果给我看的题目时”我是否要跟他说printf的效率很差，我可不写效率低的程序，你来看看我的代码，你看这个数就是你要的那个数，但是我不能打印出来，它效率太低了……   #include <stdio.h> #include <time.h>  void UnsignedToStr1(unsigned int Value, char pBuffer[], int BufSize)  { 	char numarry[] = "0123456789"; 	int count = 0, i;  	if(BufSize == 0)  		return; 				 	do  	{  		pBuffer[count++] = numarry[Value%10];  		Value = Value / 10; 		 		if (count > BufSize) 		{ 			count = BufSize; 			break;	 		} 						  	  	}while(Value); 	  	pBuffer[count] = '\0';	//字符串的结束标志  	 	 	for(i = 0; i < count / 2; i++)  	{ 		char Temp; 		Temp = pBuffer[i]; 		pBuffer[i] = pBuffer[count - 1 - i]; 		pBuffer[count - 1 - i] = Temp; 	} }   void UnsignedToStr(unsigned int Value, char * pBuffer, int BufSize) {	 	char OutStrBuf[32]; 	int Count = 0, i;  	if(BufSize == 0) return; 	  	do { 		OutStrBuf[Count] = Value % 10 + '0'; 		Value = Value / 10; 		Count++; 	} while(Value);  	if(BufSize < (Count + 1)) {/*"+1": include the terminate char */ 		Count = BufSize - 1; 	} 	 	for(i = 0; i < Count / 2; i++) { 		char Temp; 		Temp = OutStrBuf[i]; 		OutStrBuf[i] = OutStrBuf[Count - 1 - i]; 		OutStrBuf[Count - 1 - i] = Temp; 	} 	 	for(i = 0; i < Count; i++) { 		pBuffer[i] = OutStrBuf[i]; 	} 	pBuffer[Count] = 0x00; /* Append a terminate char */ }  int main(void) { 	char arry[32]; 	int i; 	clock_t tstart=clock(); 		 	for(i = 0; i <900000; i ++) 	{ 		UnsignedToStr1(12345, arry, 5);	 	}  	 	clock_t tend=clock(); 		 	printf("Time1: %d\n\n", tend - tstart); 	printf("%s\n\n", arry); 	 	tstart=clock(); 	 	for(i = 0; i <900000; i ++) 	{ 		UnsignedToStr(12345, arry, 5);	 	}  	 	tend=clock();	 	printf("Time2: %d\n\n", tend - tstart); 	printf("%s\n\n", arry); }   还是代码说话好……在忠于原文的基础上改的，所以也就省略了2,816进制数的问题，传 pBuffer[]至少可以让人不会轻易传入一个未初始化的指针进去……可读性很差？效率很低？空间利用率？看到比较的结果，我又只能呵呵……我搞不清楚最后这个参数是干嘛用的？限制指针的大小的？限制输出的？（怎么实际输出比传入的少一个？）[/quote] 你代码的亮点： 1、用查表的办法，既灵活（比如2、8、16进制转换灵活）又效率高。 2、一开始就特别注意效率，所以从算法上比我少一次拷贝，以至于对栈空间的需求也比我的代码少。 看了你的代码我自叹不如。综合我后面的测试结果，结论：你其实比本人更符合前面的C程序员的特征（包括陋习，不客气地说是陋习，不注意C语言最锐利部分的副作用，指针越界），因为你不但有效率意识而且动手能力比本人强，而且还比本人勇于冒险。其它不多说了，看下面的我修改的测试代码和测试结果，自己回味吧。  int main(void) {     int PreGarb = 0xCCCCCCCC; 	char arry[8]; 	int PostGarb= 0xDDDDDDDD;     int i;     clock_t tstart=clock();               for(i = 0; i <900000; i ++)     {         UnsignedToStr1(12345678, arry, 8);        }            clock_t tend=clock();               printf("Time1: %d\n\n", tend - tstart);     printf("%s\n", arry);      	printf("%X\n%0X\n", PreGarb, PostGarb);  	PreGarb = 0xCCCCCCCC; 	PostGarb= 0xDDDDDDDD;     tstart=clock();           for(i = 0; i <900000; i ++)     {         UnsignedToStr(12345678, arry, 8);        }            tend=clock();        printf("Time2: %d\n\n", tend - tstart);     printf("%s\n", arry);  	printf("%X\n%0X\n", PreGarb, PostGarb); 	return 0; }  测试结果： Time1: 156  12345678 CCCCCC00 DDDDDDDD Time2: 203  2345678 CCCCCCCC DDDDDDDD

user: user-2
content: 引用 10 楼 binaryhead 的回复:[quote=引用 9 楼 u010030181 的回复:] [quote=引用 6 楼 binaryhead 的回复:] [quote=引用 5 楼 u010030181 的回复:] [quote=引用 3 楼 binaryhead 的回复:] 遇到这样的面试公司，直接淘鄙视他就是了。任何有过开发较大型的商业软件的经验的人都知道，对程序员的技术素养要求会大致有哪些。但绝对不包括这样钻牛角尖的素养，追求完美与钻牛角尖完全不是一回事。 那么来具体分析一下题目，倒序还要输出，而且要一句C语言实现，可能吗？请考官首先讲清楚C语言中的一句语句的意思。尽管C语言中一行文本可以包括多条语句，只要用分号隔开即可。但一行文本多条C语句，再大多数情况下可读性如何呢？考官的倾向性可以马上判断出来。 至于unsigned int正向输出，本人倒有一篇博文源码，有闲心的可以顺便看看：http://blog.csdn.net/binaryhead/article/details/7530829 额，说得大致同意……但是你没实现过，不代表就不可能…… 仅供参考！！！while (printf("%d\t", num%10), num = num/10);[/quote] 真是高级呀，还用到了逗号表达式，而且为了简化问题，还特意把问题提成了实用价值并不高的逆序输出，就是要把面试者向自己预设的“发明”上靠。效率呢？一个用C程序员如果没有效率意识，那就一个不合格的C程序员，在循环中调用开销比较大的printf！分析一下考官的心态：自己在某次开发中有有所收获（“发明"），就如获至宝，拿自己的”发明“来找知音。不是我吹牛，让面试官这样高手做一下我前面给出源码链接的，正向输出unsigned int的题目，让他10分钟内写出没有bug代码，他如果以前没做过，未必能能做对。 须知：面试是双向选择，面试官的问题也表明自己的倾向！[/quote] 别一说C语言就来谈效率，对于这样的说法，我只能呵呵……要效率可以用汇编，再则可以用二进制，那样才是真效率……效率的前提是能实现应有的功能！！！还有你觉得你写的程序没有BUG？效率很高？我又要呵呵了……考虑16进制数了没？考虑传入的那个指针是否有足够的空间了没或者有没有分配空间？颠过来倒过去的循环无非就是要逆序，但效率很高？？？你干嘛不直接从尾部向前插入？（最末尾的赋值'\0'）[/quote] 不要废话，我已经把代码晾了几年了，你也把你刚才的质疑写一个完整的函数晾出来比比就是了，不限定时间。[/quote]  我很好奇，每次说到一个点的时候，就拿另一个点来搪塞，我都懒得说了，我只好呵呵……我不知道哪天面试官叫我“根据xx条件，输出一个xx结果给我看的题目时”我是否要跟他说printf的效率很差，我可不写效率低的程序，你来看看我的代码，你看这个数就是你要的那个数，但是我不能打印出来，它效率太低了……   #include <stdio.h> #include <time.h>  void UnsignedToStr1(unsigned int Value, char pBuffer[], int BufSize)  { 	char numarry[] = "0123456789"; 	int count = 0, i;  	if(BufSize == 0)  		return; 				 	do  	{  		pBuffer[count++] = numarry[Value%10];  		Value = Value / 10; 		 		if (count > BufSize) 		{ 			count = BufSize; 			break;	 		} 						  	  	}while(Value); 	  	pBuffer[count] = '\0';	//字符串的结束标志  	 	 	for(i = 0; i < count / 2; i++)  	{ 		char Temp; 		Temp = pBuffer[i]; 		pBuffer[i] = pBuffer[count - 1 - i]; 		pBuffer[count - 1 - i] = Temp; 	} }   void UnsignedToStr(unsigned int Value, char * pBuffer, int BufSize) {	 	char OutStrBuf[32]; 	int Count = 0, i;  	if(BufSize == 0) return; 	  	do { 		OutStrBuf[Count] = Value % 10 + '0'; 		Value = Value / 10; 		Count++; 	} while(Value);  	if(BufSize < (Count + 1)) {/*"+1": include the terminate char */ 		Count = BufSize - 1; 	} 	 	for(i = 0; i < Count / 2; i++) { 		char Temp; 		Temp = OutStrBuf[i]; 		OutStrBuf[i] = OutStrBuf[Count - 1 - i]; 		OutStrBuf[Count - 1 - i] = Temp; 	} 	 	for(i = 0; i < Count; i++) { 		pBuffer[i] = OutStrBuf[i]; 	} 	pBuffer[Count] = 0x00; /* Append a terminate char */ }  int main(void) { 	char arry[32]; 	int i; 	clock_t tstart=clock(); 		 	for(i = 0; i <900000; i ++) 	{ 		UnsignedToStr1(12345, arry, 5);	 	}  	 	clock_t tend=clock(); 		 	printf("Time1: %d\n\n", tend - tstart); 	printf("%s\n\n", arry); 	 	tstart=clock(); 	 	for(i = 0; i <900000; i ++) 	{ 		UnsignedToStr(12345, arry, 5);	 	}  	 	tend=clock();	 	printf("Time2: %d\n\n", tend - tstart); 	printf("%s\n\n", arry); }   还是代码说话好……在忠于原文的基础上改的，所以也就省略了2,816进制数的问题，传 pBuffer[]至少可以让人不会轻易传入一个未初始化的指针进去……可读性很差？效率很低？空间利用率？看到比较的结果，我又只能呵呵……我搞不清楚最后这个参数是干嘛用的？限制指针的大小的？限制输出的？（怎么实际输出比传入的少一个？）

user: user-2
content: 引用 3 楼 binaryhead 的回复:遇到这样的面试公司，直接淘鄙视他就是了。任何有过开发较大型的商业软件的经验的人都知道，对程序员的技术素养要求会大致有哪些。但绝对不包括这样钻牛角尖的素养，追求完美与钻牛角尖完全不是一回事。 那么来具体分析一下题目，倒序还要输出，而且要一句C语言实现，可能吗？请考官首先讲清楚C语言中的一句语句的意思。尽管C语言中一行文本可以包括多条语句，只要用分号隔开即可。但一行文本多条C语句，再大多数情况下可读性如何呢？考官的倾向性可以马上判断出来。 至于unsigned int正向输出，本人倒有一篇博文源码，有闲心的可以顺便看看：http://blog.csdn.net/binaryhead/article/details/7530829 额，说得大致同意……但是你没实现过，不代表就不可能…… 仅供参考！！！while (printf("%d\t", num%10), num = num/10);

user: user-4
content: 一行代码确实有难度啊 /*************************************************************************     > File Name: f.c     > Author: Jukay     > Mail: hellojukay@gmail.com      > Created Time: 2014年11月09日 星期日 19时00分44秒  ************************************************************************/  #include<stdio.h> void print(unsigned); int main() { 	unsigned int a; 	scanf("%u",&a); 	print(a); 	return 0; }  void print(unsigned int a) { 	printf("%d",a%10); 	if(a/10 == 0) 		; 	else 		print(a/10); }

user: user-1
content: 遇到这样的面试公司，直接淘鄙视他就是了。任何有过开发较大型的商业软件的经验的人都知道，对程序员的技术素养要求会大致有哪些。但绝对不包括这样钻牛角尖的素养，追求完美与钻牛角尖完全不是一回事。 那么来具体分析一下题目，倒序还要输出，而且要一句C语言实现，可能吗？请考官首先讲清楚C语言中的一句语句的意思。尽管C语言中一行文本可以包括多条语句，只要用分号隔开即可。但一行文本多条C语句，再大多数情况下可读性如何呢？考官的倾向性可以马上判断出来。 至于unsigned int正向输出，本人倒有一篇博文源码，有闲心的可以顺便看看：http://blog.csdn.net/binaryhead/article/details/7530829

user: user-4
content: 引用 1 楼 user-5 的回复:取余输出就行 重点是只有一句c语言啊

user: user-5
content: 取余输出就行