回 帖 发 新 帖 刷新版面

主题:请教一个关于c语言指针的问题

要求n个人围成一圈,顺序排号,从第一个人开始1-3报数,报到3的那个人推出圈子,求最后剩下的一人的原本的序号。请各位高手看一下,以下是代码:
#include <stdio.h>
#define n 25
void main()
{
    int a[n],i,j,*p,m;// 定义m为退出人数,j为报数//
    p=a;
    for (i=0;i<n;i++)
    {
        *(p+i)=i+1;
    }
    j=0;
    i=0;
    m=0;
    while (m<n-1)
    {
        if (*(p+i)!=0)
        {
            j=j+1;
        }
            if (j==3)
            {
               *(p+i)=0;
               j=0;
               m=m+1;
            }
            
        i=i+1;
        if (i==n) i=0;
    }
    while (*p==0) p++;
    printf("%d is left\n",*p);
}
这个是行的,但如果把就在上面的倒数第三行的while (*p==0) p++;去掉,在倒数第二行的*p改为*(p+i)的话就不行了,到底为什么呢?各位高手能告诉小弟吗? 万分感谢!

回复列表 (共4个回复)

沙发

大型成熟IM即时通讯、视频会议软件高清融合通讯系统  可定制开发模块服务


富特维是领先的多媒体通讯产品供应商和解决方案服务商,致力于不断提升视频处理技术以及音视通讯技术,面向全球提供领先的视频通讯、无线通讯、纯高清晰视频会议等系列化产品。
创立至今,富特维始终掌握着世界顶级多媒体音视频编解码核心技术,在技术研发、产品生产和市场运作方面具有丰富的实战经验。其致力于以服务广大客户为主导,以向企业集团客户和政府、教育、医疗机构等各传统、新兴行业提供专业、高效的多媒体视讯产品和解决方案为己任。并相继在山东、上海、苏州、厦门等地成立了分支机构,形成了“立足山东,面向全国,拓展海外”的战略发展布局。
产品体系结构完整,拥有从服务端到客户端的一系列产品,并根据用户需求和预算状况为您量身定制。产品设计更满足国内用户使用习惯,安装调试非常简单,操作方便,易用性强。产品采用系统底层加密、会议室密码验证多重安全措施,使远程会议更安全可靠。

技术介绍:
FirstV 互动协同办公系统是采用流媒体技术开发的全新一代视频会议产品,该产品为政府、企业、学校等用户提供一个多媒体通信平台,引入“双流合一”的产品理念,集视频、音频、数据、OA等多媒体与一体,连通Internet网、固定电话网和移动网。使这个平台除了为用户提供视频会议这样一个传统功能外,突出数据协同功能、多网合一功能,为此企业可以方便地进行商务会议、内部培训、协同工作和及时沟通,即使您在火车上或是飞机上都能够及时的组织和参加会议。
FirstV采用自主的GVC(G Video Codec)视频编码器,基于MPEG-4视频编码标准,包含了H.264的核心设计,提供不同的视频标准源格式、码率、帧频下矩形图像的有效编码。它采用独特的编码优化算法,并引入DSP技术,使系统能够在传输环境复杂的INTERNET网上达到满意的图像质量比传统的专线视频会议系统更为出色。FirstV视频编码器针对先进的H.264/ MPEG-4的编解码技术进行优化,提供单重固定码流编码,单重质量模式动态码流编码,并加入动态关键帧距等多项适合互联网通讯的关键核心技术。FirstV 视频编码器能针对不同带宽编码出各种码流(16Kbps~8Mbps),用户可在较低带宽情况下(300K左右)获得高视频质量。
FirstV 音频编码器采用16KHZ频率采样,针对复杂网络情况提供多码率编码(6Kbps ~64Kpbs),对不同的实际网络具有智能适应性;在国际标准中,使用MOS(Mean Opinion Score)方法来评价语音压缩后的质量,电话音质为4分,经过FirstV 音频编码技术编码后的语音质量为4.02~4.64,真正实现在低码流带宽下提供高质量的语音音质。
FirstV QOS技术是一套实用的基于IP网络传输音视频数据的网络传输包,它能实现当网络丢包率为20%~30%情况下,保障语音连续,视频流畅。同时该技术使得FirstV成为业界首个在利用单台服务器单线路网络条件下真正解决南北网络互通难题的产品。
咨询QQ:2210977384 
咨询电话:400-656 1266
邮  箱:2210977384@qq.com
网站:http://www.first-v.com.cn/

板凳


倒数第三行是查找最后剩下的那个数字  如果去掉的话  指针指向的是数组的第一个数字

3 楼


你用*(p+i)的到的只是最后一次变成零的后面的一个数字  而这个数字很可能在前面的循环中已经被置为0了  所以你有时候得到的是正确结果  大部分时候得到的是0

4 楼


ok 明白了 谢谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册