C语言中打印菱形*及求0~999之间“水仙花数“的问题

1、打印一个13行的菱形*,其中前7行每行依次递增两个,从第八行起,每行递减两个,起始与末尾行个数都为1,第七行最多,为13个。

#include<stdio.h>
#include<stdlib.h>
int main() {
        int i, j;//i控制行数,j控制每行的*个数
        int k = 13;//k为给定的行数
        int a = (k + 1) / 2;
        //先打印前7行,每行*依次递增2个
        for(i = 1; i <= a; ++i) {
                 for(j = 1; j <= 2 * i - 1; ++j) {
                         printf("*");
                 }
                 printf("\n");
        }
        //打印后6行,每行*依次递减2个
        for(i = a - 1; i >= 1; --i) {
                 for(j = 1; j <= 2 * i - 1; ++j) {
                         printf("*");
                 }
                 printf("\n");
                         }
        system("pause");
        return 0;
}

运行效果图:
在这里插入图片描述
2、求出0~999之间的所有“水仙花数”并输出。
思路:求”水仙花数“的问题实际上需要回到求一个三位数其个位、十位、百位的问题上。
个位=该数字%10;
十位=该数字/10%10;
百位=该数字/100;

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main() {
        int hundred, ten, indiv;//定义百位、十位、个位
        for(int i = 0; i < 1000; ++i) {
                 hundred= i / 100;
                 ten= i  / 10 % 10;
                 indiv= i %10;
                 if ((i>=100)&&(i == pow(hundred, 3) 
                         +pow(ten, 3) + pow(indiv, 3))) {
                         printf("%d是水仙花数\n", i);
                 }
        }
        system("pause");
        return 0;
}

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/swag_wg/article/details/88774601