c语言 如何用二维数组实现空心菱形 用*打出来
//核心思想就是首先把二维字符数组元素全设为空格符,再将特定位置元素设为*,再输出
#include "stdio.h"
#define N 9 //数组的行列数
int main()
{
char str[N][N]={0}; //例子,行列数应该是奇数
int i,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
str[i][j]=' ';//先全部设为空格
//在特定位置写入*号
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{
if(i==0 || i==N-1)
str[i][N/2]='*';
else if(i>0 && i<=N/2)
{
str[i][N/2+i]='*';
str[i][N/2-i]='*';
}
else
{
str[i][N/2*3-i]='*';
str[i][i-N/2]='*';
}
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%c",str[i][j]);
printf("\n");
}
}
N设为7:
#include<stdio.h>
#include<string.h>
int main()
{
int n,i,j,k;
char s[20][20];
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n-i;j++)s[i][j]=' ';
s[i][j++]='*';
if(i)
{
for(k=0;k<2*i-1;k++)
s[i][j++]=' ';
s[i][j++]='*';
}
s[i][j]='\0';
}
i--;
for(j=1;j<=n;j++)
strcpy(s[i+j],s[i-j]);
for(i=0;i<2*n-1;i++)
puts(s[i]);
system("pause");
return 0;
}