实验6

#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);
    // 调用函数binarySearch()在数组a中查找指定数据项key,并返回查找结果给index
    index = binarySearch(a, N, key);//a是数组首元素地址,也可以看成一个指针。
    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)
{
    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;
}

 ======================================================================第三题=======================================================================

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(char s[81]);
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_s(str);
    flag = isPalindrome(str); // 函数调用
    if (flag)
        printf("YES\n");
    else
        printf("No\n");
    return 0;
}
// 函数定义
// 功能:判断指针s指向的字符串是否是回文串,如果是,返回1;否则,返回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;
    }
}

 

 =========================================================================第五题===============================================================================

#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; 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 11:17  後海不是海王  阅读(27)  评论(2编辑  收藏  举报