| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2416 人关注过本帖
标题:两个程序运行结果不同,求解答原因,分析时总觉得是一样的 求大神帮忙
只看楼主 加入收藏
糯米啊
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2016-11-25
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:9 
两个程序运行结果不同,求解答原因,分析时总觉得是一样的 求大神帮忙
第一个:
#include <stdio.h>
#include <math.h>
int main()
{
    int k,m,i,j;
    for(i=1;i<=9;i++)
    {
        for(j=0;j<=9;j++)
        {
            k=1000*i+100*i+10*j+j;
            m=(int)sqrt(k);
            if(m*m==k)break;
        }
    }
    printf("k=%d,m=%d\n",k,m);
    return 0;
}
第二个:
#include <stdio.h>
#include <math.h>
int main()
{
    int k,m,i,j;
    for(i=1;i<=9;i++)
    {
        for(j=0;j<=9;j++)
        {
            k=1000*i+100*i+10*j+j;
            m=(int)sqrt(k);
            if(m*m==k)
            printf("k=%d,m=%d\n",k,m);
        }
    }
    return 0;
}
搜索更多相关主题的帖子: include return 
2016-12-02 15:21
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:4 
首先,你应该告诉别人两段代码哪里不一样

#include <stdio.h>                   |      #include <stdio.h>
#include <math.h>                    |      #include <math.h>
int main()                           |      int main()
{                                    |      {
    int k,m,i,j;                     |          int k,m,i,j;
    for(i=1;i<=9;i++)                |          for(i=1;i<=9;i++)
    {                                |          {
        for(j=0;j<=9;j++)            |              for(j=0;j<=9;j++)
        {                            |              {
            k=1000*i+100*i+10*j+j;   |                  k=1000*i+100*i+10*j+j;
            m=(int)sqrt(k);          |                  m=(int)sqrt(k);
            if(m*m==k)break;         |                  if(m*m==k)
        }                            |                  printf("k=%d,m=%d\n",k,m);
    }                                |              }
                                     |          }
    printf("k=%d,m=%d\n",k,m);       |
    return 0;                        |          return 0;
}                                    |      }
2016-12-02 15:30
crystone
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:45
专家分:183
注 册:2015-11-26
收藏
得分:4 
哇哦,版主排版用的什么软件?求推荐
2016-12-02 15:34
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:4 
break 跳出内循环, 外循环继续

早知做人那么辛苦!  当初不应该下凡
2016-12-02 15:37
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
回复 3楼 crystone
Beyond Compare 文本比较
AkelPad(VC也可以)剪切,就是按住ALT键,然后用鼠标选择需要复制的区域块
最后就是本bbs的文字作色了
2016-12-02 15:39
糯米啊
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2016-11-25
收藏
得分:0 
回复 4楼 炎天
可是为啥第一个输出的是9999,但是正确的是7744,既然只是一次内循环的跳出,那也应该是先输出小的数吧 不理解
2016-12-02 16:40
糯米啊
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2016-11-25
收藏
得分:0 
回复 3楼 crystone
就是直接复制dev的程序然后粘贴过来的
2016-12-02 16:42
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
回复 6楼 糯米啊
后面还有半句话

早知做人那么辛苦!  当初不应该下凡
2016-12-02 18:40
纵横阳仔
Rank: 7Rank: 7Rank: 7
来 自:自学成才的火星人儿
等 级:贵宾
威 望:26
帖 子:147
专家分:698
注 册:2016-10-20
收藏
得分:4 
回复 6楼 糯米啊
肯定是9999啊
输出的结果是在外循环结束后才输出的,break只是跳出内循环,外循环继续。
因此当执行到9999时,外循环才结束,此时的k值早将前面的运行结果覆盖了。
所以就显示为9999了。

[此贴子已经被作者于2016-12-2 19:12编辑过]

2016-12-02 19:10
枯_草
Rank: 2
等 级:论坛游民
帖 子:17
专家分:44
注 册:2016-11-12
收藏
得分:4 
关键在于那个break。它跳出内层循环,控制权返回它的上一层循环。当循环执行完毕打印最终值。
第二个则是求完值之后控制权才返回。所以两值不一样
2016-12-03 22:29
快速回复:两个程序运行结果不同,求解答原因,分析时总觉得是一样的 求大神帮忙
数据加载中...
 
   



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

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