实验6

实验任务1

#include <stdio.h>
#define N 5
int binarySearch(int *x, int n, int item);
int main()
{
   int a[N] = {2, 7, 19, 45, 66};
   int i, index, key;
     printf("数组a中的数据:\n");
   for (i = 0; i < N; i++)
     printf("%d ", a[i]);
     printf("\n");
     printf("输入待查找的数据项: ");
     scanf("%d", &key);
     
    index=binarySearch(a,N,key);

   if (index >= 0)
    printf("%d在数组中,下标为%d\n", key, index);
   else
    printf("%d不在数组中\n", key);
     
return 0;
}
int binarySearch(int *x, int n, int item)
{
  int low, high, mid;
  low = 0;
   high = n - 1;
  while (low <= high)
 {
   mid = (low + high) / 2;
   if (item == *(x + mid))
     return mid;
   else if (item < *(x + mid))
     high=mid-1;
   else
     low=mid+1;
}
return -1;
}

 

 

 

 

 

 实验任务2

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
void fun(char *a)
{
  /*****ERROR1********/
  int i=0;//1
  char *p =a;
  /****ERROR2***/
  while (*p && *p == '*')//2
 {
    a[i] = *p;
    i++;
  p++;
 }
   while (*p)
 {
/******ERROR3*******/
   if (*p != '*')//3
   {
      a[i] = *p;
      i++;
   }
    p++;
 }
/******ERROR4*******/
  a[i] = '\0';
}
int main()
{
  char s[81];
 
  printf("Enter a string :\n");
  gets(s);
  /***ERROR5******/
  fun(s);//4
  printf("The string after deleted:\n");
  puts(s);
  return 0;
}

 

 

实验任务3

#include <stdio.h>
#include <string.h>
#define N 80
int isPalindrome(char *s); 
int main()
{
  char str[N];
  int flag;
   printf("Enter a string:\n");
  gets(str);
  flag = isPalindrome(str); 
  if (flag)
    printf("YES\n");
  else
    printf("No\n");
  return 0;
}
// 函数定义
// 功能:判断指针s指向的字符串是否是回文串,如果是,返回1;否则,返回0。
int isPalindrome(char *s)
{
    int i,k;
    char *p=s;
    
    for(k=0;*p!='\0';p++)
      k++;

    for(i=0;i<k/2;i++)
    {if(*(s+i)!=*(s+k-i-1))
      return 0;

    }
    return 1;
}

 

 

实验任务4

#include <stdio.h>
#include <string.h>
#define N 80
int isPalindrome(char *s); 
int main()
{
  char str[N];
  int flag;
   printf("Enter a string:\n");
  gets(str);
  flag = isPalindrome(str); 
  if (flag)
    printf("YES\n");
  else
    printf("No\n");
  return 0;
}
// 函数定义
// 功能:判断指针s指向的字符串是否是回文串,如果是,返回1;否则,返回0。
int isPalindrome(char *s)
{
    int i,k;
    char *p=s;
    
    for(k=0;*p!='\0';p++)
      k++;

    for(i=0;i<k/2;i++)
    {if(*(s+i)!=*(s+k-i-1))
      return 0;

    }
    return 1;
}

 

 

实验任务5

#include <stdio.h>
#define N 80
int count(char *str, char *substr);
int main()
{
  char str[N], substr[N];
  int n;
  gets(str);
  gets(substr); 
  n = count(str, substr); 
  printf("%d\n", n);
  return 0;
}
int count(char *str, char *substr)
{
  int i, j, k;
  int num = 0;
  for(i=0;*(str+i)!='\0'; ++i)
    for(j=i, k=0; substr[k] == str[j]; k++, j++)
      if(substr[k+1] == '\0')
     {
       num++;
       break;
    }

return(num);
}

 

 

总结:细节不到位,速度太慢

 

posted @ 2021-12-15 16:36  杨程旭  阅读(22)  评论(0编辑  收藏  举报