打印菱形星号组合(俩种解法),不允许只用printf,要求采用循环的方式,找规律。

来源:互联网 发布:知乎 竖肩章 编辑:程序博客网 时间:2024/06/07 17:23

任务和代码

第一种解法:

#include <stdio.h>       

#define N 7
int main()

    char str[N][N];
int i = 0;
int j = 0;

for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
{
str[i][j] = 32;
}
}

int m = N;
int n = 0;
i = 0;
    j = (N-1)/2;

while(j != i)
{
   while(j<m)
{
   str[i++][j++] = '*';
}

j = j - 2;
while(i<m)
{
   str[i++][j--] = '*';
}

i = i - 2;
while(j >= n)
{
str[i--][j--] = '*';
}

        j = j + 2;
while (i > n)
{
str[i--][j++] = '*';
}
//str[(m+1)/2][(m+1)/2] = '*';
str[(m-1)/2][(m-1)/2] = '*';
m--;
n++;
i++;


}
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
{
printf("%c", str[i][j]);
}
printf("\n");
}


return 0;

}


第二种解法:

#include <stdio.h>
 
int main()
{
    int i;
int j;


    for (i=0; i<7; i++)
    {
        for (j=0; j<7; j++)
        {
            if ( i+j>=3 && i+j<=9 && j-i<=3 && i-j<=3 ) 
{
printf("*");
}
            else 
{
printf(" ");
}
        }
        printf("\n");
    }

return 0;
}

运行结果:



心得体会:

做这种题目要有思维逻辑性,找可循规律。

1 0