永发信息网

C语言,输入15个整数从大到小排序,然后输入一个数字,算出这个数字在这里的位置

答案:2  悬赏:30  手机版
解决时间 2021-03-20 22:18
C语言,输入15个整数从大到小排序,然后输入一个数字,算出这个数字在这里的位置
最佳答案
#include
int main()
{int a[15],i,n,mid,x=0,y=14,sign;
printf("输入15个整数,从大到小排序:");
for(i=0;i<15;i++)
scanf("%d",&a[i]);
printf("输入你想查找的数字:");
scanf("%d",&n);
if( (n>a[0])||(nsign=0;
if(n==a[0])
printf("此数字为第1个");
if(n==a[14])
printf("此数字为第15个");
while(n<=a[0]&&n>=a[14])
{
for(i=0;i<15;i++)
if(n!=a[i]) sign=0;break;
mid=(x+y)/2;
if(n==a[mid])
{printf("´此数字为%d个\n",mid+1);
sign=1;
break;}
else if(n>a[mid])
y=mid-1;
else
x=mid+1;}
if(sign!=1)
printf("该数不存在\n");
return 0;}
你缺少一个条件你缺少了一个如果数字在a[0]和a[14]之间但不属于a[0]到a[14]中的任何一个的条件,所以加上这个就可以了
for(i=0;i<15;i++)
if(n!=a[i]) sign=0;break;
全部回答
#include
int main()
{
int a[15], i, n, mid, x = 0, y = 14, sign;
printf("输入15个整数 : ");
for(i = 0; i < 15; i++) scanf("%d", &a[i]);
printf("输入你想查找的数字 : "); scanf("%d", &n);
for(i = 0; i < 15; i++) if (n == a[i]) break;
if(i == 15) printf("该数不存在\n");
else printf("此数字为%d个\n", i + 1);
return 0;
}追问我们要用折中法,你的方法对的,我们老师说如果有1000个数字,你就要最多比较1000次,折中方法最多10次追答#include
int main()
{
int a[15] = {16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 2, 1};
int n, mid, x = 1, y = 13;
// printf("输入15个整数,从大到小排序:");
// for(i = 0; i < 15; i++) scanf("%d", &a[i]);
printf("输入你想查找的数字: "); scanf("%d", &n);
if((n > a[0]) || (n < a[14])) { printf("该数不存在\n"); return 0; }
if(n == a[0]) { printf("此数字为第1个"); return 0; }
if(n == a[14]) { printf("此数字为第15个"); return 0; }
while(n < a[0] && n > a[14]) {
mid = (x + y) / 2;
if(n == a[mid]) { printf("此数字为%d个\n", mid + 1); return 0;}
if(n > a[mid]) y = mid - 1;
else x = mid + 1;
if (x == y) break;
}
printf("该数不存在\n"); return 0;
}
-------------------
楼主选择的答案,并没有使用“折中法”。
加上这句:for(i=0;i<15;i++)if(n!=a[i]) sign=0;break; 之后,
仍然是 1000 个数,最多要查找 1000 遍。
而且,加上这句之后,本应该查到的数据,也查不到了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
离婚都快两年了.我还是几乎每天晚上做梦梦到
公历阴历
鲁滨孙漂流记作文350字
高分求歌名
我们应该如向看待别人的鼓掌
做错事情弯弯腰道歉
请问最终幻想13诺艾尔实力能与雷霆凯亚斯比吗
类似于小水滴聚在一起落下来,人们管我叫雨的
桑塔纳2000分电器型无高压电,仪表不显示发动
手机声卡是什么东西
文德美术培训学校在什么地方啊,我要过去处理
不在公路上行驶算不算酒驾
古代残佛脚有介值没
永安公寓怎么去啊,有知道地址的么
washroom和bathroom有什么区别?
推荐资讯
贵阳到瓮安的新高速什么时候通车
入职感受怎么写
4个半月的宝宝肛周脓肿又复发了不知道怎么才
单选题Hehasbeenpracticingtheviolin______
通化铁路建材检测中心地址在什么地方,想过去
我的世界怎么删除档案
某纺织厂女工占工人人数总数的8分之5,后来又
翔和酒店用品商行这个地址在什么地方,我要处
↗一个单人加一个由字怎么读
刚才烫头发加热完后有点液体流到了眼睛里,这
大肠与什么相表里
sa58445640十元的老票子80年的值多少钱
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?