资源描述
12C语言程序设计习题参考答案第5章 习题参考答案1 判断题1234567891011121314152 填空题(1) 32(2) 4(3) str17= 0;(4) for(i=0;i6;i+) gets(ai);(5) strcpy(web, );(6) int *p=a;(7) 5(8) 1(9) *(p+6)或 *(s+6)3 选择题123456789101112131415BDCBABCBACDBDBAD4 程序阅读题(1) 6(2) str(3) 60(4) bcdefgacdefgabdefgabc(5) a1e25 程序填空题(1) # include scanf(%f, &ai)s=0;x=a0fabs(ai-s)(2) scanf(%d,&n)aii=1ai-1j-1printf(n)(3) bi!=0strcpyputs(b)(4)p=a0; 或p=&a00; *p六、编程题1、使用数组和指针2种方法来处理。方法一(使用数组)#include void main() int i=0,a10,t; printf(Enter the 10 number=n); for(i=0; i10; i+) scanf(%d,&ai); for(i=0;i5;i+) t=ai;ai=a9-i;a9-i=t; for(i=0; i10; i+) printf(%d ,ai); printf(n);方法二(使用指针)#include void main() int i=0,a10,t,*p,*q; printf(Enter the 10 number=n); for(p=a; pa+10; p+) scanf(%d,p); p=a; q=a+9; for(;pq;p+,q-) t=*p;*p=*q;*q=t; for(p=a; pa+10; p+) printf(%d ,*p); printf(n);2、方法一(使用数组)#include main() int i, j, t, n, a11=0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10; for(i=0;i10;i+) printf(%d , ai); printf(n); printf(Enter the Move n=?); scanf(%d, &n); for(i=1; i=0;j-) aj+1=aj; a0=t; for(i=0; i=10; i+) printf(%d , ai); getch();方法二(使用指针)#include void main() int i,t, n, a11=0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,*p=a; for(;pa+11;p+) printf(%d , *p); printf(n); printf(Enter the Move n=?); scanf(%d, &n); for(i=1; ia;p-) *p=*(p-1); *p=t; for(p=a;pa+11;p+) printf(%d , *p);3、#include #include main() int a100, b100, i, j, p, n=0, t; randomize(); for(i=0; i100; i+) ai=random(100); if(ai%2=0) bn+=ai; for(i=0; in-1; i+) p=i; for(j=i+1; jbp) p=j; t=bp; bp=bi; bi=t; for(i=0; in; i+) printf(%d , bi); if(i%10=9) printf(n); getch();4、#include #include #define N 50main() int aN, i, j,p,t; randomize(); for(i=0; iN; i+) ai=random(100); for(j=0;ji;j+) if(ai=aj) i-; break; for(i=0; iN-1; i+) p=i; for(j=i+1; jap) p=j; t=ap; ap=ai; ai=t; for(i=0; iN; i+) printf(%d , ai); if(i%10=9) printf(n); 5、#include #define N 10void main() int i; float aN,s=0.0,x0=0.0; for(i=0;iN;i+) scanf(%f,&ai); x0+=ai; x0/=N; for(i=0;iN;i+) s+=(ai-x0)*(ai-x0); printf(%10.6f, s); 6、#define N 4#define M 3void main() int i,j,sum,aNM+1,max,p; printf(input scoren); for(i=0;iN;i+) /*i代表学生序号*/ sum=0; /*每位学生成绩输入前,其总成绩赋初值0*/ for(j=0;jM;j+) /*j代表课程代号*/ scanf(%d,&aij); /*输入第i号学生第j门课程的成绩*/ sum=sum+aij; /*累加求总成绩*/ aiM=sum; /*求第i个学生的总成绩放到aiM*/ max=a0M; p=0; for(i=1;imax) p=i; printf(No.%d Total score:%dn,p+1,apM);7、#include void main() int a56; int i, j, mi, mj; for(i=0; i5; i+) for(j=0; j6; j+) printf(input a%d%d:, i, j); scanf(%d, &aij); mi=0; mj=0; for(i=0; i5; i+) for(j=0; j6; j+) if(aijamimj) mi=i; mj=j; printf(%d ,aij); printf(n); printf(min=%d ,amimj); 8、#include #include void main() float a56; int i, j, max; printf(Enter array a=?n ); for(i=0; i5; i+) for(j=0; j6; j+) scanf(%f, &aij); for(i=0; i5; i+) max=ai0; for(j=0; jfabs(max) max=aij; for(j=0; j6; j+) /*第i行中所有元素除以绝对值最大的元素*/ aij=aij/max; printf(%8.4, aij); printf( -max =%8.4n,max); 9、#include #include #define N 20main() char strN15,st15,*p=st; int i, j; for(i=0; iN; i+) scanf(%s, stri); for(i=0; iN; i+) for(j=0; j0) strcpy(p,strj); strcpy(strj,strj+1); strcpy(strj+1,p); for(i=0; iN; i+) printf(%sn, stri);10、程序如下:#include main() int a10, b10, t; int n=0, m=0, i, j, f; printf(Input Array a, end with 1:); scanf(%d, &t); while(n10 & t!=-1) an+=t; scanf(%d, &t); printf(Input Array b, end with 1:); scanf(%d, &t); while(m10 & t!=-1) bm+=t; scanf(%d, &t); for(i=0; in; i+) /* 打印只在数组a中出现的元素 */ f=1; for(j=0; jm; j+) if(ai=bj) f=0; break; if(f) printf(%d, ai); for(i=0; im; i+) /* 打印只在数组b中出现的元素 */ f=1; for(j=0; jn; j+) if(bi=aj) f=0; break; if(f) printf(%d, bi); 11、#include main() char str81; int i=-1; printf(Input:); scanf(%s, str); while(+i80 & stri!= 0)if(stri= $) stri= S; puts(str);12、#include void main() char x80,y26; int i,j,ny=0; gets(x); for(i=0;xi!=0;i+) if(xi=A&xi=Z) for(j=0;jny;j+) if(yj=xi) break; if(j=ny) yny=xi; ny+; for(i=0;iny;i+) printf(%c ,yi); printf(n); 13、#include void main() int m, bin32,j; scanf(%d,&m); for(j=0;m!=0;j+) binj= m%2; m=m/2; for(;j!=0;j-) printf(%d, binj-1 ); 14、#include #include #include void main() char s80;int i=0;gets(s); while(si!=0) if(isdigit(si) strcpy (s+i,s+i+1); else i+; puts(s);15、void main()int a,b,c;int *p1,*p2,*p3,*t;printf(nPlease input three integers:n);scanf(%d,%d,%d,&a,&b,&c);p1=&a,p2=&b,p3=&c;if(*p1*p2) t=p1,p1=p2,p2=t;if(*p1*p3) t=p1,p1=p3,p3=t;if(*p2*p3) t=p2,p2=p3,p3=t;printf(new order:n);printf(%d,%d,%d,*p1,*p2,*p3);16、void main() char st80,ss20,sp20,*a=st,*b=ss,*t=sp; int i,n,m,p=-1; printf(nPlease input two string:n); gets(a);gets(b); n=strlen(a); m=strlen(b); for(i=0;i=n-m+1;i+) a=st+i; strncpy(t,a,m); /*将字符指针a指向的字符串取前m个字符复制到t所指的字符串中*/ if(strcmp(b,t)=0) p=i; break; if(p=-1) printf(%d,p); else printf(%d,p+1); /*因数组下标从0开始,所以输出p+1*/ getch();17、#include void main() char st80,*p=st,ch; printf(Enter a stringn); gets(p); while(*p!=0) ch=*p; if(ch=A & ch=a & ch=z) ch=a+(z-ch); *p=ch; /*转换后的字符替换原字符*/ p+; /*指针指向下一个字符*/ /*指针指向字符串首字符*/ p=st; puts(p); getch();18、#include void main() char st80,*p=st,ch; long k=0; printf(Enter a stringn); gets(p); strupr(p); while(*p!=0) ch=*p; if(ch=0 & ch=A & ch=0 & ch=A & ch=F) k=16*k+(10+ch-A); p+; printf(%ldn,k);
展开阅读全文