C语言打印菱形图案

编写一个C语言程序,使用for循环、while循环、do-while循环和函数打印各种星形、数字和字母的菱形图案。菱形图案是三角形和倒三角形的组合。因此,我们需要使用一个多层循环来创建顶部三角形,再用另一个循环创建底部倒三角形。

C语言打印菱形星形图案

这个星形图案示例使用两组for循环来打印菱形的上半部分和下半部分。有多个嵌套的for循环来迭代行和列,并打印菱形星形图案。

#include<stdio.h>
int main()
{
 	int i, j, rows; 
 	printf("Enter Diamond Rows =  ");
 	scanf("%d", &rows);

    printf("Diamond Star Pattern\n");
	for(i = 1; i <= rows; i++)
	{
		for(j = 1; j <= rows - i; j++)
		{
			printf(" ");
		}
        for(j = 1; j <= i * 2 - 1; j++)
        {
            printf("*");
        }
		printf("\n");
	}

    for(i = rows - 1; i > 0; i--)
	{
		for(j = 1; j <= rows - i; j++)
		{
			printf(" ");
		}
        for(j = 1; j <= i * 2 - 1; j++)
        {
            printf("*");
        }
		printf("\n");
	}

 	return 0;
}
C Program to Print Diamond Star Pattern

在这个程序示例中,我们移除了多个for循环,而是使用if语句来打印菱形星形图案。

#include<stdio.h>
int main()
{
 	int i, j, k, rows;
 	printf("Enter Diamond Rows =  ");
 	scanf("%d", &rows);
	
	int x = rows - 1;
    int y = 1;

    printf("Diamond Star Pattern\n");
	for(i = 1; i <= rows; i++)
	{
		for(j = 1; j <= x; j++)
		{
			printf(" ");
		}
        for(k = 1; k <= y; k++)
        {
            printf("*");
        }
		if(x > i)
		{
			x = x - 1;
			y += 2;
		}
		if(x < i)
		{
			x += 1;
			y = y - 2;
		}
		printf("\n");
	}
 	return 0;
}
Enter Diamond Rows =  12
Diamond Star Pattern
           *
          ***
         *****
        *******
       *********
      ***********
      ***********
       *********
        *******
         *****
          ***
           *

这个C语言程序允许用户输入一个符号,然后使用while循环以该符号打印菱形图案。我们只是将for循环替换为while循环

#include<stdio.h>
int main()
{
 	int i, j, rows; 
 	printf("Enter Diamond Rows =  ");
 	scanf("%d", &rows);

    printf("Diamond Star Pattern\n");
	i = 1;
	while(i <= rows)
	{
		j = 1;
		while(j <= rows - i)
		{
			printf(" ");
			j++;
		}
		j = 1;
        while(j <= i * 2 - 1)
        {
            printf("*");
			j++;
        }
		printf("\n");
		i++;
	}
	i = rows - 1;
    while(i > 0)
	{
		j = 1;
		while(j <= rows - i)
		{
			printf(" ");
			j++;
		}
		j = 1;
        while(j <= i * 2 - 1)
        {
            printf("*");
			j++;
        }
		printf("\n");
		i--;
	}

 	return 0;
}
Enter Diamond Rows =  11
Diamond Star Pattern
          *
         ***
        *****
       *******
      *********
     ***********
    *************
   ***************
  *****************
 *******************
*********************
 *******************
  *****************
   ***************
    *************
     ***********
      *********
       *******
        *****
         ***
          *

这个示例程序使用do-while循环打印菱形图案。

#include<stdio.h>
int main(void)
{
    int i, j, rows;
    printf("Enter Diamond Rows =  ");
    scanf("%d", &rows);
    
    i = 1;
    
    do  {
        j = 1;
        while(j <= rows - i)
        {
            printf(" ");
            j++;
        }
        j = 1;
        while(j <= i * 2 - 1)
        {
            printf("*");
            j++;
        }
        printf("\n");
        i++;
    }  while(i <= rows);
    
    i = rows - 1;
    do {
        j = 1;
        while(j <= rows - i)
        {
            printf(" ");
            j++;
        }
        j = 1;
        while(j <= i * 2 - 1)
        {
            printf("*");
            j++;
        }
        printf("\n");
        i--;
    } while(i > 0);
}

输出

Enter Diamond Rows =  12
           *
          ***
         *****
        *******
       *********
      ***********
     *************
    ***************
   *****************
  *******************
 *********************
***********************
 *********************
  *******************
   *****************
    ***************
     *************
      ***********
       *********
        *******
         *****
          ***
           *

在以上所有示例中,嵌套for循环内的代码对于菱形的上半部分和下半部分是相同的。因此,如果我们使用函数来编写C语言打印星形菱形图案的程序,就可以实现代码的重用。此外,下面的程序会接受用户输入的符号,并用该符号打印菱形图案。

#include<stdio.h>
void result(int rows, int i, char ch){
    for(int j = 1; j <= rows - i; j++)
    {
        printf(" ");
    }
    for(int k = 1; k <= i * 2 - 1; k++)
    {
        printf("%c", ch);
    }
    printf("\n");
}

int main(void)
{
    int i, rows;
    char ch;
    
    printf("Enter Symbol =  ");
    scanf("%c", &ch);
    
    printf("Enter Diamond Rows =  ");
    scanf("%d", &rows);
    
    for(i = 1; i <= rows; i++)
    {
        result(rows, i, ch);
    }
    
    for(i = rows - 1; i > 0; i--)
    {
        result(rows, i, ch);
    }
}

输出。

Enter Symbol =  $
Enter Diamond Rows =  11
          $
         $$$
        $$$$$
       $$$$$$$
      $$$$$$$$$
     $$$$$$$$$$$
    $$$$$$$$$$$$$
   $$$$$$$$$$$$$$$
  $$$$$$$$$$$$$$$$$
 $$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$
 $$$$$$$$$$$$$$$$$$$
  $$$$$$$$$$$$$$$$$
   $$$$$$$$$$$$$$$
    $$$$$$$$$$$$$
     $$$$$$$$$$$
      $$$$$$$$$
       $$$$$$$
        $$$$$
         $$$
          $

下面提到的程序是显示菱形图案的其余程序。然而,我们对所有示例都使用了for循环,但您可以使用超链接查看其他循环技术。

空心菱形星形图案

下面的示例使用for循环打印空心菱形星形图案。更多示例请点击>>此处

#include<stdio.h>
void loopLogic(int rows, int i)
{
    for (int j = 1; j <= rows - i; j++) {
        printf(" ");
    }
    for (int k = 1; k <= i * 2 - 1; k++) {
        if (k == 1 || k == i * 2 - 1) {
            printf("*");
        } else {
            printf(" ");
        }
    }
    printf("\n");
}
int main(void) {
    int i, rows;
    
    printf("Enter Hollow Diamond Pattern Rows =  ");
    scanf("%d", &rows);
    
    for (i = 1; i <= rows; i++) {
        loopLogic(rows, i);
    }
    for (i = rows - 1; i > 0; i--) {
        loopLogic(rows, i);
    }
}

输出

Enter Hollow Diamond Pattern Rows =  9
        *
       * *
      *   *
     *     *
    *       *
   *         *
  *           *
 *             *
*               *
 *             *
  *           *
   *         *
    *       *
     *     *
      *   *
       * *
        *

半菱形星形图案

下面的C语言程序示例使用for循环和函数打印半菱形星形图案。更多示例请点击>>此处

#include<stdio.h>
void loopLogic(int rows, int i)
{
    for (int j = 1; j <= i; j++) {
        printf("*");
    }
    printf("\n");
}
int main(void) {
    int i, rows;
    
    printf("Enter Half Diamond Pattern Rows =  ");
    scanf("%d", &rows);
    
    for (i = 1; i <= rows; i++) {
        loopLogic(rows, i);
    }
    for (i = rows - 1; i > 0; i--) {
        loopLogic(rows, i);
    }
}

输出

Enter Half Diamond Pattern Rows =  10
*
**
***
****
*****
******
*******
********
*********
**********
*********
********
*******
******
*****
****
***
**
*

半镜像菱形星形图案

下面的示例使用for循环打印镜像半菱形星形图案。更多示例请点击>>此处

#include<stdio.h>
void loopLogic(int rows, int i)
{
    for (int j = 1; j <= rows - i; j++) {
        printf(" ");
    }
    for (int k = 1; k <= i; k++) {
        printf("*");
    }
    printf("\n");
}
int main(void) {
    int i, rows;
    
    printf("Enter Mirrored Half Diamond Pattern Rows =  ");
    scanf("%d", &rows);
    
    for (i = 1; i <= rows; i++) {
        loopLogic(rows, i);
    }
    for (i = rows - 1; i > 0; i--) {
        loopLogic(rows, i);
    }
}

输出

Enter Mirrored Half Diamond Pattern Rows =  9
        *
       **
      ***
     ****
    *****
   ******
  *******
 ********
*********
 ********
  *******
   ******
    *****
     ****
      ***
       **
        *
        *

正方形内的空心菱形图案

下面的示例使用for循环打印正方形内的空心菱形图案。更多示例请点击>>此处

#include<stdio.h>
int main(void)
{
    int i, j, k, rows;
    
    printf("Enter Hollow Diamond inside Square Rows =  ");
    scanf("%d", &rows);
    
    for (i = 0 ; i < rows; i++ )
    {
        for (j = 0 ; j < rows; j++ )
        {
            if(j < rows - i) {
                printf("*");
            }
            else {
                printf(" ");
            }
        }
        for (k = 0 ; k < rows; k++ )
        {
            if (k < i ) {
                printf(" ");
            }
            else {
                printf("*");
            }
        }
        printf("\n");
    }
    
    for (i = 1 ; i <= rows; i++ )
    {
        for (j = 0 ; j < rows; j++ )
        {
            if(j < i) {
                printf("*");
            }
            else {
                printf(" ");
            }
        }
        for (k = 0 ; k < rows; k++ )
        {
            if (k < rows - i ) {
                printf(" ");
            }
            else {
                printf("*");
            }
        }
        printf("\n");
    }
}

输出

Enter Hollow Diamond inside Square Rows =  8
****************
*******  *******
******    ******
*****      *****
****        ****
***          ***
**            **
*              *
*              *
**            **
***          ***
****        ****
*****      *****
******    ******
*******  *******
****************

C语言打印数字菱形图案

以上所有示例都显示了不同形状的菱形星形图案,然而,本节将展示如何显示带数字的菱形图案。

下面的示例使用for循环打印数字菱形图案。更多示例请点击>>此处

#include<stdio.h>
void result(int rows, int i){
    for (int j = 1; j <= rows - i; j++) {
        printf(" ");
    }
    for (int k = 1; k <= i * 2 - 1; k++) {
        printf("%d", k);
    }
    printf("\n");
}
int main(void) {
    int i, rows;
    
    printf("Enter Diamond Number Pattern Rows =  ");
    scanf("%d", &rows);
    
    for (i = 1; i <= rows; i++) {
        result(rows, i);
    }
    for (i = rows - 1; i > 0; i--) {
        result(rows, i);
    }
}

输出

Enter Diamond Number Pattern Rows =  4
   1
  123
 12345
1234567
 12345
  123
   1

空心菱形数字图案

本示例展示了如何打印空心菱形数字图案。

#include<stdio.h>
void result(int rows, int i){
    for (int j = 1; j <= rows - i; j++) {
        printf(" ");
    }
    for (int k = 1; k <= i * 2 - 1; k++) {
        if (k == 1 || k == i * 2 - 1) {
            printf("%d", k);
        } else {
            printf(" ");
        }
    }
    printf("\n");
}
int main(void) {
    int i, rows;
    
    printf("Enter Hollow Diamond Number Pattern Rows =  ");
    scanf("%d", &rows);
    
    for (i = 1; i <= rows; i++) {
        result(rows, i);
    }
    for (i = rows - 1; i > 0; i--) {
        result(rows, i);
    }
}

输出

Enter Hollow Diamond Number Pattern Rows =  7
      1
     1 3
    1   5
   1     7
  1       9
 1         11
1           13
 1         11
  1       9
   1     7
    1   5
     1 3
      1

打印字母菱形图案程序

此示例使用for循环打印从A开始并包含后续字符的字母菱形图案。更多示例请点击>>此处

#include<stdio.h>
void result(int rows, int i)
{
    int alphabet = 64;
    for (int j = 1 ; j <= rows - i; j++ )
    {
        printf(" ");
    }
    for (int k = 1 ; k <= i * 2 - 1; k++ )
    {
        printf("%c", alphabet + k);
    }
    printf("\n");
}
#include <stdio.h>

int main(void)
{
    int i, rows;

    printf("Enter Diamond Pattern of Alphabets Rows = ");
    scanf("%d", &rows);
        
    for (i = 1 ; i <= rows; i++ )
    {
        result(rows, i);
    }
        
    for (i = rows - 1 ; i > 0; i-- )
    {
        result(rows, i);
    }
}

输出

Enter Diamond Pattern of Alphabets Rows = 9
        A
       ABC
      ABCDE
     ABCDEFG
    ABCDEFGHI
   ABCDEFGHIJK
  ABCDEFGHIJKLM
 ABCDEFGHIJKLMNO
ABCDEFGHIJKLMNOPQ
 ABCDEFGHIJKLMNO
  ABCDEFGHIJKLM
   ABCDEFGHIJK
    ABCDEFGHI
     ABCDEFG
      ABCDE
       ABC
        A

空心菱形字母图案

本示例打印空心菱形字母图案。

#include<stdio.h>
void result(int rows, int i)
{
    int alphabet = 64;
    for (int j = 1 ; j <= rows - i; j++ )
    {
        printf(" ");
    }
    for (int k = 1 ; k <= i * 2 - 1; k++ )
    {
        if (k == 1 || k == i * 2 - 1) {
            printf("%c", alphabet + k);
        } else {
            printf(" ");
        }
    }
    printf("\n");
    
}
#include <stdio.h>

int main(void)
{
    int i, rows;
    
    printf("Enter Diamond Pattern of Alphabets Rows = ");
    scanf("%d", &rows);
    
    for (i = 1 ; i <= rows; i++ )
    {
        result(rows, i);
    }
    
    for (i = rows - 1 ; i > 0; i-- )
    {
        result(rows, i);
    }
}

输出

Enter Diamond Pattern of Alphabets Rows = 8
       A
      A C
     A   E
    A     G
   A       I
  A         K
 A           M
A             O
 A           M
  A         K
   A       I
    A     G
     A   E
      A C
       A