假设某数组中有n个整形数据(从键盘中输入),然后查找指定数据x是否存在? 若存在,则输出其第一次出现时的元素下标,若不存在则输出-1;
输入
输入有多行数据,其中:
第一行是一个正整数n(n<100000),表示数组中元素个数。
第二行是 n个 数据(介于-100000 与 1000000之间),空格隔开
第三行是一个整型数x ,表示待查找元素
输出
输出只有整数,若x不存在,则输出-1; 否则,输出数据元素x在数组中的下标
想问一下,这个该怎么解决
#include
int main()
{
int n,a[5000],x;
scanf("%d",&n);
for(int i=0;iscanf("%d", a[i]);
}
for(int i=0;iscanf("%d",&x);
if(a[i]=x)
{
printf("%d",i);
break;
}
else
{
if(i==(a[i]-1))
printf("-1");
}
}
return 0;
}
修改如下,供参考;
#include <stdio.h>
int a[100000];
int main()
{
int n, x, i;
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
scanf("%d", &x);
for (i = 0; i < n; i++)
{
if (a[i] == x) //if (a[i] = x)
{
printf("%d", i);
break;
}
//else
//{
// if (i == (a[i] - 1))
// printf("-1");
//}
}
if (i >= n) printf("-1");
return 0;
}
// x只输入一个就可以了,你要写在循环外面
#include <stdio.h>
int main() {
int x, n,count =0;
printf("请输入一个数:\n");
scanf("%d", &n);
int a[n];
for (int i = 0; i<n; i++) {
scanf("%d", &a[i]);
}
printf("请输入x\n");
scanf("%d", &x);
for (int i = 1; i<n; i++) {
if (x==a[i]) {
printf("%d ",i);//可能存在多个和X相同的元素,所以应该不要break吧
count++;
}
}
if (count==0) {
printf("\n-1\n");
}
return 0;
}