#include<stdio.h>
#include <stdlib.h>
#include <time.h>
int num1;
int num2;
int main()
{
int N[40];
for(int i=0;i<40;i++)//初始化
{
N[i]=0;
}
int n;
printf ("please input the number of n(0<n<=40):");
scanf("%d",&n);
int a[n-1];
srand((unsigned)time(NULL));
for (int i=0;i<n;i++)//生成随机数
{
int num=rand()%100;
a[i]=num;
}
for(int i=0;i<n;i++)//给N数组赋值
{
N[i]=a[i];
}
printf ("随机数如下:");
for (int i=0;i<n;i++)//输出随机数
{
printf("%d ",N[i]);
}
printf ("\n");
int* m=N;
float arr;
arr=average(m,n);
printf ("大于平均值的数有:");
for (int i=0;i<n;i++)//输出大于平均数的数
{
if(N[i]>arr)
{
printf ("%d ",N[i]);
}
}
printf ("\n");
int max(int* m,int n);
int Max;
Max=max(m,n);
int min(int* m,int n);
int Min;
Min=min(m,n);
void swap(int* m,int i,int j);
swap (m,num1,num2);// 交换最大值最小值
printf ("交换最大值最小值后的数组:");
for (int i=0;i<n;i++)//输出交换后数组
{
printf("%d ",N[i]);
}
printf ("\n");
for (int i=0;i<n/2;i++)//逆置数组
{
swap(m,i,n-1-i);
}
printf ("逆置后的数组为:");
for (int i=0;i<n;i++)//输出逆置后的数组
{
printf("%d ",N[i]);
}
printf ("\n");
void Bub(int *m,int n);
Bub(m,n);
printf ("冒泡排序后的数组为:");
for (int i=0;i<n;i++)//输出冒泡排序后的数组
{
printf("%d ",N[i]);
}
printf ("\n");
int seek;
printf("请输入一个需要查找的数:");
scanf("%d",seek);
int Seq(const int* m,int seek,int n);
int flag1;
flag1=Seq(m,seek,n);
printf("%d ",flag1);
if(flag1>=1)//顺序查找输出
{
printf("该数的下标为:%d\n",flag1);
printf("结果:该组数据中有%d\n",seek);
}
else
{
printf("结果:该组数据中没有%d\n",seek);
}
int flag2;
int Bin(const int* m,int seek,int n);
Bin(m,seek,n);
flag2=Bin(m,seek,n);
if(flag2>=1)//二分查找输出
{
printf("该数的下标为:%d\n",flag2);
printf("结果:该组数据中有%d\n",seek);
}
else
{
printf("结果:该组数据中没有%d\n",seek);
}
//printf ("%d ",num1);
//printf ("%d ",num2);
//printf ("最小值是:");
//printf("%d",Min);
//printf ("最大值是:");
//printf("%d",Max);
//printf ("average is :");
//printf("%f",arr);
}
void swap(int N[40],int i,int j)
{
int temp=N[i];
N[i]=N[j];
N[j]=temp;
}
float average(int N[40],int n)
{
float sum;
float average;
for(int i=0;i<n;i++)
{
sum+=N[i];
}
average=sum/n;
return (average);
}
int max(int N[40],int n)
{
int max=0;
max=N[0];
for(int i=0.0;i<n;i++)
{
if(max<=N[i])
{
max=N[i];
num1=i;
}
}
printf ("最大值的下标是:");
printf("%d",num1);
printf ("\n");
return (max);
}
int min(int N[40],int n)
{
int min=0;
min=N[0];
for(int i=0.0;i<n;i++)
{
if(min>=N[i])
{
min=N[i];
num2=i;
}
}
printf ("最小值的下标是:");
printf("%d",num2);
printf ("\n");
return (min);
}
void Bub(int N[40],int n)
{
int i,j,temp;
for (i=1;i<n;i++)
{
for (j=0;j<n-i;j++)
{
if (N[j]>N[j + 1])
{
temp=N[j];
N[j]=N[j+1];
N[j+1]=temp;
}
}
}
}
int Seq(const int N[40],int seek,int n)
{
int count=0;
printf("将该组数据进行顺序查找:\n");
printf("比较的数据有:");
for(int i=0;i<n;i++)
{
printf("%d ",N[i]);
count+=1;
if(N[i]==seek)
{
printf("比较的次数为:%d次\n", count);
return (count-1);
break;
}
}
printf("比较的次数为:%d次\n", count);
return -1;
}
int Bin(const int N[40],int seek,int n)
{
int low=0;
int high=n-1;
int count=0;
printf("将重新排序数据进行二分查找:\n");
printf("比较的数据有:");
while(low<=high)
{
int mid=(low+high)/2;
printf("%d",N[mid]);
count+=1;
if(N[mid]==seek)
{
printf("\n比较的次数为:%d次\n", count);
return mid;
}
else if(N[mid]>seek)
{
high=mid-1;
}
else
{
low=mid+1;
}
}
printf("\n比较的次数为:%d次\n", count);
return -1; // 不存在返回-1
}
程序如上,想请教各位大神主函数到冒泡排序之后调用不了Sqe和Bin函数了