C语言:假定输入的字符串只包含字母和*号,fun函数:除了尾部的*号以外,将字符的其他*号进行全部删除,形参p已经指向字符串中最后一个字母。-利用折半查找整数m在有序数组中的位置,若找到,返回下标值,否则返回-1。
//假定输入的字符串只包含字母和*号,fun函数:除了尾部的*号以外,将字符的其他*号进行全部删除,形参p已经指向字符串中最后一个字母。
1 #include <stdio.h> 2 void fun( char *a, char *p ) 3 { 4 char *q,m[81];//肯定是要进行再定义的。 5 int i = 0,j; 6 q = a; 7 while (*q) 8 { 9 if (q == p)//判断地址相等,进行返回 10 { 11 break; 12 } 13 if ((*q >= 'a'&&*q <= 'z') || (*q >= 'A'&&*q <= 'Z')) 14 { 15 m[i++] = *q; 16 q++; 17 } 18 else 19 { 20 q++; 21 } 22 } 23 while (*p) 24 { 25 m[i++] = *p++; 26 } 27 for (j = 0; j < i; j++)//对形参数组进行数据删除,可以重新在一个数组里放入修改的值,再进行循环赋值。 28 { 29 a[j] = m[j]; 30 } 31 a[j] = 0;//结束符 32 } 33 34 void main() 35 { char s[81],*t; 36 void NONO ( ); 37 printf("Enter a string:\n");gets(s); 38 t=s; 39 while(*t)t++; 40 t--; 41 while(*t=='*')t--; 42 fun( s , t ); 43 printf("The string after deleted:\n");puts(s); 44 NONO(); 45 } 46 void NONO() 47 {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ 48 FILE *in, *out ; 49 int i ; char s[81],*t ; 50 in = fopen("in.dat","r") ; 51 out = fopen("out.dat","w") ; 52 for(i = 0 ; i < 10 ; i++) { 53 fscanf(in, "%s", s) ; 54 t=s; 55 while(*t)t++; 56 t--; 57 while(*t=='*')t--; 58 fun(s,t) ; 59 fprintf(out, "%s\n", s) ; 60 } 61 fclose(in) ; 62 fclose(out) ; 63 }
//利用折半查找整数m在有序数组中的位置,若找到,返回下标值,否则返回-1。
1 #include <stdio.h> 2 #define N 10 3 /************found************/ 4 int fun(int a[], int m ) 5 { int low=0,high=N-1,mid; 6 while(low<=high)//判定条件 7 { mid=(low+high)/2; 8 if(m<a[mid]) 9 high=mid-1; 10 /************found************/ 11 else if(m > a[mid]) 12 low=mid+1; 13 else return(mid); 14 } 15 return(-1); 16 } 17 void main() 18 { int i,a[N]={-3,4,7,9,13,45,67,89,100,180 },k,m; 19 20 printf("a数组中的数据如下:"); 21 for(i=0;i<N;i++) printf("%d ", a[i]); 22 printf("Enter m: "); scanf("%d",&m); 23 k=fun(a,m); 24 if(k>=0) printf("m=%d,index=%d\n",m,k); 25 else printf("Not be found!\n"); 26 }