1、C语言课后习题答案110新第四章5、#include “stdio.h”main()char c;int w,x,y,z;w=x=y=z=0;while(c=getchar()!=n)if(ca&cA&c0&c9) y+;else z+printf(“英文字母个数:%dn”,w);printf(“空格个数:%dn”,x);printf(“数字个数:%dn”,y);printf(“其他字母个数:%dn”,z);第五章 1#include stdio.hmain()int a11; int i,j,t; printf(input 10 number:n); for (i=1;i11;i+) sca
2、nf(%d,&ai); printf(n); for (i=1;i=9;i+) for (j=1;j=10-i;j+) if (ajaj+1) t=aj;aj=aj+1;aj+1=t; printf(the sorted number is:n); for (i=1;i11;i+) printf(%4d,ai);2#include stdio.hmain()int a11,i,b; printf(imput 10 sorted number:n); for (i=0;i=0&aib;i-) ai+1=ai; ai+1=b; printf(sorted numbers:n); for (i=0;
3、i11;i+) printf(%5d,ai); 5#include stdio.hmain()int a34,i,j,max,row,col; printf(input 3*4 matrix:n); for (i=0;i3;i+) /*输入3*4矩阵*/ for (j=0;j4;j+) scanf(%d,&aij); max=a00; row=0; col=0; for (i=0;i3;i+) /*寻找矩阵中的最大值及其行列号*/ for (j=0;j4;j+) if (maxaij) max=aij; row=i, col=j; printf(n数组中最大的数是%d,其行号是%d,列号是%d
4、n,max,row,col);6#define N 3#define M 4#include stdio.hmain()int aNM,i,j,k,max,row,col; printf(input %d*%d matrix: n,N,M); for (i=0;iN;i+) /*输入二维矩阵*/ for (j=0;jM;j+) scanf(%d,&aij); for (i=0;iN;i+) /*求鞍点*/ max=ai0; row=i; col=0; for(j=1;jM;j+) /*求矩阵中每一行的最大值及其所行列号*/ if (maxaij) max=aij; col=j; for (k=
5、0;kN;k+) /*判断每一行的最大值在其所在列是否最大*/ if (akcolmax) break; if (k=N) /*得到鞍点*/ printf(the point is %d,row=%d,col=%dn,max,row,col);break; if (i=N) /*没有鞍点*/ printf(no pointn);8#include stdio.hmain()int i,j,uppn,lown,dign,span,othn; /*uppn,lown,dign,span,othn分别存放英文大写字母、小写字母、数字、空格和其他字符的个数*/ char text380; uppn=l
6、own=dign=span=othn=0; for(i=0;i3;i+) gets(texti); for(j=0;j=A&textij=a&textij=0&textij=9) dign+; else if(textij= ) span+; else othn+; for(i=0;i3;i+) printf(%sn,texti); printf(uppn=%dn,uppn); printf(lown=%dn,lown); printf(dign=%dn,dign); printf(span=%dn,span); printf(othn=%dn,othn);9#include stdio.hm
7、ain()int i,j; char str120,str220; printf(input two strings:n); gets(str1); gets(str2); j=strlen(str1); /*求字符串1的长度*/ for (i=0;str2i!=0;i+,j+) /*字符串合并*/ str1j=str2i; str1j=0; /*加上字符串结束标志*/ puts(str1);10#include stdio.hmain()int i,n; char str120,str220; printf(input two strings:(no more than 20 charact
8、ers)n); gets(str1); gets(str2); n=strlen(str1)strlen(str2)?strlen(str1):strlen(str2); /*n中存放较短字符串的长度*/ for (i=0;i0):n); scanf(%d,&n); if (prime(n) printf(%d is a sushun,n); else printf(%d is not a sushun,n);int prime(int n) int flag=1,i; for (i=2;i=n/2&flag=1;i+) if (n%i=0) flag=0; return(flag);2.#d
9、efine N 3convert(int array33) int i,j,t; for (i=0;iN-1;i+) for (j=i+1;jN;j+) t=arrayij; arrayij=arrayji; arrayji=t;main()int i,j; int aNN; printf(input a:n); for (i=0;iN;i+) for (j=0;jN;j+) scanf(%d,&aij); printf(Array a:n); for (i=0;iN;i+) for (j=0;jN;j+) printf(%5d,aij); printf(n); convert(a); pri
10、ntf(a de zhuanzhi is:n); for (i=0;iN;i+) for (j=0;jN;j+) printf(%5d,aij); printf(n); 3. #include #include main() char str100; printf(input a string:n) ; gets(str); inverse(str); printf(the reversed string is:%sn,str); inverse(char str) char t; int i,j; for (i=0,j=strlen(str)-1;ij;i+,j-) t=stri; stri
11、=strj; strj=t; 4. #include concat(char str1,char str2) int i=0,j; while (str1i!=0) i+; for (j=0;str2j!=0;i+,j+) str1i=str2j; str1i=0;main()char str1100,str2100; gets(str1);gets(str2); concat(str1,str2); puts(str1);5. main() char str80; printf(input a string (4 ge shu zi zi fu):n); scanf(%s,str); ins
12、ert(str); printf(result is:n%sn,str); insert(char str) int i; for (i=strlen(str);i0;i-) str2*i=stri; str2*i-1= ; 6. #include stdio.hint i,ndight,nwhite,nletter,nother;count(char str) ndight=nwhite=nletter=nother=0; for (i=0;stri!=0;i+) if (stri=0&stri=A&stri=a&stri=z) nletter+; else if (stri= ) nwhi
13、te+; else nother+; main()char text80; printf(input a string:n); gets(text); count(text);printf(ndight=%d,nletter=%d,nwhite=%d,nother=%dn,ndight,nletter,nwhite,nother);7. #define N 10#include sort(char str)int i,j; char t;for (i=1;iN;i+) for (j=0;jstrj+1) t=strj;strj=strj+1 ;strj+1=t;main()char strN;
14、 int i ; printf(Input 10 ge zi fu:n); gets(str); sort(str); printf(The sorted result:n) ; for(i=0;iN;i+) printf(%c,stri);8. #include #include #define N 10void input_e(int num,char nameN8)int i; for (i=0;iN;i+) printf(input gong hao:); scanf(%d,&numi); printf(input name:); getchar(); gets(namei); for
15、 (i=0;iN;i+) printf(%5d%10sn,numi,namei);void sort(int num,char nameN8) /*选择法排序*/int i,j,min,temp1; char temp28; for (i=0;iN-1;i+) min=i; for (j=i+1;jN;j+) if (numjnummin) min=j; temp1=numi; strcpy(temp2,namei); numi=nummin; strcpy(namei,namemin); nummin=temp1; strcpy(namemin,temp2); printf(the sort
16、ed result:n); for (i=0;iN;i+) printf(%5d%10sn,numi,namei);void search(int n,int num,char nameN8) /*折半查找法*/int top,bott,mid,find; find=0; top=0; bott=N-1; if (nnumN-1) find=-1; while (find=0)&(top=bott) mid=(bott+top)/2; if (n=nummid) find=1; printf(%d name is:%sn,n,namemid); else if (nnummid) bott=m
17、id-1; else top=mid+1; if (find=-1)|(find=0) printf(%d is not found.n,n);main() int numN,number,c,flag; char nameN8; input_e(num,name); sort(num,name); for (flag=1;flag;) printf(please input chazhao de gonghao:); /*输入查找的工号*/ scanf(%d,&number); search(number,num,name); printf(continue Y/N?); /*是否继续查找*
18、/ getchar(); c=getchar(); if (c=N|c=n) flag=0;9. #include stdio.h#define MAX 10main() char strMAX; char c; int i; i=0; printf(input number(16 jinzhi): ); /*输入一个十六进制的数*/ while(c=getchar()!=n&i=0&si=a&si=A&siy ? x : y); return(tz?t:z);#define MAX(x,y) (x)(y)?(x):(y)main()int a,b,c; printf(input a,b,c:
19、); scanf(%d,%d,%d,&a,&b,&c); printf(max=%dn,MAX(MAX(a,b),c);13. #include stdio.h#define CHANGE 1#define MAX 80main() char strMAX; int i; printf(input a string:n); gets(str); #if (CHANGE) for (i=0;stri!=0;i+) if (stri=a&stri=A&striZ) stri=stri+1; else if (stri=z|stri=Z) stri=stri-25; #endif printf(%s
20、n,str);七:1、main( ) int a10,i,temp,*p=a; printf(Please input array a:n); for(i=0;i10;i+) scanf(%d,&ai); printf(array a:n); for(i=0;i10;i+) printf(%4d,ai); for(i=0;i5;i+) temp=pi; pi=p10-i-1; p10-i-1=temp; printf(n Now array a:n); for(i=0;i10;i+) printf(%4d,ai);2、main( ) int a33,*p,i,j; printf(please
21、input matrix:n); for(i=0;i3;i+) for(j=0;j3;j+) scanf(%d,&aij); p=&a00; move(p); printf(n Now matrix:n); for(i=0;i3;i+) for(j=0;j3;j+) printf(%4d,aij); printf(n);move(int *q) int i,j,t; for(i=0;i3;i+) for(j=i;j3;j+) t=*(q+3*i+j); *(q+3*i+j)=*(q+3*j+i); *(q+3*j+i)=t; 3、#include #include #include #incl
22、ude main( )int binary();void insert();char *temp,*ptr16=BASIC,DATA,PASCAL,SQL,USE;int i;ptr15=malloc(20);printf(n);printf(original string:n);for(i=0;i5;i+)printf(%sn,ptr1i);printf(input search string:n);temp=malloc(20);gets(temp);i=binary(ptr1,temp,5);printf(i=%dn,i);insert(ptr1,temp,5,i);printf(output strings:n);for(i=0;i6;i+)printf(%sn,ptr1i);int binary(char *ptr,char *str,int n)int hig,low,mid;low=0;hig=n-1;if(strcmp(str,ptr0)0) return(n);while(low=hig)mid=(low+hig)/2;if(strcmp(str,ptrmid)0)low=mid