本节进行电子版分发。如果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;
}
型
1条答案
按热度按时间nx7onnlm1#
问题中的代码在外部循环中打印了像
[Q]
这样的标签,而内部循环是否会打印任何东西还不清楚。只有当有值要打印时,才有不同的方法打印标签。
一种方法是将
printf
移动到内部循环中,并使用一个条件仅在第一个值之前打印它。在下面的示例中,c
包含要打印的字符,并且它被设置为0以跳过随后的内部循环周期中的printf
。我还解决了一些问题。
字符串