# 实验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)
{
/**ERROR******/
int i=0;
char *t = a, *f = a;
char *q = a;

while (*t)
t++;
t--;//找到最后一个字符

while (*t == '*')
t--;//定位字母后的*

while (*f == '*')
f++;//定位字母前的*

/***ERROR***/
while (q < f)
{
a[i] = *q;
q++;
i++;
}

while (q < t)
{
/***ERROR**/
if (*q != '*')
{
a[i] = *q;
i++;
}
q++;
}

while (*q)
{
a[i] = *q;
i++;
q++;
}

/**ERROR**/
a[i] = '\0';
}

int main()
{
char s[81];

printf("Entre a string:\n");
gets(s);
/**ERROR**/
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 *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(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;i<N; ++i)
for(j=i, k=0; substr[k] == str[j]; k++, j++)
if(substr[k+1] == '\0')
{
num++;
break;
}

return(num);
}

实验总结：

posted @ 2021-12-15 11:35  gfygfy  阅读(17)  评论(0编辑  收藏  举报