#include <stdio.h>
#define MAX 100+10
char s[MAX][MAX];
int main()
{
int n,i,j,k,t,a=0;
scanf("%d",&n);
k=4*n-3;
for(i=0;i<n;i++)
for(j=0;j<4*n-3;j++)
s[i][j]=' ';
for(i=n-1;i>=0;i--)
{
for(t=2*a;t<k;t++)
if(t%2==0)
s[i][t]='#';
k=k-2;
a++;
}
for(i=n-1;i>=0;i--)
{
for(j=0;j<4*n-3;j++)
printf("%c",s[i][j]);
printf("\n");
}
return 0;
}
//你输入3则
# # # # #
# # #
#
输入5,则
# # # # # # # # #
# # # # # # #
# # # # #
# # #
#
------解决方案--------------------
两重循环呗
一个控制行,一个控制列
------解决方案--------------------
- C/C++ code
#include <stdio.h> int main( void ) { int i, j, flag; scanf("%d", &i); flag = i; for(; i > 0; --i) { for(j = 2 * i - 1; j > 0; --j) { printf("# "); } printf("\n "); } return 0; }
------解决方案--------------------
上面多了个变量,去掉了
- C/C++ code
#include <stdio.h> int main( void ) { int i, j; scanf("%d", &i); for(; i > 0; --i) { for(j = 2 * i - 1; j > 0; --j) { printf("# "); } printf("\n "); } return 0; }
------解决方案--------------------
#include <stdio.h>
#define MAX 110
char s[MAX][MAX];
int main()
{
int n,i,j,k,t,a=0;
scanf("%d",&n); //输入数字
k=4*n-3; //得到K
//下面这个for循环是为了将空格输入到s数组中你输入数字几就有几行而且全设成空格
for(i=0;i<n;i++)
for(j=0;j<4*n-3;j++)
s[i][j]=' ';
//隔一个空格输入一个#符号 而且是没输入一行上一行两头都减少两个字符(从最下面一行开始输入的因为i=n-1)
//最后剩一个
for(i=n-1;i>=0;i--)
{
for(t=2*a;t<k;t++)
if(t%2==0)
s[i][t]='#';
k=k-2;
a++;
}
//打印出结果
for(i=n-1;i>=0;i--)
{
for(j=0;j<4*n-3;j++)
printf("%c",s[i][j]);
printf("\n");
}
return 0;
}
当然你可以单步调试以查看s结果
------解决方案--------------------
# # # # # # # # # # # # # # #
` # # # # # # # # # # # # #
````# # # # # # # # # # #
``````# # # # # # # # #
```` ```# # # # # # #
`` ```````# # # # #
`` `````````# # #
``` ``````````#
这是你的程序输入8 的时候输出的