编写一个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;
}

在这个程序示例中,我们移除了多个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