|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
各位大佬你们好!我正在用switch做一个菜单,case 1和case 2都能正常运行但是到case 3的时候我通过调用函数来进行二分查找,在输入需要查找的数字过后程序就不能正常运行了,请问问题在哪里呢,麻烦大佬们帮我看一下case 3,函数应该是没有问题的,谢谢!
代码如下:
- #include <stdio.h>
- #include <time.h>
- #include <stdlib.h>
- int search(int a[],int size,int x)
- {
- int left=0;
- int right=size-1;
- int mid=(left+right)/2;
-
- while(left<=right)
- {
- if(x>a[mid])
- {
- mid++;
- right--;
- }
-
- else if(x<a[mid])
- {
- mid--;
- left++;
- }
-
- else
- {
- return mid;
- }
- }
- return -1;
- }
- int main()
- {
- FILE*fp;
- fp=fopen("experiment-1.txt","w");
- int radom,i,j,temp,key;
- int num;
- int a[10];
- srand((int)time(0));
- for(i=0;i<10;i++)
- {
- radom=1+(int)(100.0*rand()/(RAND_MAX+1.0));
- fprintf(fp,"%d ",radom);
- }
- fclose(fp);
-
- printf("--------------------------------------\n");
- printf("1. Reading the data from the file\n");
- printf("2. Sorting algorithms\n");
- printf("3. Binary search algorithm\n\n");
- printf("Select an option\n");
- scanf("%d",&num);
- switch(num)
- {
- case 1:
- printf("These ten random Numbers are:\n");
- fp=fopen("experiment-1.txt","r");
- for(i=0;i<10;i++)
- {
- fscanf(fp,"%d",&a[i]);
- printf("%d ",a[i]);
- }
- fclose(fp);break;
- case 2:
- printf("--------------------------------------\n");
- printf("2.1 Bubble sort algorithm\n");
- printf("2.2 Exchange Maximum sort (select)Algorithm\n\n");
-
- fclose(fp);
- printf("Select an option\n");
- scanf("%d",&num);
- switch(num)
- {
- case 1:
- fp=fopen("experiment-1.txt","r");
- for(i=0;i<10;i++)
- {
- fscanf(fp,"%d",&a[i]);
- }
- for(j=0;j<9;j++)
- {
- for(i=0;i<9-j;i++)
- {
- if(a[i]>a[i+1])
- {
- temp=a[i];
- a[i]=a[i+1];
- a[i+1]=temp;
- }
- }
- }
- for(i=0;i<10;i++)
- {
- printf("%d ",a[i]);
- }
- break;
-
- case 2:
- fp=fopen("experiment-1.txt","r");
- for(i=0;i<10;i++)
- {
- fscanf(fp,"%d",&a[i]);
- }
- for(i=0;i<9;i++)
- {
- int min=i;
- for(j=i;j<10;j++)
- {
- if(a[min]>a[j])
- {
- min=j;
- }
- temp=a[i];
- a[i]=a[min];
- a[min]=temp;
- }
- }
- for(i=0;i<10;i++)
- {
- printf("%d ",a[i]);
- }
- break;
- }break;
- case 3:
- fp=fopen("experiment-1.txt","r");
- for(i=0;i<10;i++)
- {
- fscanf(fp,"%d",&a[i]);
- }
- fclose(fp);
- int len=sizeof(a)/sizeof(a[0]);
- printf("--------------------------------------\n");
- printf("Enter a number you want to find:\n");
- scanf("%d",key);
- int ret=search(a,len,key);
- if(ret==-1)
- {
- printf("%d is not exist!\n",key);
- }
- else
- {
- printf("The %d is the %dth element\n",key,ret+1);
- }
- return 0;break;
- }
- }
复制代码 |
|