【题目描述】
在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置。
【输入】
第一行包含一个正整数n,表示序列中元素个数。1 ≤n≤ 10000。
第二行包含n个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔开。元素的绝对值不超过10000。
第三行包含一个整数x,为需要查找的特定值。x的绝对值不超过10000。
【输出】
若序列中存在x,输出x第一次出现的下标;否则输出-1。
【输入样例】
5
2 3 6 7 3
3
【输出样例】
2
说明
主要考查一维数组的基础。
思路分析
n个整数中可能存在相同的数字,要找出第一个出现的数字x,应从数组的首元素开始。根据题意和为了方便写代码,首元素设置为下标1的元素,而不是下标0的元素。
查找过程:
声明和输入。数组a应大于10000。
使用for循环遍历数组,从元素a[1]开始查找,只要找到就输出该位置,并退出循环结束查找。
如果找不到呢?如何判断?
可以声明一个bool类型变量标记是否找到,或者直接使用变量i来判断。在以前的题解中曾使用过bool类型标记,现使用循环变量来判断,这种小技巧很多人都想不到。
代码中,变量i不在循环中声明,而是在循环之前声明。
原理:
如果没有找到指定的值,那么变量i肯定大于变量n(这也是退出循环的条件),所以在循环之后对变量i进行判断,如果i>n,输出-1。
问:变量i不可以写在循环中声明吗?
答:如果变量i在循环中声明,那么变量i的作用域只在循环中有效,离开循环后变量i就被销毁。也就是说,变量i的生命周期只在循环中有效,离开循环后就会结束。
数据类型:每个元素的值很小,所有数据可选int类型。
源码下载
https://pan.baidu.com/s/1ro_SmKG1NKL8_pLS6oYuKQ
提取码: 9uk4
运行结果
参考代码 - C++
END
注:题目来源于网络,转载于《信息学奥赛一本通(C++版)在线评测系统》,点击下方的【阅读原文】即可打开该题的链接。
题解属于本微信公众号【大神编程】原创。