实验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)
{
    int i=0;
    char *p = a;
    while (*p && *p == '*')
    {
    a[i] = *p;
    i++;
    p++;
    }
    while (*p)
    {
    if (*p != '*')
    {
    a[i] = *p;
    i++;
    }
    p++;
    }
    a[i] = '\0';
}
int main()
{
    char s[81];
    printf("Enter a string :\n");
    gets(s);
    fun(s);
    printf("The string after deleted:\n");
    puts(s);
    return 0;
}

 任务3:

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

 任务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;
}
int isPalindrome(char *s)
{
    int length = strlen(s);
    char *t = s + length - 1;
    for (int i = 0; i < length / 2; i++)
    {
        if (*(s+i) == *(t-i))
            return 1;
            else
            return 0;
    }
    
}

 

 任务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 on 2021-12-15 15:20  似有非有,似梦非梦  阅读(28)  评论(2编辑  收藏  举报

导航