第1个回答 2018-12-25
用最简单的方法,好理解,但是代码多了一点:
public static void main(String[] args) {
//空心菱形上部分
for (int hui = 0; hui < 7; hui++) {
for (int shou = 0; shou < 6 - hui; shou++) {
System.out.print(" ");//菱形外空部分(上面)
}
for (int tuo = 0; tuo < 1; tuo++) {
System.out.print("*");
}
if (hui != 0) {//等于0时不运行,比前面的“*”上少一个
for (int hu = 0; hu < hui * 2 - 1; hu++) {
System.out.print(" ");//菱形内空部分(上面)
}
for (int hu = 0; hu < 1; hu++) {
System.out.print("*");
}
}
System.out.println();
}
//空心菱形下部分
for (int soso = 0; soso < 7; soso++) {
for (int sos = 0; sos < soso; sos++) {
System.out.print(" ");//菱形外空部分(下面)
}
for (int so = 0; so < 1; so++) {
System.out.print("*");
}
if (soso != 6) {//等于6时不运行,减掉最后请多余的“*”
for (int so = 0; so < (7 - soso) * 2 - 3; so++) {
System.out.print(" ");//菱形内空部分(下面)
}
for (int so = 0; so < 1; so++) {
System.out.print("*");
}
}
System.out.println();
}
}
}
第2个回答 2013-12-12
void main()
{
//输入任意一个100以内奇数n,输出一个n层菱形
int i, j;
int row; //输入的奇数(菱形的行数)
int leftcol;//左边空格的列数;
int center;//奇数的平均值
//此例以21为例
row = 21;
center = row/2;
leftcol = center;
//菱形上半部分
for (i=0; i<center+1; i++)
{
for (j=0; j<center-i; j++)
{
printf(" ");
}
for (j=0; j<=2*i; j++)
{
printf("*");
}
printf("\n");
}
//菱形下半部分
for (i=center; i>0; i--)
{
for (j=center-i+1; j>0; j--)
{
printf(" ");
}
for (j=2*i-1; j>0; j--)
{
printf("*");
}
printf("\n");
}
return;
}
测试成功了,直接编译运行即可
第3个回答 2013-12-12
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
void main(void){
char i,ci,j,cj,n,x,a[20];
printf("Enter some odd(0<n<100,0 end)...\n");
i=0;
while(1){
scanf("%d",a+i);
if(a[i++]==0) break;
}
printf("\n\n");
for(n=0;a[n];n++){
for(x=a[n]/2+1,i=1,ci=0;i;++ci<x ? i++ : i--){
printf("%*.*s",48-i,1,"");
for(j=1,cj=i;j;--cj>0 ? j++ : j--)
printf("%c",j==1 ? '*' : ' ');
printf("\n");
}
printf("\n");
}
}