注册 登录
编程论坛 C语言论坛

想不通这个while语句

书山压力不大 发布于 2021-04-29 11:08, 1305 次点击
#include <stdio.h>
//#include <windows.h>
    void main(){
    int i,j,k;
    for (i=1;i<=9;i++) {                   /* 输出1-9行 */
    k=1;
    while (k<=(i-1)*8)                 /* 输出第i行的空格 */
    { printf(" ");k++;}
    for (j=i;j<=9;j++)                 /* 输出乘法等式 */
    printf("%d*%d=%2d  ",i,j,i*j);
    printf("\n");                       /* 换行 */
    }
    //system("pause");
}  
这里
while (k<=(i-1)*8)                 /* 输出第i行的空格 */
    { printf(" ");k++;}

我记得那个 while语句是非零成立就执行直到不成立或者遇到goto和break
,可是这里当i=2,怎么也是输出八个空格,
但是书上的右对齐九九乘法表上面第二排只有一个空格呀呀呀
只有本站会员才能查看附件,请 登录
1 回复
#2
apull2021-04-29 19:02
1*1=1
这几个字下面的空格不是空格了吗,printf("%d*%d=%2d  ",i,j,i*j);这一句里面的空格也不算了吗。

while (k<=(i-1)*8)
k每次进入while的时候先k=1了,后面再k++,i=2的时候,(i-1)*8=8,输出8个空格。
1