C语言程序设计何钦铭颜晖著高等教育出版社第八章课后答案_第1页
C语言程序设计何钦铭颜晖著高等教育出版社第八章课后答案_第2页
C语言程序设计何钦铭颜晖著高等教育出版社第八章课后答案_第3页
C语言程序设计何钦铭颜晖著高等教育出版社第八章课后答案_第4页
C语言程序设计何钦铭颜晖著高等教育出版社第八章课后答案_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、练习82#include <stdio.h>void sum_diff(float op1,float op2,float *psum,float *pdiff);void main()float x,y,sum,diff;/*输入两个浮点数x和y*/printf("enter two float number: ");scanf("%f%f",&x,&y);/*调用函数sum_diff*/sum_diff(x,y,&sum,&diff);/*输出x与y的和与差*/printf("x+y=%fn&qu

2、ot;,sum);printf("x-y=%fn",diff);/*定义函数sum_diff,返回两个浮点数的和与差*/void sum_diff(float op1,float op2,float *psum,float *pdiff)*psum=op1+op2;*pdiff=op1-op2;练习85/* 输入n个正整数,将它们从小到大排序后输出。要求使用选择排序算法。*/* 指针和数组及存储单元 - 选择排序算法 */#include <stdio.h>void swap (int *, int *);void choose (int a, int n);v

3、oid main(void) int n, a8; int i; printf("enter n (n<=8): "); scanf("%d", &n); /*输入n个整数到数组a*/printf("enter a%d : ",n); for (i=0; i<n;i+) scanf("%d",&ai);/*调用choose函数,对数组a进行排序*/ choose(a,n);/*输出排序后的结果*/ printf("after sorted, a%d = ", n);

4、for (i=0; i<n; i+) printf("%3d",ai);printf("n");/*定义函数choose,实现选择法排序*/void choose (int a, int n) /* n是数组a中待排序元素的数量 */ int i, j,index; for( i = 0; i < n-1; i+)index=i; for (j = i+1; j < n; j+ ) if (aj < aindex)index=j;/* 比较大小,记录最小元的下标 */ swap(&ai, &aindex);/* 交

5、换最小元与ai的值 */*定义函数swap,实现两个数交换*/void swap (int *px, int *py) int t; t = *px; *px = *py; *py = t;练习88/* 输入一个字符串,把其前3个字符移到最后,输出变换后的字符串。比如输入"abcdef",输出"defabc"*/#include <stdio.h>#include <string.h>void main(void) char str80,*p,temp; int i,j;p=str;/*输入一个字符串*/ printf("

6、;enter a string: "); gets(p);j=strlen(p)-3;for(i=0;i<3;i+,j+)temp=stri;stri=strj;strj=temp; /*输入变换后的结果*/ printf("after changed: ");puts(p);习题81#include <stdio.h>void swap (int *, int *);void choose (int a, int n, char ch);void main(void) int i, a10;char ch; /*选择排序方式*/printf(&

7、quot;please enter 'a' or 'd' :");scanf("%c",&ch); /*输入10个整数到数组a*/printf("enter a0-a9: "); for (i=0; i<10;i+) scanf("%d",&ai);/*调用choose函数,对数组a按ch方式进行排序*/ choose(a,10,ch);/*输出排序后的结果*/ printf("after sorted, a0-a9 = "); for (i=0; i

8、<10; i+) printf("%3d",ai);printf("n");/*定义函数choose,实现选择法排序*/void choose (int a,int n, char ch) /* n是数组a中待排序元素的数量 */ int i, j,index; for( i = 0; i < n-1; i+)index=i; for (j = i+1; j < n; j+ )if(ch='a'|ch='a' ) if (aj < aindex)index=j;/* 比较大小,记录最小元的下标 */

9、else if (aj > aindex)index=j;/* 比较大小,记录最大元的下标 */ swap(&ai, &aindex);/* 交换最大(小)元与ai的值 */*定义函数swap,实现两个数交换*/void swap (int *px, int *py) int t; t = *px; *px = *py; *py = t;习题82#include <stdio.h>int find (int list, int n, int x);void main(void) int i,result,x,a10; /*输入10个整数到数组a*/printf

10、("enter a0-a9: "); for (i=0; i<10;i+) scanf("%d",&ai); /*输入待查数据x*/printf("enter a integer to x :");scanf("%d",&x);/*调用find函数,在数组a中查找x所在位置*/ result=find(a,10,x);/*输出查找结果*/if(result=-1)printf("not found.n");else printf("the position is

11、%dn",result);/*定义函数find,在数组list中查找x所在位置*/int find(int list,int n, int x) int i,result=-1; for( i = 0; i < n; i+)if(listi=x)result=i;break;return result;习题83#include <stdio.h>void move (int a,int n,int m);void main(void) int i,m,n,a10; /*输入两个整数m和n,n-数据个数,m-移动位置*/printf("enter two i

12、ntegers to m and n :");scanf("%d%d",&m,&n); /*输入n个整数到数组a(a0an-1)*/printf("enter a0-an-1: "); for (i=0; i<n;i+) scanf("%d",&ai);/*调用move函数,使数组a中各数顺序后移m个位置,移出的数再从开头移入*/ move(a,n,m);/*输出移动后的结果*/printf("result a0-an-1: "); for (i=0; i<n;i+)

13、printf("%4d",ai);printf("n");/*定义函数move,使数组a中各数顺序后移m个位置,移出的数再从开头移入*/void move(int a,int n,int m)int i,j,t;for(i=1;i<=m;i+) /* 循环移位m次 */t=an-1; /* 保存最后位置的元素值 */for(j=n-1;j>0;j-) /* 从倒数第二个元素开始,每个元素向后一个位置 */aj=aj-1;a0=t; /* 将保存的最后位置的元素放在最前面 */习题84#include <stdio.h>void m

14、ain(void) int i,j,n,count,a11; /* 变量count记录退出人数,变量j记录报数值(在03之间变化) */ /* 输入一个整数n(1<=n<=10) */printf("enter one integer to n (1<=n<=10) :");scanf("%d",&n); /* 为数组元素编号,依次为1n号 */ for(i=0; i<=n;i+)ai=i;/* 循环报数,报3者退出,直到全部报数完毕 */count=0;i=1;j=0; while(count<n)if(i&

15、gt;n)i=1; /* 若i超出n,再从下标为1的元素报数 */if(ai!=0)j+; /* 报数,若ai不为0,则j增1*/if(j=3) /* 若报数值为3,则第i号退出,并分别将j、ai清0,count增1 */printf("%3d",i);ai=0;j=0;count+;i+; /* i增1 */ printf("n");习题85#include <stdio.h>#include <string.h>void mcopy(char *s,char *t,int m);void main()char s80,t80;

16、int m;/*输入一个字符串*/printf("enter a string : ");gets(s);/*输入要复制的开始位置*/printf("enter start position : ");scanf("%d",&m);mcopy(s,t,m);/*调用mcopy函数*/puts(t); /*输出结果*/*定义函数mcopy,将字符串s中从第m个字符开始的全部字符复制到字符串t中*/void mcopy(char *s,char *t,int m)s=s+m-1;for(;*s!='0's+,t+)

17、*t=*s;*t='0'习题86#include <stdio.h>#include <string.h>void delchar(char *s,char c);void main()char s80,c;/*输入一个字符串*/printf("enter a string : ");gets(s);/*输入要删除的字符*/printf("enter delete char : ");scanf("%c",&c);delchar(s,c);/*调用delchar函数*/puts(s);

18、/*输出结果*/*定义函数delchar,删除字符串s中的所有字符c*/void delchar(char *s,char c)char str80;int i,j;/*将字符串s中的非c字符复制到字符串str中*/for(i=0,j=0;si!='0'i+)if(si!=c)strj=si;j+;strj='0'/*将字符串str复制到字符串s中*/for(i=0;stri!='0'i+)si=stri;si='0'习题87/* 输入5个字符串,按由小到大的顺序输出。*/* 指针和数组及存储单元 - 选择排序算法 */#incl

19、ude <stdio.h>#include <string.h>void main(void) char s580,t80; int i,j,index; /*输入5个字符串到数组s*/printf("enter 5 string : n"); for (i=0; i<5;i+) gets(si);/*调用选择法对字符串数组s进行排序*/ for(i=0;i<4;i+)index=i; for(j=i+1;j<5;j+) if(strcmp(sj,sindex)<0)index=j;/* 比较大小,记录最小元的下标 */* 交

20、换最小元与si的值 */ strcpy(t,si);strcpy(si,sindex);strcpy(sindex,t);/*输出结果*/printf("after sorted:n");for(i=0;i<5;i+)puts(si);习题88/* 编程判断输入的一串字符是否为“回文”。所谓“回文”是指顺读和倒读者一样的字符串。 */* 例如:“xyzyx”和“xyzzyx” */#include <stdio.h>#include <string.h>void main(void) int i,j,m,flag;char str80,*p;p

21、=str; /* 输入一个字符串 */printf("enter a string : n"); gets(str);/* 判断输入的一串字符是否为“回文” */m=strlen(str);flag=0; for(i=0;i<m/2;i+)if(pi!=pm-1-i)flag=1;break;/* 输出结果 */if(flag=1)printf("non");else printf("yesn");习题89/* 输入一行文字,统计其中的大写字母、小写字母、空格、数字以及其他字符各有多少。 */#include <stdio

22、.h>#include <string.h>void main(void) int i,letter1=0,letter2=0,space=0,digit=0,other=0;char str80,*p;p=str; /* 输入一个字符串 */printf("enter a string : n"); gets(str);/* 统计其中的大写字母、小写字母、空格、数字以及其他字符各有多少 */for(i=0;pi!='0'i+)if(pi>='a' && pi<='z')lette

23、r1+;else if(pi>='a' && pi<='z')letter2+;else if(pi>='0' && pi<='9')digit+;else if(pi=' ')space+;else other+;/* 输出结果 */printf("upper letter=%dn",letter1);printf("lower letter=%dn",letter2);printf("digit=%dn&q

24、uot;,digit);printf("space=%dn",space);printf("other=%dn",other);习题810#include <stdio.h>#include <string.h>int strcomp(char * s1,char * s2);void main(void) int i,res;char str180,str280; /* 输入两个字符串 */printf("enter string1 : ");gets(str1);printf("enter str

25、ing2 : ");gets(str2);/* 调用函数strcomp,比较两个字符串str1和str2的大小 */res=strcomp(str1,str2);/* 输出结果 */if(res=1)printf("s1>s2n");else if(res=0)printf("s1=s2n");else printf("s1<s2n");/* 定义函数strcomp,比较字符串s1和s2的大小 */int strcomp(char * s1,char * s2)int res=0,i;/* 逐个字符比较两个字符串

26、 */for(i=0;s1i!='0' && s2i!='0'i+)if(s1i>s2i)res=1;break;if(s1i<s2i)res=-1;break;if(res=0 && strlen(s1)>strlen(s2)res=1;if(res=0 && strlen(s1)<strlen(s2)res=-1;return res;习题811#include <stdio.h>#include <string.h>void dtof(char * s);voi

27、d main(void)char str80,* p; /* 输入一个名词英文单词 */printf("enter a word : ");gets(str);/* 调用函数dtof,将名词单数变复数 */p=str;dtof(p);/* 输出结果 */puts(p);/* 定义函数dtof,将名词单数变复数 */void dtof(char * s)int i,m;m=strlen(s); /* 求单词s的长度 */* 分几种情况,比较单词的最后字母,决定复数的变化形式 */if(sm-1='y' | sm-1='y')sm='e&

28、#39;sm+1='s'sm+2='0'else if(sm-1='o' | sm-1='o')sm='e'sm+1='s'sm+2='0'else if(sm-1='s' | sm-1='s')sm='e'sm+1='s'sm+2='0'else if(sm-1='x' | sm-1='x')sm='e'sm+1='s'sm+2='0'else if(sm-2='s' | sm-2='s')&&(sm-1='h' | sm-1=&#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论