首页 > 试题广场 >

找x

[编程题]找x
  • 热度指数:21805 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。

输入描述:
测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。


输出描述:
对于每组输入,请输出结果。
示例1

输入

2
1 3
0

输出

-1

python两行:

while True:
    try:
        a,b,c=input(),list(map(int,input().split())),int(input())
        print(b.index(c) if c in b else -1)
    except:
        break
发表于 2017-10-16 18:17:39 回复(1)
import java.util.Scanner;
public class Main {
    public static void main(String [] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            if(n <1 || n> 200){
                continue;
            }
            int [] num = new int [n];
            for(int i = 0; i <num.length; i ++){
                num [i] = sc.nextInt();
            }
            int x = sc.nextInt();
            int j = 0;
            for(; j <num.length; j ++){
                if(x == num [j]){
                    System.out.print(j);
                    break;
                }
            }
            if(j == num.length){
                System.out.print(“ - 1”);
            }
        }
    }
}
发表于 2018-08-02 22:13:26 回复(0)
#include<stdio.h>
int main()
{
    int n,a[200],i,m,key=0;
    scanf("%d",&n);//输入
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    scanf("%d",&m);
    for(i=0;i<n;i++)
        if(m==a[i])
        {key=1;printf("%d\n",i);break;}
    if(key==0)
        printf("-1\n");
}

发表于 2020-04-07 22:33:26 回复(0)
#include<iostream>
#include<vector>
using namespace std;

int main()
{
    int N;
    while(cin>>N)
    {
        vector<int> vec(N,0);
        int temp,x;
        for(unsigned int i=0;i<N;i++)
        {
            cin>>temp;
            vec[i]=temp;
        }
        cin>>x;
        bool flag=false;
        for(int i=0;i<N;i++)
        {
            if(vec[i]==x)
            {
               cout<<i<<endl;
                flag=true;
                break;
            } 
        }
        if(flag==false)
            cout<<"-1"<<endl;
    }
    return 0;
}

发表于 2016-08-20 18:04:37 回复(0)
#include <stdio.h>

int main(){
    
    int n;
    int x;
    int i;
    int a[200];
    
    //输入数据
    while (scanf("%d", &n) != EOF){
        for (i=0; i<n; i++)
            scanf("%d", &a[i]);
        
        //输入一个值x
        scanf("%d", &x);
        
        //查找
        for (i=0; i<n; i++)
            if (a[i] == x){                //当查找到x时,就跳出循环
                printf("%d\n", i);
                break;
            }

        if (i == n)                    //若已经遍历了整个数组,说明数组不存在x,输出-1
            puts("-1");
    }
    return 0;
}
发表于 2018-02-09 00:02:49 回复(0)
#include<bits/stdc++.h> //万能头
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
using namespace std;

int main(){
	int n;
	while(scanf("%d",&n)!=EOF)
	{
		int a[n];
		int flag=0;
		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\n",i);
				flag=1;
			}
		}
		if (flag==0)
			{
				printf("-1\n");	
			}
	
	} 
    return 0;
}

发表于 2020-09-10 10:16:55 回复(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[] record = new int[n];
        for (int i = 0; i < n; i++) {
            record[i]=scanner.nextInt();
        }
        int search = scanner.nextInt();
        for (int i = 0; i < n; i++) {
            if (record[i]==search){
                System.out.println(i);
                return;
            }
        }
        System.out.println(-1);
    }
}


发表于 2020-03-07 10:03:59 回复(0)
//具体步骤在博客:https://blog.csdn.net/qq_44840148/article/details/104656636 import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int n=sc.nextInt();
            Map<Integer,Integer> map =new HashMap<>(n);
            for(int i=0;i<n;i++){
                map.put(sc.nextInt(),i);
            }
            int x=sc.nextInt();
            if(map.containsKey(x)){
                System.out.println(map.get(x));
            }else {
                System.out.println(-1);
            }
        }
    }
}

发表于 2020-03-04 16:49:05 回复(0)
tips:1.循环查找即可
         2.处理找不到输出-1,初始化赋-1,找到用break结束循环
#include<bits/stdc++.h>
using namespace std;
int main() {
	int n, x, y = -1;
	int a[200] = { 0 };
	while (cin >> n) {
		for (int i = 0; i < n; i++) {
			cin >> a[i];
		}
		cin >> x;
		for (int i = 0; i < n; i++) {
			if (a[i] == x) {
				y = i;
                break;
			} 
		}
		cout << y;
	}
	return 0;
}


发表于 2020-02-18 19:38:12 回复(0)
属于比较基础的查找,遍历查找到所需的数对应位置,复杂度为O(n)
#include<iostream>
#include<cstdio>

using namespace std;

const int Maximum = 200;
int array[Maximum];

int main(){
    int number;
    int x;
    bool find = false;
    cin>>number;
    for(int i=0; i<number; i++){
        cin>>array[i];
    }
    cin>>x;
    for(int j=0; j<number; j++){
        if(x == array[j]){
            find = true;
            cout<<j<<endl;
        }
    }
    if(!find){
        cout<<-1<<endl;
    }
    return 0;
}

😃
发表于 2020-02-13 14:43:10 回复(0)
#include<stdio.h>
int main()
{
    int n,x,flag=-1;
    scanf("%d",&n);
    int a[n];
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    scanf("%d",&x);
    for(int i=0;i<n;i++)
    {
        if(a[i]==x)
            flag=i;
    }
    printf("%d",flag);
}

发表于 2019-08-22 23:14:24 回复(0)
想到了利用字符串的find函数,和字符统计count函数:
#include<iostream>
#include<stdio.h>
#include<string>
#include<algorithm>
using namespace std;
int main(){
    int n;
    string s="";
    while(cin>>n){
        for(int i=0;i<n;i++){
            int t;
            scanf("%d",&t);
            s.append(to_string(t));
            s.push_back(' ');  //拼接成字符串"1023 1035 1045 ..."
        }
        string key;
        cin>>key;
        key.push_back(' '); //查找的字符串也要加上空格。
        string temp = s.substr(0,s.find(k)+1);
        int re = count(temp.begin(),temp.end(),' '); //利用<algorithm>库的count方法。
        if(temp=="")  //没有找到,s.find(k)是-1,temp是空字符串。
            cout<<-1<<endl;
        else
            cout<<re<<endl;
    }
    return 0;
}
不知道效率如何?
发表于 2019-01-20 21:12:15 回复(0)
#include <bits/stdc++.h>
using namespace std;

int main(void) {
    int n, x;
    while (cin >> n) {
        vector<int> v(n);
        for (int i = 0; i < n; ++i) {
            cin >> v[i];
        }
        cin >> x;
        auto it = find(v.begin(), v.end(), x);
        it == v.end() ? cout << "-1\n" : cout << int(it - v.begin()) << endl;
    }
    return 0;
}
发表于 2018-03-20 20:19:51 回复(0)
#include<stdio.h>

int main()
{
    int n, num[200], t, i, x;
    while(scanf("%d", &n) == 1){
        for(i = 0, t = 0; i < n; ++i)
            scanf("%d", &num[t++]);
        scanf("%d", &x); 
        while(--t >= 0 && num[t] != x) continue;
        printf("%d\n", t);
    }
    return 0;
}

发表于 2018-07-21 10:27:16 回复(0)
//由于规模为200,肯定不会超过范围,输入无序,所以采用顺序遍历即可
#include<iostream>
using namespace std;
int main(){
    int n;
    while(cin>>n){
        int* a=new int[n];
        for(int i=0;i<n;i++)
            cin>>a[i];
        int x,pos=-1;
        cin>>x;
        for(int i=0;i<n;i++)
            if(a[i]==x){
                pos=i;
                break;
            }
        cout<<pos<<endl;
    }
}

发表于 2020-01-12 21:45:22 回复(0)
import java.util.*;
public class Main
{
    public static void main(String [] args)
    {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNextInt())
        {
            int n=sc.nextInt();
            int [] arr=new int[n];
            for(int i=0;i<n;i++)
            {
                arr[i]=sc.nextInt();
            }
            int x=sc.nextInt();
            int index=-1;
            for(int i=0;i<n;i++)
            {
                if(arr[i]==x)
                {
                    index=i;
                }
            }
             System.out.println(index);
        }
    }
}
发表于 2020-03-27 21:10:13 回复(0)
#include <cstdio>

int main() {
    int n;
    scanf("%d",&n);
    int arr[210];
    for(int i = 0; i < n; ++i){
        scanf("%d",&arr[i]);
    }
    int x;
    bool flag = false;
    scanf("%d",&x);
    for(int i = 0; i < n; ++i){
        if(arr[i] == x){
            printf("%d\n",i);
            flag = true;
            break;
        }
    }
    if(flag == false)  printf("-1\n");
    return 0;
}

编辑于 2024-01-26 09:20:08 回复(0)
#include<bits/stdc++.h>
using namespace std;

int main() {
    int n;
    while(cin>>n) {
        int a[n];
        for(int i=0; i<n; i++) {
            cin>>a[i];
        }
        int x;
        cin>>x;
        int i;
        for(i=0; i<n; i++) {
            if(x==a[i]) {
                cout<<i<<endl;
                break;
            }
        }
        if(i==n) {
            cout<<"-1"<<endl;
        }
    }
    return 0;
}
发表于 2022-10-02 18:54:41 回复(0)
#include <iostream>
using namespace std;

int main() {
    int n,x;
    int a[300];
    cin >> n;
    for(int i=0; i<n; ++i){
        cin >> a[i];
    }
    cin >> x;
    for(int j=0; j<n; ++j){
        if(x == a[j]){
            cout << j;
            return 0;
        }
    }
    cout << -1;
    return 0;

}

编辑于 2024-03-20 15:14:02 回复(0)
#include <bits/stdc++.h>
using namespace std;

int main() {
    vector<int>v;
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        int t;
        cin>>t;
        v.push_back(t);
    }
    int cha;
    cin>>cha;
    auto it=std::find(v.begin(),v.end(),cha);
    if(it==v.end()) cout<<"-1"<<endl;
    else{
        int d=std::distance(v.begin(),it);
        cout<<d<<endl;
    }
}

发表于 2024-03-18 16:40:08 回复(0)