#include
int main(int argc, const char * argv[]) {
int num = 0;
printf("请输入您希望看到的菱形边的星星数:\n");
scanf("%d",&num);
int num1 = num;
int num2 = num;
int number1 = num;
int number2 = num;
//实心菱形
for (int i = 0; i < num; i++) { //实心菱形的上半部分,共用户输入的数字num行
for (int j = 0; j<<span style="font-variant-ligatures: no-common-ligatures; color: #272ad8">2*num+1; j++) { //控制行输出,每一行都有2*num+1个“格子”
if (j>=num1 && j <= num2) { //在num1和num2之间的“格子”全部用*打印出来
printf("*");
}else{ //不在num1和num2之间的“格子”用空格代替
printf(" ");
}
}
printf("\n");
num1--; //调整num1和num2的值,使之呈每一步都相互远离一个“格子”的形式
num2++;
}
num1+=2; //调整num1和num2的值,为打印菱形的下半部分做准备
num2-=2;
for (int i = 0; i < num-1; i++) { //打印菱形的下半部分
for (int j = 0; j<<span style="font-variant-ligatures: no-common-ligatures; color: #272ad8">2*num+1; j++) { //每一行都有2*num+1个“格子”
if (j>=num1 && j <= num2) { //在num1和num2之间的“格子”全部用*打印出来
printf("*");
}else{ //不在num1和num2之间的“格子”用空格代替
printf(" ");
}
}
printf("\n");
num1++; //调整number1和number2的值,使之在每一次循环中都呈现相互各靠近一个“格子”的形式
num2--;
}
printf("\n\n"); //在实心菱形打印完成后隔两行开始打印空心菱形
//空心菱形
for (int i = 0; i < num; i++) { //打印空心菱形的上半部分
for (int j = 0; j<<span style="font-variant-ligatures: no-common-ligatures; color: #272ad8">2*num+1; j++) { //控制行输出,把每行看成2*num+1个格子组成
if (j==number1 || j == number2) { //把number1和number2代表的“格子”位置用*打印出来
printf("*");
}else{ //不满足要求的“格子”用空格代替
printf(" ");
}
}
printf("\n");
number1--; //调整number1和number2的值,使之在每一次循环中都呈现相互各远离一个“格子”的形式
number2++;
}
number1+=2; //调整number1和number2的数值,为打印缩小部分做准备
number2-=2;
for (int i = 0; i < num-1; i++) { //打印菱形的下半部分
for (int j = 0; j<<span style="font-variant-ligatures: no-common-ligatures; color: #272ad8">2*num+1; j++) {
if (j==number1 || j == number2) { //把number1和number2代表的“格子”位置用*打印出来
printf("*");
}else{ //不满足要求的“格子”用空格代替
printf(" ");
}
}
printf("\n");
number1++; //调整number1和number2的值,使之呈每一步都相互靠近各一个“格子”的形式
number2--;
}
return 0;
}
