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 }

 

posted @ 2019-03-11 15:30  小大大小  阅读(1835)  评论(0编辑  收藏  举报