题目描述
在一个序列(下标从 0 开始)中查找一个给定的值,输出第一次出现的位置。
题目链接:B2093 查找特定的值 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
输入格式
第一行包含一个正整数 ,表示序列中元素个数。1 ≤ ≤ 10000。
第二行包含 个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔开。元素的绝对值不超过 10000 。
第三行包含一个整数 ,为需要查找的特定值。 的绝对值不超过 10000 。
输出格式
若序列中存在 ,输出 第一次出现的下标; 否则输出 -1
。
解题思路
本题考查数组的遍历操作,我们首先从头开始遍历数组,如果第一次遇到数 ,则输出它的下标并结束程序;如果我们遍历完之后没有结束程序说明没有找到数 ,则输出-1。
解题代码
C代码
//头文件
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
//定义数组并输入数据
int a[n];
for(int i = 0; i < n; i++){
scanf("%d",&a[i]);
}
int x;
scanf("%d",&x);
//从头开始遍历
for(int i = 0; i < n; i++){
if(a[i] == x)
{
printf("%d",i);
return 0;//找到x值后立即输出,即可结束程序
}
}
printf("-1");//程序运行到这说明该数组中并未出现x
return 0;
}
C++代码
//头文件
#include<iostream>
using namespace std;
//定义数组最大长度10010
//1e4表示10的4次方
const int N = 1e4+10;
int a[N];
int main()
{
//初始化flag为-1,表示没找到
int n,t,flag = -1;
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
cin>>t;
for(int i=0;i<n;i++){
if(t == a[i]){ //找到这个数,则输出并跳出循环
flag = i;
break;
}
}
cout<<flag;//如果找到了就输出对应的i,没找到就输出最开始的-1
return 0;
}
Java代码
//导包
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//输入数据
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++){
a[i] = scanner.nextInt();
}
int x = scanner.nextInt();
//遍历数组
int flag = -1;
for (int i = 0; i < a.length; i++) {
if(a[i] == x){
flag = i;
break;
}
}
//输出数据
System.out.println(flag);
}
}
今天的题目相对简单,考察了大家对于数组遍历的掌握!
如果大家有问题,欢迎在群里讨论哦~