| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 662 人关注过本帖
标题:大家帮我看个程序
只看楼主 加入收藏
lxianw163
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2007-10-4
收藏
 问题点数:0 回复次数:7 
大家帮我看个程序
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
   圈子,问最后留下的是原来第几号的那位。
1. 程序分析:
2.程序源代码:
#define nmax 50
main()
{
int i,k,m,n,num[nmax],*p;
printf("please input the total of numbers:");
scanf("%d",&n);
p=num;
for(i=0;i<n;i++)
 *(p+i)=i+1;
 i=0;
 k=0;
 m=0;
 while(m<n-1)
 {
 if(*(p+i)!=0) k++;
 if(k==3)
 { *(p+i)=0;
 k=0;
 m++;
 }
i++;
if(i==n) i=0;
}
while(*p==0) p++;
printf("%d is left\n",*p);
}
搜索更多相关主题的帖子: 源代码 num printf 
2007-11-22 16:06
lxianw163
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2007-10-4
收藏
得分:0 
请高手给我讲讲这个程序

2007-11-22 16:06
fangfangff
Rank: 1
等 级:新手上路
威 望:2
帖 子:479
专家分:0
注 册:2006-12-22
收藏
得分:0 
你哪里不明白呢???
这个程序有没有编译过呢??
好象有错误吧!!!

千里冰封---My Love 尽管相隔千里 , 依然拥有冰封
2007-11-22 17:09
qiang5219
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-9-10
收藏
得分:0 
是讲你的那程序的每一部的意思吗?
2007-11-22 17:17
now
Rank: 1
来 自:广州
等 级:新手上路
帖 子:544
专家分:0
注 册:2007-11-9
收藏
得分:0 
回复 1# 的帖子
编写风格感觉有点混乱。

GIS
Geographic Information System
你在哪里?——》你的坐标?
2007-11-22 21:23
now
Rank: 1
来 自:广州
等 级:新手上路
帖 子:544
专家分:0
注 册:2007-11-9
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
#define nmax 50
int main(void)
{
        int i,k,n,m,num[nmax],*p;


        printf("please input the total of numbers:");
        scanf("%d",&n);
        p=num;  //指针p指向数组num首地址·

        for(i=0; i<n;i++ )
       {
                *(p+i)=i+1;        //相当于num
=i+1
        }

        i=0;k=0;m=0;   //
变量i作为数组下标,变量k存储报号数,变量M控制循环结束

            while(m<n-1)
            {
                        if(*(p+i)!=0)  //
值不为0时才报号,值为0时不报号
                        {
                                k++;
                        }
                        if(k==3)   //
报号为3时,则将此数置为0,并从下一数开始从新报号
                        {
                                *(p+i)=0;
                                k=0;
                                m++;
                        }
                        i++;   //
数组下标递加,控制轮流报号
                        if(i==n)  //判定一圈报号是否结束,若为真,则第一个数num[0],接着报号

                        {
                                i=0;
                        }
                }

                while (*p==0)  //
取出最终剩下的不为0的数
                        {
                                p++;
                        }
        printf("%d is left!\n",*p);

        system("PAUSE");
        return 0;
}

GIS
Geographic Information System
你在哪里?——》你的坐标?
2007-11-22 23:23
now
Rank: 1
来 自:广州
等 级:新手上路
帖 子:544
专家分:0
注 册:2007-11-9
收藏
得分:0 
可能由于新版式,粘贴时出现了问题,不能显示文字。全为乱码,只能从新解释。
for循环中的解释应为num[i]=i+1
还有不能直接COPY就去编译运行。

GIS
Geographic Information System
你在哪里?——》你的坐标?
2007-11-22 23:28
now
Rank: 1
来 自:广州
等 级:新手上路
帖 子:544
专家分:0
注 册:2007-11-9
收藏
得分:0 
晕,不能显示num[ i ]=i+1.要打多一两个空格才能显示。

GIS
Geographic Information System
你在哪里?——》你的坐标?
2007-11-22 23:31
快速回复:大家帮我看个程序
数据加载中...
 
   



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

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