打印水仙花数____打印*菱形图案

1.求出0~999之间的所有“水仙花数”并输出。

“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,
如;153=1*1*1+5*5*5+3*3*3?,则153是一个“水仙花数”。

解题思路:
如何算出水仙花数就在于分别取出这个三位数的每一位
n 代表三位数,i 代表最高位,j 代表中间位,k 代表最末位
取出最高位数字:i = n / 100;
取出中间位数字:j = n / 10 - i * 10;
取出最末位数字:k = n % 10;

#include<stdio.h>

int main()
{
    int i, j, k, n;
    printf("parcissus numbers are:\n ");
    for (n = 100; n < 1000; n++)
    {
        i = n / 100;  //i表示n除以100的商,即得到最高位(百位)的数字
        j = n / 10 - i * 10; //j表示十位的数字
        k = n % 10; //个位的数字
        if (n == i * i * i + j * j * j + k * k * k)//判断是否是素数
            printf("%d  ", n);
    }
    printf("\n");
    system("pause");
    return 0;
}

程序输出结果:这里写图片描述


2.输出个以下 * 状菱形
这里写图片描述

解题思路:首先观察图案形状可知 * 图案是由第一行第六列开始没下一行两边分别增加一个 * 图案,第七行与第六行相同,在后向下两边逐次递减直至最后为一个 * 图案; 因此可以把这个图案分成两部分:
(1)正三角 * 图案
(2)倒三角 * 图案
两图形的拼接,然后用两个for循环将其打印出来。

 #include < stdio.h >

int main()
{
    int i = 0, j = 0, k = 0;
    for (i = 0; i < 6; i++) //打印上部正三角 * 图案
    {
        for (j = 0; j <= 5 - i; j++)
            printf(" ");
        for (k = 0; k <= 2 * i; k++)
            printf("*");
        printf("\n");
    }
    for (i = 0; i <= 5; i++) //打印倒三角 * 图案
    {
        for (j = 0; j <= i; j++)
            printf(" ");
        for (k = 0; k <= 10 - 2 * i; k++)
            printf("*");
        printf("\n");
    }
    system("pause");
    return 0;
}

输出结果:这里写图片描述


猜你喜欢

转载自blog.csdn.net/zhang21722668/article/details/81585165