首页 > 解决方案 > C 如何简化这个 For 循环

问题描述

所以最近我开始了一门教授 C 的课程,我的项目是创建一个基于用户输入的程序,该程序创建一个金字塔,在塔的每一侧之间有两个空间。我找到了一个解决方案,但是我不相信我正确使用了它,有没有办法可以简化它?高度选择范围应为 1-8,并由 # 组成

{
// User Check Point
int value;
do
{
// User Prompt for integer
    value = get_int("Height: ");
}
while (value > 8 ||value < 1);
// Once user value is sufficient code will continue    
{
// loop to create pyramid   

printf("\n       ");
for (int i = 7;i<value;i++) putchar('#');
printf("  ");
for (int i = 7;i<value;i++) putchar('#');
printf("\n      ");
for (int i = 6;i<value;i++) putchar('#');
printf("  ");
for (int i = 6;i<value;i++) putchar('#');
printf("\n     ");
for (int i = 5;i<value;i++) putchar('#');
printf("  ");
for (int i = 5;i<value;i++) putchar('#');
printf("\n    ");
for (int i = 4;i<value;i++) putchar('#');
printf("  ");
for (int i = 4;i<value;i++) putchar('#');
printf("\n   ");
for (int i = 3;i<value;i++) putchar('#');
printf("  ");
for (int i = 3;i<value;i++) putchar('#');
printf("\n  ");
for (int i = 2;i<value;i++) putchar('#');
printf("  ");
for (int i = 2;i<value;i++) putchar('#');
printf("\n ");
for (int i = 1;i<value;i++) putchar('#');
printf("  ");
for (int i = 1;i<value;i++) putchar('#');
printf("\n");
for (int i = 0;i<value;i++) putchar('#');
printf("  ");
for (int i = 0;i<value;i++) putchar('#');
printf("\n");
}
}


标签: cloopsfor-loop

解决方案


那么你的问题有点模棱两可。假设您需要创建一个由用户指定大小的金字塔,您可以尝试以下操作:

int i, j, value; 
for(i=1; i<=value; i++) { 
    for(j=i; j<value; j++) { 
        printf(" "); 
    }
    for(j=1; j<=(2*i-1); j++) { 
        printf("#"); 
    } 
    printf("\n"); 
} 

这不是确切的答案,但将是一个好的开始。


推荐阅读