C语言 用for循环分配值

hpcdzsge  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(71)

本节进行电子版分发。如果vNum的值为32,则要打印的结果将为[O]2 6 10 12,但我收到:

[O]2 6 10 12  
[P]  
[Q]

字符串
预计44人将

[O]2 6 10 14  
[P]2 6 4


但我收到:

[O]2 6 10 14  
[P]2 6 4  
[Q]


为什么打印的P和Q级别没有分配值?
其目的是只在其中有值时才出现,就像在0的情况下什么都不出现一样。
我知道这是在外部for循环中的某个东西(int i = 3; i > 0; i--),将为每个级别运行。从i等于3(表示O能级)开始,向下到i表示Q能级。但我不明白怎么才能让这三个人不同时出现。

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main() {
    while (1) {
        int vNum;

        printf("vNum: ");
        scanf("%d", & vNum);

        if (vNum > 0) {
            for (int i = 3; i > 0; i--) {
                printf("[%c]", 82 - i);
                int limit = 2;
                int E = (limit <= vNum ? limit : vNum);

                for (int j = 0; j < i + 1 && E > 0; j++) {
                    printf("%d ", E);
                    usleep(50000);
                    vNum -= E;
                    E = (limit += 4) <= vNum ? limit : vNum;
                }
                printf("\n");
            }
        }

        printf("\n");
    }

    return 0;
}

nx7onnlm

nx7onnlm1#

问题中的代码在外部循环中打印了像[Q]这样的标签,而内部循环是否会打印任何东西还不清楚。
只有当有值要打印时,才有不同的方法打印标签。
一种方法是将printf移动到内部循环中,并使用一个条件仅在第一个值之前打印它。在下面的示例中,c包含要打印的字符,并且它被设置为0以跳过随后的内部循环周期中的printf
我还解决了一些问题。

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main(void) {
    while (1) {
        int vNum;

        printf("vNum: ");
        int rc = scanf("%d", & vNum);
        if(rc != 1) break;

        if (vNum > 0) {
            for (int i = 3; i > 0; i--) {
                int c = 'R' - i;
                int limit = 2;
                int E = (limit <= vNum ? limit : vNum);

                for (int j = 0; j < i + 1 && E > 0; j++) {
                    if(c != 0) {
                        printf("[%c]", 82 - i);
                        c = 0;
                    }
                    printf("%d ", E);
                    usleep(50000);
                    vNum -= E;
                    E = (limit += 4) <= vNum ? limit : vNum;
                }
                printf("\n");
            }
        }
        else break;

        printf("\n");
    }

    return 0;
}

字符串

相关问题