zoukankan      html  css  js  c++  java
  • 分享一个有趣的打印菱形的程序

    想必如果让大家写一个c语言版本的打印菱形的程序,估计都是手到擒来的吧。但是大家请看看下面的这段代码,你是否可以想到呢?

    #include <stdio.h>
    
    int line = 1;
    int main()
    {
            printf("%*s\n",
                    7-(line>4? line-4: 4-line),
                    "*******"+2*(line>4? line-4:4-line)
            );
            if(++line != 8)
                    main();
            return 0;
    }
    

      

    首先说一下”%*s”的用法,论坛里前几天可可余香童鞋已经写过了一篇总结:
    http://www.cppleyuan.com/viewthread.php?tid=9351
    即*是用一个int参数来代替,比如:
    printf(“%*s\n”, 5, “def”);

    就相当于printf(“%5s\n”, “def”);
    指定了字符串输出的宽度。
    这个用法平时见得不多,可以了解下。

    另外:
    有人对这一行

    "*******"+2*(line>4? line-4:4-line)
    

      

    感到疑惑,其实认真看一下,就是一个字符串指针加上一个int整数,也就是指针的平移了。

    比如line=1第一行时,2*(line>4? line-4:4-line)即为6,也就是7个星号的字符串指针平移6个,所以输出一个星号了。

    最后这个程序用到了main函数的递归调用,注意一定要写上退出条件,否则就无限循环了。

  • 相关阅读:
    文件操作
    join,列表和字典用for循环的删除,集合,深浅拷贝
    java多线程基础
    nginx应用及性能调优
    nginx 基本功能
    SpringBoot2.x 启动过程详解
    shell脚本的基本使用
    使用 maven 的 `wagon-maven-plugin`插件 快速部署 到不同的 环境
    Netty笔记(7)
    Netty笔记(6)
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2601719.html
Copyright © 2011-2022 走看看