知迩

实验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== '*')
    {
        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 n=0,z=1;
    int j,i;
    int l;
    l=strlen(s);
    
    for(i=0;i<l/2;i++)
       if(s[i]!=s[l-1-i])
         {
           z=0;break;
      }
             
    return z;
}
复制代码

 

 任务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   知迩  阅读(24)  评论(1编辑  收藏  举报

编辑推荐:
· 为什么 .NET8线程池 容易引发线程饥饿
· golang自带的死锁检测并非银弹
· 如何做好软件架构师
· 记录一次线上服务OOM排查
· Linux实时系统Xenomai宕机问题的深度定位过程
阅读排行:
· 2025年广告第一单,试试这款永久免费的开源BI工具
· o3 发布了,摔碎了码农的饭碗
· SQL优化的这15招,真香!
· [.NET] API网关选择:YARP还是Ocelot?
· 将 EasySQLite 从 .NET 8 升级到 .NET 9
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

导航

统计

点击右上角即可分享
微信分享提示