C语言 判断一个数是否是数组中的成员 用C语言编程

顺便给出设计思路或过程

思路:依次遍历该数组,把每个数和需要判断的数进行比较如果相等则退出循环输出存在,如果遍历结束都找不到则不是其成员。

参考代码:

#include "stdio.h"
#define N 5
int main()
{
int a[N]={1,2,3,4,5},i,t;
scanf("%d",&t);
for(i=0;i<5;i++)
if(a[i]==t){
printf("%d是其成员!",t);
break;
}
if(i==5) printf("%d不是其成员!",t);
return 0;     
}
/*
运行结果:
5
5是其成员!
*/
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-02-03
findelem()就是查找函数,查找输入的参数x在数组array的位置,函数返回元素在array中的单元下标
sort()是排序函数,用冒泡排序的方法将数组array从小到大排序
算法思路:
(1)输入数组
(2)对数组进行排序
(3)调用findelem()进行查找,若查找元素比数组单元的值大则判断下一单元,直到x大于等于当前数组单元的值,则该单元的下标就是函数的返回值
#include<stdio.h>
#define LEN 5
int findelem(int elem);
int main()
{
int i;
int x;
int pos;
int array[LEN]={0};
printf("请输入数组:");
for(i=0;i<=LEN-1;i++)
scanf("%d",&array[i]);
printf("请输入要查找的数:");
scanf("%d",&x);
sort(array);
pos=findelem(x,array);
printf("%d在数组的位置为:%d\n",x,pos);
return 0;
}

void sort(int *parray)
{
int i,j,tmp;
for(i=1;i<=LEN-1;i++)
for(j=0;j<=LEN-i-1;j++)
{
if(parray[j]>parray[j+1])
{
tmp=parray[j];
parray[j]=parray[j+1];
parray[j+1]=tmp;
}
}
}

int findelem(int elem, int *parray)
{
int i;
for(i=0;i<=LEN-1;i++)
{
if(parray[i]>=elem)
{
return(i);
break;
}
}
if(i>=LEN) return(i);
}
和其他人的一样,查找函数可以用二分查找进行优化,下面是二分查找算法写的函数,没有实际运行过,如果有问题欢迎追问
int findelem(int elem, int *parray)
{
int mid,upper,lower;

upper=LEN;

lower=1;

mid=(upper+lower)/2;

while(1)

{
if(elem==parray[mid]) return (mid);

if(elem==parray[mid-1]) return (mid-1);

if(elem>parray[mid-1] && elem<parray[mid]) return (mid);

if(elem<parray[mid-1]) //若elem比parray[mid-1],则elem必定在数组mid-1的前面部分
{upper=mid-2; //重新设置查找的上届
mid=(upper+lower)/2;} //重新求新的中间位置

if(elem>parray[mid]) //若elem比parray[mid],则elem必定在数组mid的后面部分
{lower=mid+1; /重新设置查找的下届
mid=(upper+lower)/2;} //重新求新的中间位置
}

}本回答被网友采纳
第2个回答  2014-06-05

第一种:你要知道这个数组的大小,然后用for循环,遍历这个数组,比较这个数是否和数组中的值相等

例:

int main()
{
    char a[10] = {0,1,2,3,4,5,6,7,8,9};
    int b = 1;
    for(int i=0;i<10;i++)
        {
            if(b == a[i])
            {
                cout<<"b是数组a中的成员"<<endl;
                break;
            }
            if(i == 9)
                cout<<"b不是数组a中的成员"<<endl;
        }
}
第二种:你先将该数组排一下序,然后用折半查找,比对数组和该数

第3个回答  2014-06-05
额···
for(int i=0;i<arrsize;++i)
{
if(arr[i]==target)
{
answer = true;
}
}
answser = false;
这还需要思路- -#

另外如果是在排序好的数组中,则使用二分查找,效率更高,不过代码复杂我就不写了本回答被网友采纳
相似回答