1、C语言程序设计教程课后习题答案第1章1-3 CAB4 .c .obj .exe5 /* */6 ;7 算法8 中级语言:C语言具有高级语言的先进思想又能直接对存储器进行操作,能进行位运算,能实现汇编语言的大部分功能,生成目标代码质量高,程序执行效率高。结构化语言:C语言用函数作为程序模块,以实现程序的模块化,语言简洁、紧凑,具有结构化的特点。可移植性好:C语言不包含依赖硬件的输入输出机制,使C语言本身不依赖于硬件系统,可移植性好。9 #includemain( ) ; 10 #include “” main() printf(“This is my first C Program!”); 第2
2、章1 yes2 -33 2,14 1)a!=b|a=4|x20&x30|x-1006 #include main() int x;printf(“please input an integar:”); scanf(%d,&x); if(x%5=0&x%7=0) printf(yesn); else printf(non);7.#include main() int year,month; printf(please input the year and month:); scanf(%d%d,&year,&month); switch(month) case 1: case 3: case 5
3、: case 7: case 8: case 10: case 12:printf(this month have 31 days.); break; case 4: case 6: case 9: case 11:printf(this month have 30 days.); break; case 2:if(year%4=0&year%100!=0|year%400=0) printf(this month have 29 days.); break; else printf(this month have 28 days.); break; 8. #include main() fl
4、oat money; int year; printf(nplease input the money and the year:); scanf(%f%d,&money,&year); if(year=1) money+=money*12*year; if(year=2) money+=money*12*year; if(year=3|year=4) money+=money*12*year; if(year=5&year=8) money+=money*12*year; printf(the money is:%f,money);第3章1 #include main() float x10
5、,sum=0; int i=0; printf(please input 10 numbers(-10e6x10e6)n); while(i10) scanf(%f,&xi); sum=sum+1/xi; i=i+1; printf(the sum of 10 numbers is %.2fn,sum);2#include main() int x100,sum=0,aver,i=0; printf(please input numbers until 0n); scanf(%d,&xi); while(xi!=0) sum=sum+xi; i=i+1; scanf(%d,&xi); prin
6、tf(the sum is %dn,sum); printf(the average is %.2fn,float(sum)/i);3#include #include main() int i=1,j,f; long int s=0; while(i=10) for(f=1,j=1;j=i;j+) f=f*j; s=s+pow(-1,i-1)*f; i=i+1; printf(s= %ldn,s);4#include #include main() int i=0; float s=; while(2*i+1=101) s=s+pow(-1,i)/float(2*i+1); i=i+1; p
7、rintf(s= %fn,s);5#include #includemain() int i,j,k,n=0; for(i=1;i=9;i+) for(j=0;j=9;j+) for(k=0;k=9;k+) if(i*100+j*10+k=i*i*i+j*j*j+k*k*k) printf(the %d:%dn,+n,i*100+j*10+k); printf(the all is %d.n,n-);6#include main() int n,i,j; printf(please input n:); scanf(%d,&n); for(i=0;in;i+) for(j=0;jn;j+) p
8、rintf(*); printf(n); 7#include main() char a81; int i,j=0,k=0,m=0; printf(please input a $(length=65&ai=90) j+; else if(ai=32) k+; else m+; printf(the upper letter is %dn,j); printf(the blank is %dn,k); printf(the other is %dn,m);8#include main() int i,j,k,m=0; for(i=0;i=20;i+) for(j=0;j=50;j+) for(
9、k=0;k=100;k+) if(i*5+j*2+k=100) printf(the %d wag is 1:%d,2:%d,5:%dn,+m,k,j,i); printf(the wags is %dn,m-); 9#include main() int i,j,k,m=0; for(i=0;i=3;i+) for(j=0;j=3;j+) for(k=0;k=6;k+) if(i+j+k=8) printf(the %d wag is white:%d,red:%d,black:%dn,+m,i,j,k); printf(the wags is %dn,m-); 10#include mai
10、n() long int n; int i,j,k; printf(please inpur n:); scanf(%ld,&n); if(n%2=1|n=1) printf(the input is error.n); return(1); for(i=2;i=n/2;i+) for(j=2;ji;j+) if(i/j*j=i) break; if(j=i) for(k=2;kn-i;k+) if(n-i)/k*k=(n-i) break; if(k=n-i) printf(%ld=%d+%dn,n,i,n-i); 11#include main()int i,j,k,m; for(i=1;
11、i=9;i+) for(j=0;j=9;j+) for(k=0;k=9;k+) for(m=0;m=A&stri=a&stri=0&stri=9) num2+; i+; printf(num1=%d,num2=%d,num1,num2);9笔者在程序中直接给数组元素赋了值,读者可以修改为用scanf函数读入数值;另外,还可以用第7章宏定义的方法设定数组的长度,从而实现对元素个数不同的数组进行排序。#include main() int a5=2,4,1,3,0,i,j,temp; for(i=0;i=4;i+) printf(%d,ai); printf(n); for(j=1;j=4;j+)
12、 for(i=j;i=4;i+) if(aiaj-1) temp=aj-1; aj-1=ai; ai=temp; for(i=0;i=4;i+) printf(%d,ai);第6章1-5 AADBA 6 C7 0 2 4 6 8 10 12 14 16 180 2 4 6 8 10 12 14 16 188 a+b=99 5+4+1=10 10+4+2=16 20+4+3=2710加密:#include main() char string100,i=0,number=0; scanf(%s,string); while(stringi+!=0) number+; fun1(string,nu
13、mber); printf(%s,string);fun1(char str,int num) int i; for(i=0;i=A&stri=a&stri=0&striV&striv&stri5&stri=9) stri-=6;解密#include main() char string100,i=0,number=0; scanf(%s,string); while(stringi+!=0) number+; fun2(string,number); printf(%s,string);fun2(char str,int num) int i; for(i=0;i=E&stri=e&stri
14、=4&stri=A&stri=a&stri=0&stri4) stri+=6;第8章一、下列语句是否合法语句:int *p = &x, x = 13;点评:不合法,因为x变量没有定义。在执行int *p = &x 时,x变量的定义在后面。参考:int x = 13, *p = &x;语句:int *p = &x = 13;点评:不合法,因为x变量没有定义。在执行int *p = &x = 13 时,x变量没有定义。参考:int x = 13, *p; p = &x;语句:int x = 13,*p = x;点评:不合法,不能把x变量的值赋给指针p。应该把变量x的地址值赋给指针p。参考:int
15、x = 13, *p; p = &x;语句:int y5 = 1,2,3,4,5,*p = y3;点评:不合法,不能把数组元素y3的值赋给指针p,应该把数组元素y3的地址值赋给指针p。参考:int y5 = 1,2,3,4,5,*p ; p = &y3;语句:int *p = y,y5 = 1,2,3,4,5;点评:不合法,因为数组y没有定义。参考:int y5 = 1,2,3,4,5,*p; p = y;语句:int y5 = 1,2,3,4,5,*p = &y;点评:不合法,不能把数组y的地址值赋给指针p。数组名y本身是数组y的地址常量值。参考:int y5 = 1,2,3,4,5,*p;
16、 p = y;或 int y5 = 1,2,3,4,5,*p; p = &y0;语句:int *c = &ch,ch = Hello World;点评:不合法,ch变量没有定义,字符串Hello World不能赋给变量ch。参考:char *ch = Hello World!;或char *ch;ch = Hello World;语句:char ch12 = Hello World,*c = ch;点评:合法。思考:char ch12 = Hello World!,*c = ch;该语句错误,字符个数超出数组ch定义的宽度。语句:char *c = ch12 = Hello World点评:不
17、合法,数组ch没有定义。数组ch没有第12个元素。参考:char *c,ch12 = Hello World;c = ch;语句:char *c,c = X,c = &c;点评:不合法,不能把常量X的值赋给指针,不能把指针c的地址值赋给指针c自己。参考:char *c,ch; ch = X,c = &ch;二、综合练习题参考答案1将一字符串复制到另一字符串中。#includevoid main() char str1128,str2128 = Welcome to C Language; char *cp1,*cp2; cp1 = str1; cp2 = str2; while(*cp1+ =
18、 *cp2+); puts(str1);2将一字符串与另一字符串相连接。#includevoid main() char str1128 = Welcome ,str2128 = to C Language; char *cp1,*cp2; int i = 0,n = 0; while(n+,str1+i != 0); cp1 = str1+n; cp2 = str2; while(*cp1+ = *cp2+); puts(str1);3将字符数组中大写字符改为小写字符,将小写字符改为大写字符。#includevoid main() char str1128 = Welcome to C La
19、nguage; char *cp1 = str1; while(*cp1) if(*cp1 = A & *cp1 = a & *cp1 = z) *cp1 = *cp1-32; else *cp1 = *cp1; cp1+; puts(str1);4从一字符串中取出部分字符串复制到另一字符串中。#includevoid main() char ch128,*cp,str128,*sp; int b,n,l=0,i; cp=ch; sp=str; gets(cp); scanf(%d%d,&b,&n); while(l+,*(ch+l)!=0); if(nl) for(i=0;in;i+) *(
20、sp+i)=*(cp+b+i); *(sp+i)=0; puts(str); else printf(无数据可以复制); 5完成一整型数组的排序。#include#includevoid main() int x10,i,j,*p,t; p = x; for(i = 0;i10;i+) xi = rand(); for(i = 0;i9;i+) for(j = 0;j*(p+j+1) t = *(p+j); *(p+j) = *(p+j+1); *(p+j+1) = t; for(i = 0;i10;i+) printf(%dt,*p+);6将一个字符串中的字符反序排列。#includevoi
21、d main() char ch128,c,*cp1,*cp2; int i,n = 0; gets(ch); cp1 = ch; cp2 = ch; while(*cp2!= 0) n+; cp2+; cp2-; n = n/2; for(i = 0;in;i+) c = *cp1; *cp1 = *cp2; *cp2 = c; cp1+; cp2-; puts(ch);7编函数完成将一字符串中的字符全部改为大写。#includevoid cove(char *cp) while(*cp!= 0) if(*cp= a & *cp= z) *cp = *cp-32; cp+; void mai
22、n() char ch128,*cp; cp = ch; gets(cp); cove(cp); puts(ch);8编函数完成从一字符串左边取若干字符复制到另一字符串中。#includevoid lm(char *lcp,char *bcp,int n) int i; for(i = 0;in;i+) *(bcp+i) = *(lcp+i); *(bcp+i) = 0;void main() char ch128,*cp,str128; int n,l =0; gets(ch); scanf(%d,&n); while(l+,*(ch+l)!= 0); if(nl) cp = ch; lm(cp,str,n); puts(str); else printf(无数据可以复制);第9章1#include struct date int year; int month; int day;main() struct date re; int day212=31,29,31,30,31,30,31,31,30,31,30,31,31,28,31,30,31,30,31,31,30,31,30,31; int i,da
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1