如何使用循环显示带有模式的整数?

时间:2020-08-23 14:51:14

标签: c loops for-loop

我正在尝试显示类似的整数

1111
222
33
4

使用循环,但我不知道我的代码出了什么问题,我是C语言编程的新手,感谢您的帮助:D 这是我的代码:

#include <stdio.h>
int main()
{
    int a, b;

    for (int a=4; a<=1; a--) 
    {
        for (int b=1; b<=a; b++) {
        printf("%d", b);
        }
    } 
    printf("\n");
}

4 个答案:

答案 0 :(得分:0)

怎么了?

#include <stdio.h>
int main()
{
    int a, b;

    for (int a=4; a<=1; a--) /* a<=1 is false when a=4 */
    {
        for (int b=1; b<=a; b++) {
        printf("%d", b); /* what is printed depends on b while it shouldn't */
        }
    } 
    printf("\n"); /* this is in wrong place */
}

固定代码:

#include <stdio.h>
int main()
{
    int a, b;

    for (int a=4; a>=1; a--)
    {
        for (int b=1; b<=a; b++) {
            printf("%d", 1 + (4 - a));
        }
        printf("\n");
    }
}

答案 1 :(得分:0)

首先,由于要初始化a = 4,因此第一个循环“ a <= 1”中的条件永远不会为真。

答案 2 :(得分:0)

您的代码有四个问题。

1。

您两次声明ab。在循环之前一次和循环内部一次。您使用的实际上是您在循环的初始化部分中声明/定义的变量。在外部声明的变量ab是完全冗余的,在您的实际代码中未使用。

2。

外部for循环a <= 1的条件永远不会成立,并且您至少不会经历一次循环,因为a是用4初始化的,并且由于4不小于或等于1,因此您将完全没有迭代。

条件必须为a >= 1,而不是a <= 1

3。

printf("\n");需要放置在外部循环的内部,而不是外部。

4。

内部for循环的逻辑是缺陷。我们需要在内部循环内部使用一个计数器,并根据条件对其进行测试,而不要使用并递增b。这样做只会给您每行中按升序排列的数字。

内循环完成后增加b


正确的代码(Online test):

#include <stdio.h>

int main (void)
{
    int a = 4, b = 1;

    for ( ; a >= 1; a-- ) {

        for ( int i = 0; i < a; i++ ) {
             printf("%d", b);
        }  
        b++; 
        printf("\n");
    }      
}

执行:

./a.out
1111
222
33
4

答案 3 :(得分:0)

for (int a=4; a<=1; a--) 

它将在第一次迭代中退出循环,因为a = 4并且4不小于1

一种打印方法是...。

#include <stdio.h>
int main()
{
    int a, b;

    for (a=1; a<=4; a++) 
    {
        for (b=4; b<=1; b--) {
        printf("%d", a);
        }
    } 
    printf("\n");
    printf("Hello, World!\n");
    return 0;
}
相关问题