求助 救救孩子吧
#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++)//生成隨機數(shù)?
? ? {
? ? ? ? int num=rand()%100;
? ? ? ? a[i]=num;
? ? }
?? ?for(int i=0;i<n;i++)//給N數(shù)組賦值?
?? ?{
?? ??? ?N[i]=a[i];
?? ?}
?? ?printf ("隨機數(shù)如下:");
?? ?for (int i=0;i<n;i++)//輸出隨機數(shù)?
?? ?{
? ? ?? ?printf("%d ",N[i]);
?? ?}
?? ?printf ("\n");
?? ?int* m=N;
?? ?float arr;
?? ?arr=average(m,n);
?? ?printf ("大于平均值的數(shù)有:");
?? ?for (int i=0;i<n;i++)//輸出大于平均數(shù)的數(shù)?
?? ?{
?? ??? ?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 ("交換最大值最小值后的數(shù)組:");
?? ?for (int i=0;i<n;i++)//輸出交換后數(shù)組?
?? ?{
? ? ?? ?printf("%d ",N[i]);
?? ?}
?? ?printf ("\n");
?? ?for (int i=0;i<n/2;i++)//逆置數(shù)組?
?? ?{
?? ??? ?swap(m,i,n-1-i);
?? ?}
?? ?printf ("逆置后的數(shù)組為:");
?? ?for (int i=0;i<n;i++)//輸出逆置后的數(shù)組?
?? ?{
? ? ?? ?printf("%d ",N[i]);
?? ?}
?? ?printf ("\n");
?? ?void Bub(int *m,int n);
?? ?Bub(m,n);
?? ?printf ("冒泡排序后的數(shù)組為:");
?? ?for (int i=0;i<n;i++)//輸出冒泡排序后的數(shù)組?
?? ?{
? ? ?? ?printf("%d ",N[i]);
?? ?}
?? ?printf ("\n");
?? ?int seek;
?? ?printf("請輸入一個需要查找的數(shù):");
?? ?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("該數(shù)的下標(biāo)為:%d\n",flag1);
?? ??? ?printf("結(jié)果:該組數(shù)據(jù)中有%d\n",seek);
?? ?}
?? ?else
?? ?{
?? ??? ?printf("結(jié)果:該組數(shù)據(jù)中沒有%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("該數(shù)的下標(biāo)為:%d\n",flag2);
?? ??? ?printf("結(jié)果:該組數(shù)據(jù)中有%d\n",seek);
?? ?}
?? ?else
?? ?{
?? ??? ?printf("結(jié)果:該組數(shù)據(jù)中沒有%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 ("最大值的下標(biāo)是:");
?? ?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 ("最小值的下標(biāo)是:");
?? ?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("將該組數(shù)據(jù)進行順序查找:\n");
?? ?printf("比較的數(shù)據(jù)有:");
?? ?for(int i=0;i<n;i++)
?? ?{
?? ??? ?printf("%d ",N[i]);
?? ??? ?count+=1;
?? ??? ?if(N[i]==seek)
?? ??? ?{
?? ??? ??? ?printf("比較的次數(shù)為:%d次\n", count);
?? ??? ??? ?return (count-1);
?? ??? ??? ?break;
?? ??? ?}
?? ?}
?? ?printf("比較的次數(shù)為:%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("將重新排序數(shù)據(jù)進行二分查找:\n");
?? ?printf("比較的數(shù)據(jù)有:");
?? ?while(low<=high)
?? ?{
?? ??? ?int mid=(low+high)/2;
?? ??? ?printf("%d",N[mid]);
?? ??? ?count+=1;
?? ??? ?if(N[mid]==seek)
?? ??? ?{
?? ??? ??? ?printf("\n比較的次數(shù)為:%d次\n", count);
?? ??? ??? ?return mid;
?? ??? ?}
?? ??? ?else if(N[mid]>seek)
?? ??? ?{
?? ??? ??? ?high=mid-1;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?low=mid+1;
?? ??? ?}
?? ?}
?? ?
?? ?printf("\n比較的次數(shù)為:%d次\n", count);
?? ?return -1; ?// 不存在返回-1
}
程序如上,想請教各位大神主函數(shù)到冒泡排序之后調(diào)用不了Sqe和Bin函數(shù)了
總結(jié)
- 上一篇: 高斯判别算法GDA(吴恩达机器学习c#实
- 下一篇: 零售行业的数据怎么查询