C语言程序设计(第二版)-习题答案第5章C语言程序设计习题答案.docx
C语言程序设计(第二版)-习题答案 第5章C语言程序设计习题答案 C语言程序设计(Visual C+6.0环境)习题答案 习题五 一、思考题 1,编写两个函数,分别用来求两个整数的和和差,用主函数调用这两个函数,并输出结果。 #include "stdio.h" int f1(int x,int y) int z; z=x+y; return z; int f2(int x,int y) int c; c=x-y; return c; main() int m,n,sum,dec; scanf("%d%d",&m,&n); sum=f1(m,n); dec=f2(m,n); printf("sum=%d,dec=%dn",sum,dec); 2、编写一个将两个字符串连接的函数。 # include cvs(char str1,char str2,char str) int i,j; for(i=0;str1i!='0'i+) stri=str1i; for(j=0;str2j!='0'j+) stri+j=str2j; stri+j='0' main() char s1100,s2100,s100; printf("输入2个字符串n"); scanf("%s%s",s1,s2); cvs(s1,s2,s); printf("两字符串连接后:%sn" ,s); #include "stdio.h" #include "string.h" void lj(char s1,char s2) for(i=strlen(s1),j=0;s2j!='0'i+,j+) s1i=s2j; s1i='0' main() char s1200,s2100; printf("请输入第一个字符串"); gets(s1); printf("请输入第二个字符串"); gets(s2); printf("输入的字符串是:"); puts(s1); puts(s2); lj(s1,s2); printf("连接后的字符串是:"); puts(s1); 3、编写一个函数,输入一个十进制数,输出相应的二进制数。 数组: #include "stdio.h" void zh(int number,int a) int ys; int i=0,n; while (number/2!=0) ai+=number%2; number/=2; ai=number%2; for(n=i;n>=0;n-) printf("%5d",an); main() int number; int a10; printf("Please input nunber: "); scanf("%d",&number); zh(number,a); (1)#include "stdio.h" void zh(int number) int ys; ys=number%2; number=number/2; if (number=1) printf("%d",number); else zh(number); printf("%d",ys); main() int number; printf("Please input nunber: "); scanf("%d",&number); zh(number); (2) #include "stdio.h" void zh(int m) int f; f=m%2; if (m/2=0) printf("%d",m%2);return ; else zh(m/2); printf("%d",f); main( ) int m; printf("请输入一个十进制数:"); scanf ("%d", &m); zh(m); 4、编写一个函数,使输入的字符串反序存放,在主函数中输入和输出字符串。 # include # include inver(char str) char t; int i,j; for(i=0,j=strlen(str);i0) dyl(a,b,c,d); else if(d0)fun1(a,b,c); else if(d=0)fun2(a,b,c); else fun3(); 6、输入两个整数,求它们相除的余数。用带参数的宏来实现。#include "stdio.h" #define A(x,y) (x)%(y) main( ) int m,n; printf("请输入两个整数:"); scanf("%d,%d", &m,&n); printf("%d",A(m,n); 7、给年份year定义一个宏,以判别该年份是否闰年。 #include "stdio.h" #define YEAR(y) (y%4=0)&&(y%100!=0)|(y%400=0) main() int year; scanf("%d",&year); if(YEAR (year) printf("%d 年是闰年.n",year); else printf("%d 年不是闰年.n",year); 8、分别用带参数的宏和函数,从三个数中找出最大的数。(1)用带参数的宏实现 #include “stdio.h” #define MAX(a,b) (a)>(b)?(a):(b) main() int a,b,c; scanf(“%d%d%d”,&a,&b,&c); printf(“max=%dn”,MAX(MAX(a,b),c); (2) 用函数实现 #include "stdio.h" int max(int x,int y) int t; t=x>y?x:y; return(t); main() int a,b,c; scanf("%d%d%d",&a,&b,&c); printf("max=%dn",max(max(a,b),c); 二、选择题 1D2C3A4D5C6D7A8A9C10B11D12A 三、填空题 1 a=1;b=1;s=1; 2、int i; k=sqrt(pm); for(i=2;ik)return 1; else return 0; 3 for(i=0;i<3;i+) for(j=0;j<3;j+) scanf(“%d”,&aij;) for(i=0;i<3;i+) sum=sum+aii; return sum;