64 C语言数组元素的查询
来源:互联网 发布:上古卷轴5 杰洛特数据 编辑:程序博客网 时间:2024/05/03 21:51
C学习网:链接->C学习网
C训练网:链接->C训练网
在实际开发中,经常需要查询数组中的元素。例如,学校为每位同学分配了一个唯一的编号,现在有一个数组,保存了实验班所有同学的编号信息,如果有家长想知道他的孩子是否进入了实验班,只要提供孩子的编号就可以,如果编号和数组中的某个元素相等,就进入了实验班,否则就没进入。
不幸的是,C语言标准库没有提供与数组查询相关的函数,所以我们只能自己编写代码。
对无序数组的查询
所谓无序数组,就是数组元素的排列没有规律。无序数组元素查询的思路也很简单,就是用循环遍历数组中的每个元素,把要查询的值挨个比较一遍。请看下面的代码:
- #include <stdio.h>
- #include <stdlib.h>
- int main(){
- int nums[10] = {1, 10, 6, 296, 177, 23, 0, 100, 34, 999};
- int i, num, subscript = -1;
- printf("Please input an integer: ");
- scanf("%d", &num);
- for(i=0; i<10; i++){
- if(nums[i] == num){
- subscript = i;
- break;
- }
- }
- if(subscript<0){
- printf("%d isn't in the array.\n", num);
- }else{
- printf("%d is in the array, and it's subscript is %d.\n", num, subscript);
- }
- system("pause");
- return 0;
- }
Please input an integer: 100
100 is in the array, and it's subscript is 7.
Please input an integer: 28
28 isn't in the array.
第10~15行代码是关键,它会遍历数组中的每个元素,和用户输入的数字进行比较,如果相等就获取它的下标并跳出循环。
注意:数组下标的取值范围是非负数,当 subscript >= 0 时,该数字在数组中,当 subscript < 0 时,该数字不在数组中,所以在定义 subscript 变量时,必须将其初始化为一个负数。
对有序数组的查询
查询无序数组需要遍历数组中的所有元素,而查询有序数组只需要遍历其中一部分元素。例如有一个长度为10的整型数组,它所包含的元素按照从小到大的顺序(升序)排列,假设比较到第4个元素时发现它的值大于输入的数字,那么剩下的5个元素就没必要再比较了,肯定也大于输入的数字,这样就减少了循环的次数,提高了执行效率。请看下面的代码:
- #include <stdio.h>
- #include <stdlib.h>
- int main(){
- int nums[10] = {0, 1, 6, 10, 23, 34, 100, 177, 296, 999};
- int i, num, subscript = -1;
- printf("Please input an integer: ");
- scanf("%d", &num);
- for(i=0; i<10; i++){
- if(nums[i] >= num){
- if(nums[i] == num){
- subscript = i;
- }
- break;
- }
- }
- if(subscript<0){
- printf("%d isn't in the array.\n", num);
- }else{
- printf("%d is in the array, and it's subscript is %d.\n", num, subscript);
- }
- system("pause");
- return 0;
- }
- 如果 nums[i] == num,则 num 在数组中,那么就需要给 subscript 赋值,记录当前元素的下标;
- 如果 nums[i] > num,则 nums 不在数组中。
无论哪种情况,都没有必要再继续循环下去了,所以一旦满足 nums[i] >= num,就应该使用 break 跳出循环。
阅读全文
0 0
- 64 C语言数组元素的查询
- C语言数组元素的查询
- C语言求一维数组的元素个数
- C语言数组元素的循环移位
- C语言:二维数组元素的引用
- c语言 数组元素逆序
- c语言 坐标系的转化 数组元素顺序的变换
- 用C语言 输出数组的全部元素
- 【C语言】12-指向一维数组元素的指针
- 【C语言】12-指向一维数组元素的指针
- 【C语言】12-指向一维数组元素的指针
- 关于C语言数组之间元素操作的问题
- 【C语言】12-指向一维数组元素的指针
- 【C语言】12-指向一维数组元素的指针
- 【C语言】12-指向一维数组元素的指针
- C语言-指向一维数组元素的指针
- C语言 求旋转数组的最小元素
- C语言,求两个有序数组的公共元素
- VMware CentOS网络连接设置
- java GC是在什么时候,对什么东西,做了什么事情?
- Day4:bash基本操作和命令
- Luncen学习笔记 -- day01 简介
- Git使用中遇到的问题记录
- 64 C语言数组元素的查询
- IntelliJ IDEA部署Servlet
- 第一篇 计算机概论
- .Net快速获取网络文本文件最后一段文字-小应用
- PHP使用swoole来实现实时异步任务队列
- 链表检测是否有环
- Online Algorithms for calculating variance
- mybatis中使用in查询时的注意事项
- Java I/O 知识点(一)