C语言高手救命呀~~~~

来源:百度知道 编辑:UC知道 时间:2024/06/23 12:49:27
数组作业
题目:从键盘输入正整数n(5<n<20),然后接收键盘随机输入的n个整数(假设输入的n个整数
中没有相同的值, 且每个数的绝对值均不超过100),并将它们保存到一维数组中。将这n个
数用选择法升序排列。用折半查找法检索其中是否包含输入的整数x,如果数组中存在整数x,
则输出相应的元素下标,否则输出-1。
要求:
*)自己设计相关的函数:至少包括数组中数据的输入、输出、排序和检索
*)需要在排序前和排序后输出数组中的数据,以便对比检验
*)测试数据应该比较全面,至少包括找到和找不到两种情况
*)打印的源程序中必须以注释的方式给出自己的班级姓名和学号
*)程序必须是调试正确的,其中不得包括语法错误和逻辑错误

#include<iostream>
#include<algorithm>
using namespace std;
int a[100]={0};
bool comp(int a,int b)
{
return a<b;
}
int main()
{
int n;
scanf("%d",&n);
int i;
for( i=0;i<n;i++ )
a[i]=rand()%100+1;
printf("排序前:\n");
for(i=0;i<n;i++)
printf("%d\t",a[i]);
printf("\n");
sort(a,a+n,comp);
printf("排序后\n");
for(i=0;i<n;i++)
printf("%d\t",a[i]);
printf("\n");
int x;
printf("查找x(按F6结束):");
while(scanf("%d",&x)!=EOF)
{
int low=0;
int high=n-1;
int mid=(low+high)/2;
int flag=0;
if(a[low]==x)
{
mid=low;
flag=1;
}
else if(a[high]==x)<