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

2019-06-11 12:48

return 'a'+n-10; }

int DtoH(int n,char *res) { int i=0; while(n!=0)

{ res[i++]=trans(n); n=n/16; } return i; }

main() { int a=79; char q[100]; int len =DtoH(a,q); for(int i=len-1;i>=0;i--)

{ printf(\ } }

(3)测试数据:79 (4)运行结果:4f

(5)问题及解决方法:无

4、定义函数void Merge(int a[], int n, int b[], int m),参数a、b为一维数组,数组中的数据为升序排列,n和m分别为它们的元素个数。函数的功能为:将数组a和b合并为一个数组,合并后的结果存放于数组a中,要求合并后的数组a仍旧为升序排列。请编程实现,并编写main函数对其测试。 (1)算法描述:

for(i=0,j=0;i

{ if(a[i]

{

c[k]=a[i]; c[k+1]=b[j]; if(k>1)

{

if(c[k]

{

temp=c[k-1]; c[k-1]=c[k]; c[k]=temp;

第 26 页 共 26 页

} } k=k+2; }

(2)源代码及说明: #include

void Merge(int a[],int n,int b[],int m) { int k=0; int c[100]; int temp; int i,j; for(i=0,j=0;i

{ if(a[i]

{

c[k]=a[i]; c[k+1]=b[j]; if(k>1)

{

if(c[k]

{

temp=c[k-1]; c[k-1]=c[k]; c[k]=temp; } } k=k+2; } if(a[i]>b[j])

{

c[k]=b[j]; c[k+1]=a[i]; if(k>1)

{

if(c[k]

{

temp=c[k-1]; c[k-1]=c[k]; c[k]=temp; } } k=k+2; }

第 27 页 共 27 页

}

main() { int a[5]={1,4,7,9,10}; int b[5]={0,2,3,5,8}; Merge(a,5,b,5); }

(3)测试数据: int a[5]={1,4,7,9,10}; int b[5]={0,2,3,5,8};

(4)运行结果:0 1 2 3 4 5 7 8 9 10 (5)问题及解决方法:无 三、实验总结:

(1)掌握了用指针作为函数参数完成字符串的传递。 (2)掌握了函数中参数传递的两种方式。

} a=c;

for(i=0;i

实验七 字符串与指针 实验 (验证性 综合性 实验 2学时)

一、目的要求:

(1)掌握用指针进行函数参数传递的方法。

(2)掌握指针数组和二维数组间的关系以及进行参数传递时的写法。 (3)编写实验报告。

二、实验内容(参考实验指导书):

1、编写一个书名排序程序,输入10个书名存入一个二维数组,用函数void sortstring( char *name[] , int n)实现它们的字典顺序。 (1)算法描述:

sortstring(name,10);

for(a=0;a<10;a++) printf(\(2)源代码及说明: #include #include

void sortstring(char *name[],int n) { char *p;

第 28 页 共 28 页

int i,j; for(i=0;i0) { p=name[i]; name[i]=name[j]; name[j]=p; } } } main() { char *name[]={\ \ int a; sortstring(name,10); for(a=0;a<10;a++) printf(\}

(3)测试数据:

(4)运行结果:hello world start end then first follow watch see hear (5)问题及解决方法:无

2、编写函数void search( char *s1, char *s2, char *s3)。函数search()从已知的两个字符串s1与s2中找出它们都包含的最长的单词放入字符串s3,约定字符串中只有小写字母和空格字符,单词用1个或1个以上空格分隔。 (1)算法描述: (2)源代码及说明: #include #include #include

void search(char *s1, char *s2, char *s3) {

char *p;

int word,i,m,n; char a[20]; p=s1; s3[0]='\\0';

while (*p!='\\0') {

word=0; for (i=0;p[i]!='\\0';i++)

第 29 页 共 29 页

{

if (p[i]!=' '&&word==0) { word=1; m=i; }

else if (p[i]==' '&&word==1) { n=i; break; } }

if (p[i]=='\\0'&&word==1) n=i; if (word==1) {

strncpy(a,p+m,n-m); a[n-m]='\\0'; char *pfind;

if ( (pfind=strstr(s2,a))!=NULL ) {

if ( *(pfind+strlen(a))==' ' || *(pfind+strlen(a))=='\\0' ) if (strlen(a)>strlen(s3)) strcpy(s3,a); }

p=p+n; }

else break; } }

main() {

char *s1=\

char *s2=\ char s3[20]; search(s1,s2,s3); printf(\}

(3)测试数据:

(4)运行结果:name (5)问题及解决方法:无

3、编写一个主函数,测试上述两个函数的正确性。 (1)算法描述: (2)源代码及说明:

第 30 页 共 30 页


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

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

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

马上注册会员

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