我们怎么知道这是数组中的最后一个元素?

2024-02-19

我有以下代码:

int array[5] = {1, 0, 1, 0, 0};

int i;

for(i = 0; i < 5; i++)
{
   if(array[i] == 1)
   {
      printf("found one\n");
   }
}

我们怎么知道第二个1 in the array是最后一个1我们发现? 我的意思不是保留最后的值1,我的意思是我们应该如何知道第二个1是最后一次出现了,没有再出现了吗?


您可以简单地以相反的顺序循环:

for(i = 4; i >= 0; i--)
{
   if(array[i] == 1)
   {
      printf("last 1 found!\n");
      //break or do whatever you want
   }
}

我们可以进一步改进代码如下:

int main(){
    int array[] = {1, 0, 1, 0, 0}, i;   
    for(i=sizeof(array)/sizeof(int)-1; array[i]!=1 && --i;); 
    printf("last 1 found at index = %d\n", i);
    return 1;
}

Codepad http://codepad.org/Z4jE3VaW.

第二种形式的代码有一些额外的好处:

  • 包括初始化。
  • 数组的大小独立性。
  • 快速有两种方式:短路行为 http://en.wikipedia.org/wiki/Short-circuit_evaluation的 &&,--i将在需要时执行。
  • 较小的代码(删除if(), break).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我们怎么知道这是数组中的最后一个元素? 的相关文章

随机推荐

  • 如何解决错误 AADSTS7000218:请求正文必须包含以下参数:“client_secret”或“client_assertion”

    这就是我编写代码并尝试获取输出的方式 请求正文必须包含以下参数 client secret or client assertion static async Task
  • 如何制作自定义 BASH 函数以 cd 到具有自动完成功能的某个目录

    我的项目位于 Documents EP example project命名方案 他们都生活在 Documents 我想创建一个 bash 函数 它允许我从系统上的任何位置 cd 进入项目目录 具有自动完成功能 就像这样 cdp E
  • 通过URL查询Google Adsense数据?

    有没有办法查询里面的数据谷歌 AdSense Python API https developers google com api client library python 通过网址 例如 查找特定页面上的广告点击次数 我找不到文档中列出
  • Powershell比较两个文件并生成第三个文件

    我有 2 个文件 file1 txt 和 file2 txt 我想使用 powershell 比较这两个文件并生成第三个文件 file3 txt 其中包含 file1 txt 中的所有行减去 file2 txt 中的行 以下是文件 1 和
  • 如何在Android上安装JavaCV并使用FrameGrabber

    有人可以告诉我我哪里做错了吗 这些是我遵循的步骤 从 android 开发者网站下载 adt bundle windows 创建一个新项目和一个 libs armeabi 文件夹 将 javacv android arm jar openc
  • LINQ 在字符串数组列表中搜索特定字符串

    我有一个字符串数组列表 List
  • C++ 中的简单事件系统

    我正在为我的游戏引擎设计一个简单的事件系统 我想实现以下事件调度程序接口 Create event dispatcher Dispatcher dispatcher Create objects b and c Created object
  • 使用音频队列处理中断

    我正在开发一个音频流媒体 并声明了一个中断侦听器 以在发生中断 例如来电或短信 时保存歌曲的状态 这是相关代码 在我的 AppDelegate 中 我有这个 AudioSessionInitialize NULL NULL interrup
  • 类型错误:不可散列的类型:'dict'

    这段代码给了我一个错误 TypeError unhashable type dict 谁能向我解释一下解决方案是什么 negids movie reviews fileids neg def word feats words return
  • 如何在 Android 中读取和写入 csv 文件?

    我想将 8 个整数存储到 csv 文件中 文件名将作为 EditText 的输入 并在需要时检索它们 要获取文件名 您可以使用以下命令 EditText fileNameEdit EditText getActivity findViewB
  • 增加 GO 中的堆大小

    有没有办法指示 GO 运行时使用更大的堆 我在跑步GO 1 5 我的 GO 进程目前在 GC 上花费了 34 的时间 但它只使用了 1 3 的可用系统内存 I know ulimit可用于限制最大堆大小 我已将 ulimit 设置为 16G
  • 我可以在我的 Azure 管道中使用 2 个代理池吗?

    我有一个自托管代理 它用作一种部署代理 我们软件的所有发行版本均由该代理构建 然后复制到网络位置 问题 有没有办法可以在管道中同时利用 azure pipelines Microsoft 托管池和我自己的自托管池中的代理 EDIT 不幸的是
  • 从脚本并行 nmap 数千个子网的最佳方法是什么?

    为了清点 A 类网络部分中的端口 我使用 nmap 将其扫描为数千个 C 类网络 我使用并行方式同时运行 32 个子网扫描作业 脚本的最小化版本 while read subnet do echo nmap Pn p tcpport sub
  • Azure 媒体服务将作业回调编码为 URL

    仅使用 REST API 我就可以将文件从本地计算机上传到 Azure 媒体服务并启动编码作业 然后我需要轮询作业的状态以查看它何时完成 但是 我真正想要的是 Azure 媒体服务在完成后向我的回调 URL 发送请求 有办法做到这一点吗 查
  • 在 laravel 4 中测试过滤器

    我是 Laravel 的新手 我正在尝试测试身份验证是否适用于我的网站 并且我想在测试用例中测试身份验证过程 我创建一个内存中的 sqlite 数据库 创建一个新用户并使用 gt save eloquent 的方法将其存储在数据库中 我设置
  • ALSA 记录 - 了解内存映射

    我尝试使用 ALSA 从 USB 音频设备获取输入并将其作为一系列内容写入磁盘signed short价值观 我最终得到的是看似有效的数据块 其中散布着大块的零 我猜测我的缓冲区设置不正确并且没有正确使用内存映射 我正在尝试什么 采样率 8
  • Autofac 注册程序集类型

    在 Castle 中 我曾经执行以下操作来注册来自不同程序集的类型 Classes FromAssemblyNamed MyServer DAL Where type gt type Name EndsWith Repository Wit
  • 重叠绝对定位的内容

    我遇到了一些困难这一页 http louiswalch com beta t urs 它几乎可以正常工作 红色框应位于窗口的中心 h v 作品 黄色框应贴在窗口底部 作品 当窗口小于 400 像素高时 应出现滚动条 并且黄色框应出现在滚动区
  • 按第二列中的时间戳合并多个日志文件

    我有同一天的多个日志文件 我想要做的是根据日志中的时间戳将它们合并为一个Perl script 日志 1 log 2014 06 02 21 54 38 805 INFO com HomeManeger Executor Thread 19
  • 我们怎么知道这是数组中的最后一个元素?

    我有以下代码 int array 5 1 0 1 0 0 int i for i 0 i lt 5 i if array i 1 printf found one n 我们怎么知道第二个1 in the array是最后一个1我们发现 我的