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

顺便给出设计思路或过程... 顺便给出设计思路或过程 展开
 我来答
985967518
推荐于2017-09-16 · 知道合伙人教育行家
985967518
知道合伙人教育行家
采纳数:18027 获赞数:109866
14年本科毕业于河南理工大学,至今就读于河南理工大学攻读硕士学位,从事编程学习已有5年。

向TA提问 私信TA
展开全部

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

参考代码:

#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是其成员!
*/
qscorpius_fly
推荐于2018-02-03 · TA获得超过1860个赞
知道小有建树答主
回答量:811
采纳率:80%
帮助的人:316万
展开全部
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;} //重新求新的中间位置
}

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
信狂眼0Q
2014-06-05 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2340
采纳率:87%
帮助的人:481万
展开全部

第一种:你要知道这个数组的大小,然后用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;
        }
}
第二种:你先将该数组排一下序,然后用折半查找,比对数组和该数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
草根英雄1
2014-06-05 · TA获得超过409个赞
知道小有建树答主
回答量:379
采纳率:0%
帮助的人:232万
展开全部
额···
for(int i=0;i<arrsize;++i)
{
if(arr[i]==target)
{
answer = true;
}
}
answser = false;
这还需要思路- -#

另外如果是在排序好的数组中,则使用二分查找,效率更高,不过代码复杂我就不写了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式