| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 481 人关注过本帖
标题:请高手帮忙看下,循环的结束条件为什么不能 用m<n
只看楼主 加入收藏
zd1505675319
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:178
注 册:2011-11-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
请高手帮忙看下,循环的结束条件为什么不能 用m<n
#include<stdio.h>
int main()
{    int n,i,k,m,num[50],*p;
    printf("input number of person:n=");
    scanf("%d",&n);
    p=num;
    for(i=0;i<n;i++)
    {
        *(p+i)=i+1;
    }
    i=0;
    m=0;
    k=0;
    while(m<n-1)    //这为什么不能用m<n
    {if(*(p+i)!=0)
        {k=k+1;}
     if(k==3)
        {*(p+i)=0;
         k=0;
         m=m+1;
        }
     i++;
    if(i==n)
        {i=0;}
    }
    while(*p==0)
    {p++;}
    printf("The last one is NO.%d\n",*p);
    return 0;
}
搜索更多相关主题的帖子: person number 
2012-01-11 20:09
zjsxwc
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:252
专家分:601
注 册:2011-1-20
收藏
得分:0 
搞笑,楼主不说这个程序是来干嘛的,让人怎么回答

The tools I recommended:
GUI: CSharp(VS), QT;    Core Code: Plain C (Tiny C Compiler);    Web: Python, JavaScript;    Android: Java;    Embedded System: ASM&C (Linux)
2012-01-11 20:19
zd1505675319
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:178
注 册:2011-11-4
收藏
得分:0 
哦 不好意思。。。n个人围成一圈,顺序排号 从第一个人开始报数(从1到3)凡到3的人退出,求最后剩下的是原来的第几号
2012-01-11 20:36
cuijingchun
Rank: 3Rank: 3
来 自:黑龙江
等 级:论坛游侠
威 望:1
帖 子:108
专家分:186
注 册:2011-9-28
收藏
得分:4 
input number of person:n=10

1  2  3  4  5  6  7  8  9  10  -858993460  
!!上面是printf把*(p+i)i<=n 最后面是一个拉几值, 最后一个没给付值,要N-1,
The last one is NO.1
Press any key to continue


为自己喜欢游戏做一个自动打怪的程序QQ: 7325231    YY4350晚上编程课欢迎大家来听
2012-01-11 21:14
liao06550107
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:111
专家分:696
注 册:2011-10-2
收藏
得分:8 
程序代码:
#include <stdio.h>

int main()
{    
    int n,i,k,m,num[50],*p;
    printf("input number of person:n=");
    scanf("%d",&n);
    p=num;
    for(i=0;i<n;i++)
    {
        *(p+i)=i+1;
    }
    i=0;
    m=0;
    k=0;
    while(m<n-1)    //这为什么不能用m<n //由题意可知:无论有多少人,最后留下的为一个人,用m表示去掉的人数,用n表示总的人数
    {                //无论循环多少次,最后只要去掉的人数等于总人数减一(m=n-1)即可。
        if(*(p+i)!=0)//当游戏开始时去掉的人数m=0, 当去掉的人数为n-1时游戏结束(从m>=0到m<=n-2,m总共减去人数为n-1),所以控制条件为m<n-1
        {            //当然,你也可以当游戏开始时m=1(相当于先保留一个人数), 当去掉的人数为n-1时游戏结束(从m>=1到m<=n-1总共减去人数为n-1),所以控制条件为m<n
            k=k+1;
        }
        if(k==3)
        {
            *(p+i)=0;
            k=0;
            m=m+1;
        }
        i++;
        if(i==n)
        {
            i=0;
        }
    }
    while(*p==0)
    {
        p++;
    }
    printf("The last one is NO.%d\n",*p);
//    for(i=0; i<n; i++)
//        printf("%d ",num[i]);
    return 0;
}


[ 本帖最后由 liao06550107 于 2012-1-11 22:23 编辑 ]

听不同的音乐,看不同的书,游历不同的城市,邂逅不同的人,走的多了,站的高了,自然就看的远了。
2012-01-11 22:21
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:8 
比如一开始有8(n)个人。要去掉7个人后游戏结束。m = 6 时while 执行循环后m+1,去掉了一个人。还剩一个人。可以看出,如果把m < n做为循环控制条件,那么当m = 7时循环还可以进行一次。那么将最后剩下的一个人也卡擦掉了,不在有任何人留下,所以m < n作为控制条件是错误的。按游戏规则,刚开始进行游戏时,去掉的人数只能为0,所以m = 0;
也只有m < n -1 作为控制条件才能保证最后只剩下一个人。

梅尚程荀
马谭杨奚







                                                       
2012-01-12 16:16
zd1505675319
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:178
注 册:2011-11-4
收藏
得分:0 
不好意思结贴晚了 这两天断网
2012-01-14 09:44
快速回复:请高手帮忙看下,循环的结束条件为什么不能 用m<n
数据加载中...
 
   



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

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