| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 833 人关注过本帖
标题:报数问题,编译没错运行出错
只看楼主 加入收藏
Dream_LX
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-6-6
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:14 
报数问题,编译没错运行出错
输入一个数,10个人依次报数,求报到这个数的人是第几个人

#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。",j,m);
                break;
            }
            i++;
        }
    }
    return 0;
}


哪里出问题了?求解
搜索更多相关主题的帖子: 个人 
2013-04-09 20:54
icanbestrong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:138
注 册:2013-3-13
收藏
得分:0 
这应该分两种情况吧,还有大于10的吧
2013-04-09 21:52
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
收藏
得分:0 
求报到这个数的人是第几个人

你这不就是 m%10 的事么 要这番兴师动众?

人生是一场错过 愿你别蹉跎
2013-04-09 21:57
icanbestrong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:138
注 册:2013-3-13
收藏
得分:0 
不好意思,你的思路是对的,应该将if(i==m)改成if(j==m),还有break应该是结束外循环的吧,所以应写在外循环上吧,建议你以后用for是用标准点,好阅读,你用的外循环就只相当一个while
2013-04-09 22:02
icanbestrong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:138
注 册:2013-3-13
收藏
得分:0 
3楼高人啊
小弟佩服
2013-04-09 22:03
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:4 
1、scanf("%d",m);这样写是错误的,正确的写法scanf("%d",&m);
2、 for(j=1;j<=10;j++)
         {
             if(i==m)
             {
                 printf("第%d个人报到了%d。",j,m);
                 break;
             }
             i++;
         }
循环中i++的位置不对,这样就会造成无限制的循环。比如你输入m=1,那么i==m,成立后break跳出此层循环,继续进行着i<=m的恒成立判断,所以循环无节制。
修改后的代码如下:
#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。",j,m);
                 break;
             }
         }
          i++;
     }
     return 0;
 }
 

Maybe
2013-04-09 22:09
yctchxf
Rank: 6Rank: 6
来 自:盐城
等 级:侠之大者
威 望:2
帖 子:176
专家分:454
注 册:2012-4-10
收藏
得分:2 
本人发现 scanf(“%d”,m) 处少了取值符。
2013-04-09 22:11
Dream_LX
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-6-6
收藏
得分:0 
回复 2楼 icanbestrong
那个10是10个人循环报数,m是最后要报到的数字,j是第几个人
2013-04-10 01:00
Dream_LX
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-6-6
收藏
得分:0 
回复 3楼 fanpengpeng
呃,用%10是好写可是不知道这样为什么不对...
2013-04-10 01:01
Dream_LX
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-6-6
收藏
得分:0 
回复 4楼 icanbestrong
应该就是i==m吧,因为i是报的数字从1开始一直增加到m,j是第几个人从1到10来回循环
2013-04-10 01:05
快速回复:报数问题,编译没错运行出错
数据加载中...
 
   



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

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