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函数的递归调用,注意一定要写上退出条件,否则就无限循环了。

  • 相关阅读:
    IntelliJ IDEA 快捷键大全
    springboot整合jsp 遇到的问题
    mysql数据库中某字段一部分乱码
    Spring-boot整合Redis,遇到的问题
    遍历对象和数组的forEach函数
    获取随机数,要求长度一致的字符串格式
    获取yyyy-mm-dd格式的日期
    JS对象常用API
    数组常用API
    JS中异步和单线程
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2601719.html
Copyright © 2011-2022 走看看