实验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.指针的语法要去归纳总结