实验6

task1.c
#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, 5, 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 = high - 1;
        else
            low = low+ 1;
    }return -1;
}

 

 
task2.c
 
#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++;
        break;
    }
    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;
}

 

task3.c
 
#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;
}

 

task4.c
#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 i,j;
    for (i = 0;; ++i)
        if (*(s+i) == '\0')
            break;
    for (j = 0; 2 * j < i; j++)
        if (*(s + j) != *(s + i - j)) {
            break;
            return 0;
        }
    return 1;   
}

 

task5.c
#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; 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-15 20:42  陆鹏宇  阅读(41)  评论(1)    收藏  举报