c语言 如何用二维数组实现空心菱形 用*打出来

 我来答
百度网友6fe74e2
2013-05-05 · TA获得超过6593个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:267万
展开全部

//核心思想就是首先把二维字符数组元素全设为空格符,再将特定位置元素设为*,再输出
#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:

听不清啊
高粉答主

2015-09-12 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

#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;

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式