实验六

#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);
// 调用函数binarySearch()在数组a中查找指定数据项key,并返回查找结果给index
// 补足代码①
// ×××
int *x;
x=&a[N];
index=binarySearch(a,N,key);
if (index >= 0)
printf("%d在数组中,下标为%d\n", key, index);
else
printf("%d不在数组中\n", key);
return 0;
}
// 函数功能描述:
// 使用二分查找算法在从地址x开始的连续n个数据项中,查找特定数据项item
// 如果找到,返回其下标; 如果没找到,返回-1
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;
}

 

 

 

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

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void fun(char *a)
{
/**ERROR******/
int i=0;
char *t = a, *f = a;
char *q = a;
 while (*t)
   t++;
  t--;
 while (*t == '*')
   t--;
 while (*f == '*')
 {
 
   a[i]=*q;
   f++;
 }
/***ERROR***/
 while (q < f)
    {
        a[i] = *q;
        q++;
        i++;
    }
 while (q < t)
   {
/***ERROR**/
        if (*q != '*')
     {
        a[i] = *q;
        i++;
     }
        q++;
   }
 while (*q)
 {
    a[i] = *q;
    i++;
    q++;
 }
/**ERROR**/
   a[i] = '\0';
}
int main()
{
     char s[81];
     printf("Entre a string:\n");
     gets(s);
/**ERROR**/
     fun(s);
     printf("The sting after deleted:\n");
     puts(s);
     return 0;
}

 

#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,n;
n=strlen(s);
        for(i=0;i<n/2;i++)
        {
                   if(s[i]!=s[n-1-i])
                  {
                    return 0;
                  }
        }
        return 1;
}

 

 

 

#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-22 21:38  哼·哈  阅读(13)  评论(0编辑  收藏  举报