编程输出下列图形,行数从键盘读入 当n=5时, * *** ***** *** *

图形* *** ***** *** * 是Pascal语言
2024-11-13 09:41:49
推荐回答(4个)
回答1:

注意,我的比1、2、3楼的都简单,还是pascal

var
n,k,p,i,j:integer;
begin
readln(n);
k:=n div 2; //初始空格数
p:=1; //初始打印字数
for i:=1 to (n div 2) do //先做前一半行的打印
begin
for j:=1 to k do write(' '); //输出空格
for j:=1 to p do write('*'); //输出星号
writeln; //输出回车
dec(k); inc(p,2); //相当于k:=k-1; p:=p+2;
//因为每增加一行,空格减少一个,星号也增加两个
end;

for i:=1 to n do write('*'); //输出中间的星号
writeln; //输出回车

//因为打印是对称的,所以不用初始化k,p
for i:=1 to (n div 2) do //再做后一半行的打印
begin
for j:=1 to k do write(' '); //输出空格
for j:=1 to p do write('*'); //输出星号
writeln; //输出回车
inc(k); dec(p,2); //相当于k:=k+1; p:=p-2;
//因为每增加一行,空格增加少一个,星号也减少两个
end;
end.

回答2:

c语言吗?
以前刚学的时候写的
#include
void main()
{int i,k,n,t;
printf("此程序用于输出N行星星,并且为◇状\n请输入你需要的行数:");
scanf("%d",&n);
if(n>=0){
for(i=0;i for(t=0;t<32-i;t++)
printf(" ");
for(k=0;k<2*i-1;k++)
printf("*");
printf("\n");
}
for(i=0;i for(t=0;t<32-n+i;t++)
printf(" ");
for(k=0;k<=(2*n-1)-(2*i+1);k++)
printf("*");
printf("\n");
}
}else
printf("input error!\n");
getch();
}

回答3:

#include

int main(void)
{
int i, j, m;

printf("please input a number: ");
scanf("%d", &m);
for(i=0; i<(m+1)/2; i++)
{
for(j=0; j<(m+1)/2-1-i; j++)
printf(" ");
for(j=0; j<2*i+1; j++)
printf("* ");
printf("\n");
}
for(i=0;i <(m+1)/2-1; i++)
{
for(j=0; j printf(" ");
for(j=0; j<((m+1)/2-1-i)*2-1; j++)
printf("* ");
printf("\n");
}

return 0;
}
如果你用的是C语言,那么这段代码就可以了,非常的简单

回答4:

我的是pascal语言:
program project1;
var n,m,i,j:longint;
begin
read(n);
m:=n div 2;
for i:=1 to m do begin
write('*':m+2-i);
j:=(i-1)*2;
if j<>0 then for j:=1 to j do write('*');
writeln;
end;
for j:=1 to n do write('*');
writeln;
for i:=m downto 1 do begin
write('*':m+2-i);
j:=(i-1)*2;
if j<>0 then for j:=1 to j do write('*');
writeln;
end;
end.