我正在尝试显示类似的整数
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");
}
答案 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)
您的代码有四个问题。
您两次声明a
和b
。在循环之前一次和循环内部一次。您使用的实际上是您在循环的初始化部分中声明/定义的变量。在外部声明的变量a
和b
是完全冗余的,在您的实际代码中未使用。
外部for
循环a <= 1
的条件永远不会成立,并且您至少不会经历一次循环,因为a
是用4
初始化的,并且由于4
不小于或等于1
,因此您将完全没有迭代。
条件必须为a >= 1
,而不是a <= 1
。
printf("\n");
需要放置在外部循环的内部,而不是外部。
内部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;
}