【九度OJ】题目1052:找x 解题报告

【九度OJ】题目1052:找x 解题报告

标签(空格分隔): 九度OJ


[LeetCode]

http://ac.jobdu.com/problem.php?pid=1052

题目描述:

输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。

输入:

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

输出:

对于每组输入,请输出结果。

样例输入:

2
1 3
0

样例输出:

-1

Ways

查找题。

因为要查找的数字的个数比较少,所以,可以直接遍历。

所以我写了以下代码,但是没通过。

#include <stdio.h>

int main() {

    int n;
    int buf[200];
    int search;
    int answer = -1;

    while (scanf("%d", &n) != EOF) {
        for (int i = 0; i < n; i++) {
            scanf("%d", &buf[i]);
        }
        scanf("%d", &search);
        for (int i = 0; i < n; i++) {
            if (buf[i] == search) {
                answer = i;
                break;
            }
        }
        printf("%d\n", answer);

    }
    return 0;
}

好生气。感觉自己写的没问题。但是找了以下原因发现,我的这个answer是在循环体外边的,并不是每次循环都是赋值为-1的,所以上次的结果会影响下一次的。

所以,学到一个经验。在这样的刷题中,一定要把用到的变量,随用随定义。不要把变量的初始化放到循环体外边,这样容易上次的结果影响这次的。所以。

#include <stdio.h>

int main() {

    int n;
    int buf[200];


    while (scanf("%d", &n) != EOF) {
        int search;
        int answer=-1;

        for (int i = 0; i < 200; i++) {
            buf[i] = 0;
        }
        for (int i = 0; i < n; i++) {
            scanf("%d", &buf[i]);
        }
        scanf("%d", &search);
        for (int i = 0; i < n; i++) {
            if (buf[i] == search) {
                answer=i;
            }
        }
        printf("%d",answer);

    }
    return 0;
}

Date

2017 年 2 月 16 日

posted @ 2017-02-26 16:40  负雪明烛  阅读(23)  评论(0编辑  收藏  举报