| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 833 人关注过本帖
标题:报数问题,编译没错运行出错
只看楼主 加入收藏
Dream_LX
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-6-6
收藏
得分:0 
回复 7楼 yctchxf
哦哦,谢谢这个地方确实少了
2013-04-10 01:05
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
收藏
得分:4 

    for(;i<=m;)
    {
        for(j=1;j<=10;j++)
        {
            if(i==m)
            {
                printf("第%d个人报到了%d。",j,m);
                break;
            }
            i++;
        }
    }

你看看 在 i==m后会发生什么:
输出 执行break 跳到上一层i的for i<=m 符合条件 执行j的for 满足 i==m 有break跳回去 又跳过来
就这样 跳来跳去 生生不息

[ 本帖最后由 fanpengpeng 于 2013-4-10 01:14 编辑 ]

人生是一场错过 愿你别蹉跎
2013-04-10 01:07
Dream_LX
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-6-6
收藏
得分:0 
回复 6楼 邓士林
你说的无线循环的问题确实是这样...你一说我才发现,但是你改的还是有问题...
如果把i++放到内层for外面,那么就相当于每个来回报完一遍,i才加了1次,那么内层for循环就没有意义了,这样外层循环m次,每次内层for循环都将j从1+到10,第m次直接当j是1的时候就输出了
2013-04-10 01:18
Dream_LX
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-6-6
收藏
得分:0 
回复 12楼 fanpengpeng
嗯...发现这个问题了。
所以一运行就报错,可是这个应该怎么改呢...求解
2013-04-10 01:20
Dream_LX
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-6-6
收藏
得分:0 
哦,我知道了,再加一个
if(i==m)
{
    break;
}

这样
#include<stdio.h>
int main()
{
    int i=1,j,m;
    printf("请输入要报到的数字=");
    scanf("%d",&m);
    for(;i<=m;)
    {
        for(j=1;j<=10;j++)
        {
            if(i==m)
            {
                printf("第%d个人报到了%d。\n",j,m);
                break;
            }
            i++;
        }
        if(i==m)
        {
            break;
        }
    }
    return 0;
}
就可以了~
2013-04-10 01:24
快速回复:报数问题,编译没错运行出错
数据加载中...
 
   



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

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