实验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){
    char *p = s, *q = s;
    int t;
    while(*q)
        q++;
    q--;    
    while(*p == *q && p < q){
        q--;
        p++;
    }
    if (p >= q)
        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);
}

 

 

实验总结

1.字符数组'\0'的位置要找好

2.指针的语法要去归纳总结

posted @ 2021-12-15 11:18  方振宇  阅读(9)  评论(1编辑  收藏  举报