标题:求解答,关于while循环。
只看楼主
闲客一位
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2022-2-4
结帖率:100%
 问题点数:0 回复次数:7 
求解答,关于while循环。
程序代码:
#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
搜索更多相关主题的帖子: 九九 int 循环 条件 while 
2022-02-16 14:52
闲客一位
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2022-2-4
得分:0 
拜托大佬
2022-02-16 15:00
闲客一位
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2022-2-4
得分:0 
噢,我忘了==
2022-02-16 15:02
See_Sea
Rank: 2
等 级:论坛游民
帖 子:16
专家分:25
注 册:2022-1-27
得分:0 
把正确代码和打印结果再贴一遍么
2022-02-16 15:55
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:0 
你这个虽然用了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编辑过]

2022-02-16 16:49
不会游泳的虾
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:101
专家分:643
注 册:2021-7-1
得分:0 
供参考:
程序代码:
#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;
}
2022-02-18 10:22
闲客一位
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2022-2-4
得分:0 
回复 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就成了这样。
2022-02-18 11:29
闲客一位
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2022-2-4
得分:0 
回复 5楼 apull
感谢,这样输出比我书上看到的好多了。
2022-02-18 11:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-508366-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049328 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved