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

求解答,关于while循环。

闲客一位 发布于 2022-02-16 14:52, 1984 次点击
程序代码:

#include <stdio.h>
int main()
{
    int i=1,j=1,z;
    while(i<=9&&j<=9){
        z=i*j;
        printf("%d*%d=%d\n",i,j,z);
        j++;
        while(j=9&&i<=9){
            j=1;i++;break;
        }
    }
    return 0;
}

学到了循环嵌套,试着写了九九乘法表,但是结果是这样的。
调试的时候看到第一个while在做完j++就进入了下一个while,不理解为什么。while不是符合条件才会进入循环体吗?我该怎么用while解决呢?

1*1=1
2*1=2
3*1=3
4*1=4
5*1=5
6*1=6
7*1=7
8*1=8
9*1=9
7 回复
#2
闲客一位2022-02-16 15:00
拜托大佬
#3
闲客一位2022-02-16 15:02
噢,我忘了==
#4
See_Sea2022-02-16 15:55
把正确代码和打印结果再贴一遍么
#5
apull2022-02-16 16:49
你这个虽然用了while,但是算不得是循环嵌套。
按你的条件j==9后j=1了,输出不了9,按你的算法改为if更合理。
if(j>9){
    j=1;i++;
}  

循环嵌套要清晰

程序代码:

#include <stdio.h>
int main()
{
    int i=1,j,z;
    while(i<=9){//控制行
        j=1;
        while(j<=i){  //控制列,改为(j<=9)则输出所有
            printf("%d*%d=%d\t",j,i,i*j);
            j++;
        }
        printf("\n");
        i++;
    }
    return 0;
}


[此贴子已经被作者于2022-2-16 16:56编辑过]

#6
不会游泳的虾2022-02-18 10:22
供参考:
程序代码:
#include <stdio.h>
int main()
{
    int i = 1, j = 1, z;
    while (i <= 9) {  //while (i <= 9 && j <= 9)
                     
//z = i * j;
        j = 1;
        while (j <= i) {  //(j = 9 && i <= 9) {
            printf("%d*%d=%-2d ", i, j, i * j);
            j++;         //i++; break;
        }
        printf("\n");
        i++;//j++;
    }
    return 0;
}
#7
闲客一位2022-02-18 11:29
回复 4楼 See_Sea
程序代码:
#include"stdio.h"
int main(){
    int i=1,j=1,z=0;
    while(i<=9&&j<=9){
        printf("%d*%d=%d\t",i,j,i*j);
        j++;
        while(j==10&&i<=9){
            j=1;i++;}
    }
    return 0;
}

谢谢提醒,这个是后来发现==错了之后改的。结果就没有错了。
程序代码:
#include"stdio.h"
int main(){
    int i=1,j=1,z=0;
    while(i<=9&&j<=9){
        printf("%d*%d=%d\t",i,j,i*j);
        j++;
        if(j==10&&i<9){
            j=1;i++;}
    }
    return 0;
}
后来想想还是觉得if比较合适又改的if。用for和do-while都做了一遍,觉得原来的第二个while里的i<=9改成了if里面的i<9比较适合。最后while就成了这样。
#8
闲客一位2022-02-18 11:35
回复 5楼 apull
感谢,这样输出比我书上看到的好多了。
1