[C语言]用循环打印菱形(可输入行数)

首页 / 源码 / 正文
因为作业原因,老师让写,想了又想写过几次,感觉这次代码更好。下面附上我自己写的代码,
#include <stdio.h>
int main()
{
     int i,j,k,n,num;
    printf("请输入要显示的行数,若你输入的是偶数则显示n+1行:");
scanf("%d",&num);
n = num/2;

for(i = 1;i <= n+1;i++)
{
    for(j=i;j <= n;j++)
    {
        printf(" ");
    }
    for(k=2*i-1;k > 0;k--)
    {
        printf("*");
    }
printf("\n");
}
for(i = n; i > 0;i--)
{
    for (j = 0 ;j < (n-i+1) ; j++)
    {
        printf(" ");
        
    }
    for(k = 2*i-1;k >0;k--)
    {
        printf("*");
    }
printf("\n");
    }
return 0;    
}
下面是我们老师写的代码
/*
 输出以下图案:
 假定总行数为n,则上部图案占n/2+1,下部图案 占n/2
      *
    ***
  *****
*******
 *****
  ***
    *
*/
#include <stdio.h>
#include <stdlib.h>

int main()
{
int i = 0, j = 0, count, n;
printf("请输入一个[3,31]的奇数:");
scanf("%d", &n);
count = n / 2;
//输出上部的图案
for( i = 1; i <= count + 1; i++)
{
    //输出前导空格
    for( j = 1; j <= count + 1 - i; j++)
    {
        printf(" ");
    }

    //输出*
    for( j = 1; j <= 2 * i - 1; j++)
    {
        printf("*");
    }

    //输出换行
    printf("\n");
}
//输出下部的图案
for( i = count + 2; i <= n; i++)
{
    //输出前导空格
    for( j = 1; j <= i - (count + 1); j++)
    {
        printf(" ");
    }
    //输出*
    for( j = 1; j <= 2 * (n - i) + 1; j++)
    {
        printf("*");
    }
    //输出换行
    printf("\n");
}

system("pause");
return 0;
}

输出效果
IMG_20161028_005807.jpg
评论区
头像