实验六
#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; }
#include<stdio.h> #include<string.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; }
#include<stdio.h> #include<string.h> #include<stdlib.h> void fun(char *a) { int i=0; char *t=a,*f=a; char *q=a; while(*t) t++; t--; //指针停在最后一个不为\0的字符处 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("Enter a string :\n"); gets(s); fun(s); printf("The string 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(str); flag = isPalindrome(str); if(flag) printf("YES\n"); else printf("NO\n"); return 0; } int isPalindrome(char *s) { int n,i; char *p=s; char *t=s; while(*t) t++; t--; n=strlen(s); for(i=0;i<=n/2;i++) { if(*(p+i)!=*(t-i)) { return 0;break; } } return 1; }
#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); }