实验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); }