为什么我的 for 循环不能正常工作 (C)?
Why won't my for loop work correctly (C)?
你好,我正在编写一个程序,使用 for 循环和 printf 绘制不同的形状。最后一个形状是菱形,也是唯一一个不能正常工作的形状。用户输入一个介于 1 和 10 之间的奇数整数,这是中间行中的字符数。我将代码分成两部分,顶部和底部。如果用户输入 7,菱形的底部是唯一不起作用的部分,输出应该是:
hhhhh
hhh
h
但是,代码只输出一行:
hhhhh
除了声明变量之外,这是我的下半部分代码:
#include <stdio.h>
int main(){
int i,j,space,dots,diamond;
diamond=7;
space = 1;
dots = diamond - 2 ;
for( j = 0; j < diamond/2 ; j++){
for(i = 0; i < space; i++){
printf(" ");
}
for(j = 0 ; j < dots ; j++){
printf("h");
}
dots = dots - 2;
space++;
printf("\n");
}
return 0;
}
有什么想法吗?
您正在使用 j
两次。
for( j = 0; j < diamond/2 ; j++)
/* ...*/
for(j = 0 ; j < dots ; j++){
第二次使用后,第一次循环的条件不再满足,
这就是它只执行一次的原因。
通过一致的缩进,您更有可能发现这一点。
当我将第二个内部循环中的 j
替换为 i
时,我得到了“7”所需的输出。
你好,我正在编写一个程序,使用 for 循环和 printf 绘制不同的形状。最后一个形状是菱形,也是唯一一个不能正常工作的形状。用户输入一个介于 1 和 10 之间的奇数整数,这是中间行中的字符数。我将代码分成两部分,顶部和底部。如果用户输入 7,菱形的底部是唯一不起作用的部分,输出应该是:
hhhhh
hhh
h
但是,代码只输出一行:
hhhhh
除了声明变量之外,这是我的下半部分代码:
#include <stdio.h>
int main(){
int i,j,space,dots,diamond;
diamond=7;
space = 1;
dots = diamond - 2 ;
for( j = 0; j < diamond/2 ; j++){
for(i = 0; i < space; i++){
printf(" ");
}
for(j = 0 ; j < dots ; j++){
printf("h");
}
dots = dots - 2;
space++;
printf("\n");
}
return 0;
}
有什么想法吗?
您正在使用 j
两次。
for( j = 0; j < diamond/2 ; j++)
/* ...*/
for(j = 0 ; j < dots ; j++){
第二次使用后,第一次循环的条件不再满足,
这就是它只执行一次的原因。
通过一致的缩进,您更有可能发现这一点。
当我将第二个内部循环中的 j
替换为 i
时,我得到了“7”所需的输出。