viperchaos

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

淘宝的一道面试题是这样的:
写一个函数: int print_num(int k){}; 要求函数功能为打印k的降序,直到0结束,即如果k=5,即打印: 5 4 3 2 1 0
要求: 不能用 if , if else, switch, ?: , while, for , do while, goto 语句

#include <conio.h>
#include <stdio.h>
int print_num(int k)
{
    printf("%d ",k);
    k&&print_num(k-1);  
/*短路,&&运算符在左侧能够确定最终结果时不会对右侧操作求值 */ 
    return k;  
}
int main()
{   
    int i;
    char c;
    scanf("%d",&i); 
    print_num(i);
    c=getchar();     
 /*GETCHAR读取的是在输入数字时所敲的回车,返回的ASCII值为10,无法停留DOS窗口 */ 
    printf("%d",c);
    getchar();
}
posted on 2010-10-24 13:58  viperchaos  阅读(1295)  评论(0编辑  收藏  举报