int main(int argc, char *argv[]) {
int x,i,j;
printf("Enter X");
scanf("%d",&x);
for(i=0;i<x;i++){
for (j=0;j<x;j++) {
printf("*");
}
printf("\n");
x=x-1;
}
}
我的想法是以
的形式打印星号(*)*****
****
***
**
*
但是如果我的(x = 5)为什么
,我的输出只停止打印前三行*****
****
***
答案 0 :(得分:3)
因为你正在递增i并递减x。因此,循环在三次迭代时终止。你可能想要一个“while(x&gt; 0)”,而不是一个单独的计数器。
while(x > 0){
for (j=0;j<x;j++) {
printf("*");
}
printf("\n");
x--;
}
答案 1 :(得分:1)
学习我认为为变量使用更具描述性的名称很有用,直到你真正学会了如何read C
...
//not ideal but better to get a correct version fist then optimise if needed
int numberOfStars = 4;
for(int counter = numberOfStars ; counter > 0 ; counter--){
int numberOfStarsThisLine = counter;
while (numberOfStarsThisLine)
{
printf("*");
numberOfStarsThisLine--;
}
puts("");
}
}
答案 2 :(得分:0)
您正在减小x的大小,这意味着外部循环:
for(i=0;i<x;i++){
终止于x / 2项......(因为您也在递增i
)
答案 3 :(得分:0)
for(i=0;x>0;i++,x--){
for (j=0;j<x;j++){
printf("*");
}
printf("\n");
}
答案 4 :(得分:0)
for(i=0;i<x;i++){
for (j=i;j<x;j++) {
printf("*");
}
printf("\n");
}