【九度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 日