#include<stdio.h>
void main(){
int a,b,c,d;
printf("请输入一个值");
scanf("%d",&b);
for(a=1;a<=b;a++){//层数
for(d=1;d<=b-a;d++){
printf(" ");
}
for(c=1;c<=2*a-1;c++){
if(c==1||c==2*a-1){
printf("*");}
else{
printf(" ");
}
}
printf("\n");
}
for(a=1;a<=b-1;a++){//层数
for(d=1;d<=a;d++){//空格数
printf(" ");
}
for(c=1;c<=2*a+1;c++){//每一行的*数
if(c==1||c==2*a+1){
printf("*");
}else{
printf(" ");
}
}
printf("\n");
}
getchar();
getchar();
}
int a,b,c,d;
printf("请输入一个值");
scanf("%d",&b);
for(a=1;a<=b;a++){//层数
for(d=1;d<=b-a;d++){
printf(" ");
}
for(c=1;c<=2*a-1;c++){
if(c==1||c==2*a-1){
printf("*");}
else{
printf(" ");
}
}
printf("\n");
}
for(a=b-1;a>=1;a--){//层数
for(d=1;d<=b-a;d++){//空格数
printf(" ");
}
for(c=1;c<=2*a+1;c++){//每一行的*数
if(c==1||c==2*a-1){
printf("*");
}else{
printf(" ");
}
}
printf("\n");
}
getchar();
getchar();
逻辑有点问题,试试这个吧
#include <stdio.h>
int main(){
int width;
printf("请输入一个值\n");
scanf("%d\n",&width);
if(width % 2 == 0){
width += 1;
}
for(int i = 0; i != width; i ++){
for(int j = 0 ; j != width; j++){
if( j == (width/2 -i) || j == (width/2 + i) || j == (i - width/2) || j == (width/2 *3 -i))
{
printf("*");
}
else{
printf(" ");
}
}
printf("\n");
}
getchar();
return 0;
}
#include<stdio.h>
void main(){
int a,b,c,d;
printf("请输入一个值:");
scanf("%d",&b);
for(a=1;a<=b;a++){//层数
for(d=1;d<=b-a;d++){
printf(" ");
}
for(c=1;c<=2*a-1;c++){
if(c==1||c==2*a-1){
printf("*");}
else{
printf(" ");
}
}
printf("\n");
}
//下半部部分
int b2 = b - 1; //层数少一层
int k = 2*b2 +1; // 最多
for(a=1;a<= b2;a++){//层数
for(d=1;d<=a;d++){//空格数
printf(" ");
}
//这个地方改成了c=d
for(c=d;c <= k; c++){//每一行的*数
if(c==d || c == (k - d + 1)){
printf("*");
}else{
printf(" ");
}
}
printf("\n");
}
}
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html