四川师范大学c语言实验报告(5)

2019-06-11 12:48

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 #include int hw(int n); int isprime(int n); void main() { int i; int cnt=0; for(i=10000;i<100000;i++) { if(hw(i)) { if(isprime(i)==1) { cnt++; } } } printf(\合计:%d个\\n\}

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 #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 #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 char trans(int n) { if(n<10)

{ 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 页


四川师范大学c语言实验报告(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人教版小学五年级下册语文1-8单元测试卷

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: