为什么我写了k<=2*i-1,然后他说我的是错的,感觉k<2*i-1才是错的
终于搞懂了
k=0时,k<2*i-1;k=1时,k<=2*i-1
看你的k初始化为多少
int i, j, k; for(i=1; i<5; i++) { for(j=1;j<=4-i;j++) { printf(" "); } for(k=1;k<=2*i-1;k++ ) { printf("*"); } printf("\n"); } return 0; }
int i, j, k; for(i=1; i<5; i++) { for(j=1;j<=4-i;j++) { printf(" "); } for(k=0;k<2*i-1;k++ ) { printf("*"); } printf("\n"); } return 0; }
很好理解的嘛,因为它的星号是1,3,5,7……对应第1,2,3,4……行,所以就是2*i-1;然后例如,当你初始化k为0时,在打印第一行时,你的星号就只能输出一次,所以k<1;第2,3,4……也是这样的道理,当你初始化k=1时,就可以k<=2*i-1了~嘻嘻