水仙花数和凌形

//double Sum(int tmp, int n)
//{
//    int j = 1;
//    
//    int sum = 0;
//    while (tmp)
//    {
//        int ret = 1;
//        int tmp2 = 0;
//        for (j = 1; j <= n; j++)
//        {
//            tmp2 = ret * tmp % 10;
//        }
//        sum += tmp2;
//        tmp /= 10;
//    }
//    return sum;
//}
int main()
{
    int i = 0;
    for (i = 0; i <= 100000; i++)
    {
        //判断i是否为水仙花数(自幂数)
        //1,计算i的 n位数;
        int n = 1;
        int tmp = i;
        double sum = 0;
        while (tmp > 9)
        {
            n++;
            tmp = tmp / 10;
            
        }
        /*tmp = i;
        sum = Sum(tmp, n);*/
        //2,计算i的每一位数n次方之和 sum
        tmp = i;
        while (tmp)
        {
            sum += pow(tmp % 10, n);
            tmp /= 10;
        }
        //3,比较i == sum
        if (i == sum)
        {
            printf("%d ", i);
        }
    }
    return 0;
}

打印凌形

int main()
{
    int line = 0;
    scanf("%d", &line);//输入上半部分的行数
    int i = 0;
    //先打印上半部分
    for (i = 0; i < line; i++)
    {
        int j = line-1-i;//打印空格的数量
        while (j)
        {
            printf(" ");
            j--;
        }
        int k = 2*i+1;//打印*的数量
        while (k)
        {
            printf("*");
            k--;
        }
        printf("\n");
    }
    //再打印下半部分
    for (i = 0; i     {
        int j = i+1;//打印空格的数量
        while (j)
        {
            printf(" ");
            j--;
        }
        int k = 2 * (line - 1 - i) - 1;//打印*的数量
        while (k)
        {
            printf("*");
            k--;
        }
        printf("\n");
    }
    return 0;
}

你可能感兴趣的:(数学建模,算法,数据结构)