趣味100道C语言程序题num six

来源:互联网 发布:美苹互联数据库连不上 编辑:程序博客网 时间:2024/06/07 17:26

画一个空心圆

分析思路:图形在竖直方向上分割成若干份,依次一行输出相应的点(用星号表示),可以假设该圆的半径是10,设定y的值,求相应的x值,表示为m,因为圆是对称的,会有两个点,所以记得要进行判断。

#include <stdio.h>#include <math.h>int main(){    int y;    double x;    double m;    for(y = 10;y >= -10;y--)     //r = 10    {        m = 2.5 * sqrt(100 - y * y);            for(x = 0;x < 30 - m;x++)    //2.5是屏幕调整系数        {            printf(" ");        }        printf("*");        for(;x <= 30 + m;x++)        {            printf(" ");        }        printf("*\n");    }    return 0;}
图形为:
                              * *                    *                     *               *                               *             *                                   *          *                                         *         *                                           *        *                                             *       *                                               *      *                                                 *      *                                                 *     *                                                   *      *                                                 *      *                                                 *       *                                               *        *                                             *         *                                           *          *                                         *             *                                   *               *                               *                    *                     *                              * *



程序中有一个屏幕调整系数,因为x和y的比值不为1,所以需要将通过sqrt(100 -x * x)求出来的m值进行调整,比较之后,选择了2.5,那么相应的取值范围也变化了。

               这是没有加屏幕调整系数亦未改变取值范围的程序:

#include <stdio.h>#include <math.h>int main(){    int y;    double x;    double m;    for(y = 10;y >= -10;y--)     //r = 10    {        m = sqrt(100 - y * y);            for(x = 0;x < 10 - m;x++)        {            printf(" ");        }        printf("*");        for(;x <= 10 + m;x++)        {            printf(" ");        }        printf("*\n");    }    return 0;}
效果图为是一个椭圆:

            * *      *         *    *             *   *               *  *                 *  *                 * *                   * *                   * *                   * *                   **                     * *                   * *                   * *                   * *                   *  *                 *  *                 *   *               *    *             *      *         *          * *


0 0