实验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_s("%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(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(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_s(str);

    flag = ispalindrome(str);

    if (flag)
        printf("YES\n");
    else
        printf("NO\n");

    return 0;
}

int ispalindrome(char* s)
{
    char* a = s;
    char* b = s;
    int i = 0, j = 0;
    while (*b) {
        b++;
        j++;
    }
    b--;
    j--;
    while (i != j && j != i + 1) {
        if (*a != *b) {
            return 0;
        }
        a++; i++;
        b--; j--;
    }
    if (i == j || j == i + 1)
        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_s(str);      
    gets_s(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; i < N; ++i)
        for (j = i, k = 0; substr[k] == str[j]; k++, j++)
            if (substr[k + 1] == '\0')
            {
                num++;
                break;
            }

    return(num);
}

 

 

posted @ 2021-12-20 20:56  诸神悬天  阅读(14)  评论(0)    收藏  举报