
c++最基础数组问题,新手求解
题目描述在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置。输入第一行包含一个正整数n,表示序列中元素个数。1<=n<=10000。第二行包含n个整数,依...
题目描述
在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置。
输入
第一行包含一个正整数n,表示序列中元素个数。1 <=n<= 10000。 第二行包含n个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔开。元素的绝对值不超过10000。 第三行包含一个整数x,为需要查找的特定值。x的绝对值不超过10000。
输出
若序列中存在x,输出x第一次出现的下标;否则输出-1。
样例输入
5
2 3 6 7 3
3
样例输出
2
#include<stdio.h>
int a[9999];
int main()
{
int i,b,d,e;
scanf("%d",&b);
for(i=1;i<=b;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&d);
i=0;
do
{
i++;
if(a[i]==d)
{
e=1;
}
}
while(a[i]!=d);
if(e!=1)printf("-1");
else
printf("%d",i);
return 0;
}
这是我的代码,有值相对应的话可以算出来,但是如果没有的话就会死循环,要怎么改 展开
在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置。
输入
第一行包含一个正整数n,表示序列中元素个数。1 <=n<= 10000。 第二行包含n个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔开。元素的绝对值不超过10000。 第三行包含一个整数x,为需要查找的特定值。x的绝对值不超过10000。
输出
若序列中存在x,输出x第一次出现的下标;否则输出-1。
样例输入
5
2 3 6 7 3
3
样例输出
2
#include<stdio.h>
int a[9999];
int main()
{
int i,b,d,e;
scanf("%d",&b);
for(i=1;i<=b;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&d);
i=0;
do
{
i++;
if(a[i]==d)
{
e=1;
}
}
while(a[i]!=d);
if(e!=1)printf("-1");
else
printf("%d",i);
return 0;
}
这是我的代码,有值相对应的话可以算出来,但是如果没有的话就会死循环,要怎么改 展开
1个回答
展开全部
#include<stdio.h>
int a[10001]; //n <= 10000, 所以至少应该开10001的数组.int a[9999];
int main()
{
int i,b,d,e = 0;//以e为判断条件的话, 最好将其赋初值
scanf("%d",&b);
for(i=1;i<=b;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&d);
i=0;
do
{
i++;
if(a[i]==d)
{
e=1;
}
}
while (i <= b && a[i] != d);
//while(a[i]!=d);循环退出条件应该为2个: 1.数组到达尾部 2.找到该数
if(e!=1)printf("-1");
else
printf("%d",i);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询