编一个C程序

来源:百度知道 编辑:UC知道 时间:2024/05/13 23:50:39
题目是:1、编写一个程序完成查找功能,将若干个数存放在一个一维数组钟,查找某个数是否存在,存在输出该数所在的位置,否则“no”。
2、接上题,如果该数组中的数据是从大到小已经排列好的,是否有更快的查找方法呢?

#include "stdio.h"
main()
{int a[10];
int k,i;
int t=0;
printf("\nPlease Input values in the array:\n");
for (i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\nPlease Input A Number:\n");
scanf("%d",&k);
for (i=0;i<10;i++)
if (k==a[i])
{printf("%d",i+1);
break;}
else t++;
if (t==10)
printf("no");
}
先定义一个可以存放十个元素的一维数组。再对它进行赋值。再让用户输入一个随机数。然后把元素中的各元素与这个数K比较。如果和其中某一元素相等,则输出该数位置。因为下标是从0开始。所以,相应的位置应该是i+1,而不是该下标的值i。T的作用实际上是一个记数器。它用来辨断,在循环中是否用到了break。如用到了,则说明有元素和该数相等。如没有则使T+1,直到循环结束时还没有用到break,则T的值就会是10。这就说明没有元素和该数相等。注意:这个T其实很重要,如果缺少这个变量,那么输出no这个语句无论放在循环里面还是外部,都达不到有元素和K相等就只输出该数,没有元素和K相等就只输出NO的效果。

写得很详细了。。你如果看懂了,就自己再练习练习。多练才能进步哦。

1.用一个循环一一比较,位置就是这个数的下标
2.用二分法,先跟数组的中间那个数比较,比它大,则取数组左半段,再与其中间比较;比它小的话取右边半