void reverse( char s[]) { int n; int i,j; char temp; n=strlen(s); if(n==1) { printf(\ return ; } for(i=0;i int main() { char text[10]={'a','b','c','d','e','f','g','h','m','o'}; int i,n=10; for(i=0;i (3)测试数据:a b c d e f g h i j (4)运行结果:j i h g f e d c b a (5)问题及解决方法:无 5、在n个已排好序(设为从小到大)的数据(数或字符串)中查找某一个数据,如果找到了,就指出其在n个数中的位置;否则给出无该数据的信息。请用递归的方法实现二分查找来实现这一查找过程。 提示:采用二分法求解本问题的基本思路是:设数列为a1,a2,?,an,被查找的数为x,则查找首先对am(m = ( n + 1 ) / 2)进行,于是得到三种情形。 若x > am,则x只可能在区间[am + 1 , an] 第 21 页 共 21 页 若x < am,则x只可能在区间[a1 , am - 1] 若x = am,则am即为查找的数,求解结束。 从上面的分析发现,这个过程很适合用递归来实现。 (1)算法描述: for(i=10000;i<100000;i++) { if(hw(i)) { if(isprime(i)==1) { cnt++; } } } printf(\合计:%d个\\n\} (2)源代码及说明: #include int isprime(int n) { int i=2; while(i<=sqrt(n)) { if(n%i==0) return 0; 第 22 页 共 22 页 i++; } return 1; } int hw(int n) { int m=0; int t=n; while(t) { m=m*10+t; t/=10; } return m==n; } (3)测试数据: (4)运行结果:93个 (5)问题及解决方法:无 三、实验总结:掌握了函数中参数传递的两种方式和函数的相互调用。 实验六 指针 实验 (验证性 综合性 实验 4学时) 一、目的要求: (1)用指针作为函数参数完成字符串的传递。 (2)掌握函数中参数传递的两种方式。 (3)编写实验报告。 二、实验内容(参考实验指导书): (1)编写一个函数char *delk( char *sp),把sp所指向的字符串中所有的“$”字符删除,并把处理后的字符串指针返回。 (1)算法描述: char *b=\ char *a=(char*)malloc(sizeof(b)); delk(b,a); (2)源代码及说明: #include char *delk(char *sp,char *q) { char *p=sp; while (*p!='\\0') { if (*p!='$'){ 第 23 页 共 23 页 *q=*p; q++; } p++; } } main() { char *b=\ char *a=(char*)malloc(sizeof(b)); delk(b,a); printf(\} (3)测试数据:$abcd$efgh (4)运行结果:abcdefgh (5)问题及解决方法:无 2、写一个函数int find( char *s1, char *s2),函数find的功能是查找串s1中是否包含指定的词(s2指向),如果存在则返回第1次出现的位置,否则返回-1.约定串中的词由1个或1个以上的空格符分隔。 (1) 算法描述: char s1[]=\ char s2[]=\ int a=find(s1,s2); (2)源代码及说明: #include int find(char *s1,char *s2) { char *p=s1; char *q; int k=0; int r; while(*p!='\\0') { while(*p==' ') { p++; } q=p; while(*q!='\\0'&&*q!=' ') { q++; } char c=*q; 第 24 页 共 24 页 } main() { char s1[]=\ char s2[]=\ int a=find(s1,s2); printf(\} (3)测试数据: char s1[]=\char s2[]=\ char s1[]=\char s2[]=”we”; (4)运行结果:3 -1 (5)问题及解决方法:无 3、编程实现将输入的十进制整数n通过函数DtoH转换为十六进制数,并将转换结果以字符形式输出。例如:输入十进制数79,将输出十六进制数4f。 (1)算法描述: for(int i=len-1;i>=0;i--) { printf(\ } (2)源代码及说明: #include { return n+'0'; } else } if(r!=0) { return -1; } *q='\\0'; r=strcmp(p,s2); k=k+1; if(r==0) { return k; } p=q+1; 第 25 页 共 25 页