C语言题:有15个数,乱序的,存放在一个数组中,输入一个数,要求找出该数是数组中的第几个元素的值。若果该数不在数组中,则打印出“无此数”
用两种方法做,一种是折半查找法,还有一种就用常规的方法。
#include <stdio.h>
void main()
{
int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
int i,left=0,right=14,flag=0,d,mid;
printf("è¾å ¥æ°å¼:");
scanf("%d",&d);
if(d < a[14]||d >a[0])
{ printf("\nchon gxin:");
scanf("%d",&d);}
for(i=1;i <5;i++) //16个æå¤æ¯è¾4次
{
mid=(left+right)/2;
if(d==a[mid])
{
printf("第 %d 个.\n",mid);
flag=1;break;
}
else if(d>a[mid])
right=mid-1;
else left=mid+1;
}
if(flag==0) printf("æ æ.\n");
}追é®
void main()
{
int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
int i,left=0,right=14,flag=0,d,mid;
printf("è¾å ¥æ°å¼:");
scanf("%d",&d);
if(d < a[14]||d >a[0])
{ printf("\nchon gxin:");
scanf("%d",&d);}
for(i=1;i <5;i++) //16个æå¤æ¯è¾4次
{
mid=(left+right)/2;
if(d==a[mid])
{
printf("第 %d 个.\n",mid);
flag=1;break;
}
else if(d>a[mid])
right=mid-1;
else left=mid+1;
}
if(flag==0) printf("æ æ.\n");
}追é®
大ç¥è¿æç§æ¹æ³å¢ï¼
ä¸ä¼é纳
大ç¥
帮人帮å°åºå§
追çä»ä¹ææ è¿æç§æ¹æ³å¢ æ¯ä¸æ¯ å¦ä¸ç§ ä½ æçæ¯åªä¸ç§ å 为ç¨åº æ好å¤ç§åæ³
追é®ä¸ç§æåæ¥æ¾æ³ï¼ä¸ç§æ¯ä¸ä¸ªä¸ä¸ªçæ¯è¾
追ç#include
int main()
{
int arr[15],i,val;
printf("è¾å
¥15个æ°æ°:");
for(i=0;i=0 && i<15)
printf("第%d个\n",i+1);
else
printf("æ æ¤æ°\n");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2015-11-20
呵呵
我写过这类的,还在吗》哥们追问
我写过这类的,还在吗》哥们追问
代码呢?
追答收费哦
需要吗?
追问收费不要
追答好的
,