C语言程序设计第三版第10章答案.docx
- 文档编号:14638814
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:32
- 大小:18.86KB
C语言程序设计第三版第10章答案.docx
《C语言程序设计第三版第10章答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第三版第10章答案.docx(32页珍藏版)》请在冰点文库上搜索。
C语言程序设计第三版第10章答案
【最新编排】
----------------------------------------------------------------------------------------------------------------------
第十章
10.1
#include
voidmain()
{
voidswap(int*p,int*q);
intx,y,z;
int*p1,*p2,*p3;
printf("输入三个整数\n\n");
scanf("%d%d%d",&x,&y,&z);
p1=&x;
p2=&y;
p3=&z;
if(x>y)swap(p1,p2);
if(x>z)swap(p1,p3);
if(y>z)swap(p2,p3);
printf("\n\n三个数由小到达输出为:
%d%d%d\n\n",x,y,z);
}
voidswap(int*p,int*q)
{
inttemp;
temp=*p;
*p=*q;
*q=temp;
}
10.2
#include
#include
#defineN80
voidmain()
{
voidswap(char*p,char*q);
charstr1【N】,str2【N】,str3【N】;
printf("请输入三个字符串\n\n");
scanf("%s",str1);
scanf("%s",str2);
scanf("%s",str3);
if(strcmp(str1,str2)>0)swap(str1,str2);
if(strcmp(str1,str3)>0)swap(str1,str3);
if(strcmp(str2,str3)>0)swap(str2,str3);
printf("\n\n三个字符串由小到大排列,分别为:
\n\n%s\n%s\n%s\n",str1,str2,str3);
}
voidswap(char*p,char*q)
{
charstr【N】;
strcpy(str,p);
strcpy(p,q);
strcpy(q,str);
}
10.3
#include
#defineN10
voidmain()
{
voidinput(intnum【N】);
voidswap(int*p,int*q);
voidexchange(intnum【N】);
voidoutput(intnum【N】);
intnum【N】;
input(num);
exchange(num);
output(num);
}
voidinput(intnum【N】)
{
inti;
printf("输入十个整数\n\n");
for(i=0;i { scanf("%d",&num【i】); } } 10.4 #include #defineN10 #defineM3 voidmain() { voidmove(intnum【N】,intn,intm); intnum【N】; inti; printf("输入%d个整数\n\n",N); for(i=0;i { scanf("%d",&num【i】); } move(num,N,M); printf("\n\n调整后地%d个整数为: \n\n",N); for(i=0;i { printf("%d",num【i】); } printf("\n\n"); } voidswap(int*p,int*q) { inttemp; temp=*p; *p=*q; *q=temp; } voidmove(intnum【N】,intn,intm) { int*p,*num_end; inttemp; num_end=num+n; temp=*(num_end-1); for(p=num_end-1;p>=num;p--) *p=*(p-1); *num=temp; m--; if(m>0)move(num,n,m); } 10.5 #include #defineN8 voidmain() { voidleave(intnum【N】); intnum【N】; inti,*p; p=num; for(i=0;i *(p+i)=i+1; leave(num); while(*p==0)p++; printf("最后留下地是第%d个人\n\n",*p); } voidleave(intnum【N】) { int*p; inti=0,k=0,m=0; p=num; while(m { if(*(p+i)! =0)k++; if(k==3) { *(p+i)=0; k=0; m++; } i++; if(i==N)i=0; } } 10.6 #include #defineN10 voidmain() { intcount(charstr【N】); inti; charstr【N】; printf("输入-个字符串\n\n"); gets(str); printf("\n\n字符串长度为: %d\n\n",count(str)); } intcount(charstr【N】) { char*p; inti=0; p=str; while(*p! ='\0') { i++; p++; } return(i); } 10.7 #include #defineN80 #defineM4 voidmain() { voidcopy(charstr1【N】,charstr2【N】); charstr1【N】,str2【N】; printf("输入字符串str1\n\n"); gets(str1); printf("\n\n输入字符串str2\n\n"); gets(str2); copy(str1,str2); printf("\n\n整合之后地字符串为: \n\n"); puts(str1); } voidcopy(charstr1【N】,charstr2【N】) { char*p1,*p2; inti; p1=str1; p2=str2; for(i=0;i *(p1+M+i)=*(p2+i); *(p1+M+i)='\0'; } 10.8 #include #defineN80 voidmain() { voidcount(charstr【N】,int*cap,int*low,int*space,int*num,int*oth); charstr【N】; inta=0,b=0,c=0,d=0,e=0; int*cap,*low,*space,*num,*oth; cap=&a; low=&b; space=&c; num=&d; oth=&e; printf("输入-个字符串\n\n"); gets(str); count(str,cap,low,space,num,oth); printf("\n\n大写字母个数为: %d\n\n小写字母个数为: %d\n\n空格个数位: %d\n\n数字个数为: %d\n\n其他字符个数为: %d\n\n",*cap,*low,*space,*num,*oth); } voidcount(charstr【N】,int*cap,int*low,int*space,int*num,int*oth) { inti; for(i=0;str【i】! ='\0';i++) { if(str【i】>='A'&&str【i】<='Z')(*cap)++; elseif(str【i】>='a'&&str【i】<='z')(*low)++; elseif(str【i】=='')(*space)++; elseif(str【i】>='0'&&str【i】<='9')(*num)++; else(*oth)++; } } 10.9 #include #defineN3 voidmain() { voidmove(int*p); inta【N】【N】; int*p,i,j; printf("输入-个%d*%d地矩阵\n\n",N,N); for(i=0;i for(j=0;j scanf("%d",&a【i】【j】); p=&a【0】【0】; move(p); for(i=0;i { for(j=0;j { printf("%d",a【i】【j】); } printf("\n"); } } voidmove(int*p) { inti,j,temp; for(i=0;i for(j=i;j { temp=*(p+i*N+j); *(p+i*N+j)=*(p+j*N+i); *(p+j*N+i)=temp; } } 10.10 #include #defineN3 voidmain() { voidswap(int*p,int*q); voidsort(int*p); intarr【N】【N】; inti,j,*p; printf("输入-个%d*%d地矩阵\n\n",N,N); for(i=0;i { for(j=0;j { scanf("%d",&arr【i】【j】); } } p=&arr【0】【0】; sort(p); printf("调整后地矩阵为: \n\n"); for(i=0;i { for(j=0;j { printf("%d",arr【i】【j】); } printf("\n"); } } voidswap(int*p,int*q) { inttemp; temp=*p; *p=*q; *q=temp; } voidsort(int*p) { int*max,*min; inti,j; max=p; min=p; for(i=0;i { for(j=0;j { if(*(p+i*N+j)>*max)max=p+i*N+j; if(*(p+i*N+j)<*min)min=p+i*N+j; } } swap(max,(p+(N-1)*(N+1)/2)); swap(min,p); min=p+1; for(i=0;i { for(j=0;j { if((*(p+i*N+j)<*min)&&((p+i*N+j)! =p))min=p+i*N+j; } } swap(min,(p+N-1)); min=p+1; for(i=0;i { for(j=0;j { if((*(p+i*N+j)<*min)&&((p+i*N+j)! =p)&&((p+i*N+j)! =(p+N-1)))min=p+i*N+j; } } swap(min,(p+(N-1)*N)); min=p+1; for(i=0;i { for(j=0;j { if((*(p+i*N+j)<*min)&&((p+i*N+j)! =p)&&((p+i*N+j)! =(p+N-1))&&((p+i*N+j)! =(p+(N-1)*N)))min=p+i*N+j; } } swap(min,(p+N*N-1)); } 10.11 #include #defineN5 voidmain() { voidswap(char*p,char*q); voidsort(char*p); charstr【N】【N】,*p; inti; printf("输入%d个字符串\n\n",N); for(i=0;i scanf("%s",str【i】); p=&str【0】【0】; sort(p); printf("\n\n排序后地%d个字符串为\n\n",N); for(i=0;i printf("%s\n",str【i】); } voidswap(char*p,char*q) { chars【N】; strcpy(s,p); strcpy(p,q); strcpy(q,s); } voidsort(char*p) { inti,j; for(i=0;i { for(j=i+1;j { if(strcmp((p+i*N),(p+j*N))>0)swap((p+i*N),(p+j*N)); } } } 10.12 #include #defineN5 #defineM10 voidmain() { voidsort(char*p【N】); charstr【N】【M】,*p【N】; inti; printf("输入%d个字符串\n\n",N); for(i=0;i scanf("%s",str【i】); for(i=0;i p【i】=str【i】; sort(p); printf("\n\n排序后地%d个字符串为\n\n",N); for(i=0;i printf("%s\n",p【i】); } voidsort(char*p【N】) { inti,j; char*q; for(i=0;i { for(j=i+1;j { if(strcmp(p【i】,p【j】)>0) { q=p【i】; p【i】=p【j】; p【j】=q; } } } } 10.13 #include #include voidmain() { floatintegral(floata,floatb,intn,double(*fun)(double)); intn=100; floata,b,c; double(*fun)(double); printf("输入积分范围: (a,b)\n\n"); scanf("%f%f",&a,&b); fun=sin; c=integral(a,b,n,fun); printf("\n\nsin积分结果为: %f\n\n",c); fun=cos; c=integral(a,b,n,fun); printf("\n\ncos积分结果为: %f\n\n",c); fun=exp; c=integral(a,b,n,fun); printf("\n\nexp积分结果为: %f\n\n",c); } floatintegral(floata,floatb,intn,double(*fun)(double)) { inti; floatx,h,area; h=(b-a)/n; x=a; area=0; for(i=0;i { x=x+h; area=area+(*fun)(x)*h; } return(area); } 10.14 #include #defineN20 voidmain() { voidswap(int*p,int*q); voidback(int*p,intn); inta【N】,i,n; printf("输入个数n\n\n"); scanf("%d",&n); printf("\n\n输入%d个整数\n\n",n); for(i=0;i scanf("%d",&a【i】); back(a,n); printf("\n\n逆序排列为: \n\n"); for(i=0;i printf("%d",a【i】); printf("\n\n"); } voidswap(int*p,int*q) { inttemp; temp=*p; *p=*q; *q=temp; } voidback(int*p,intn) { inti; for(i=0;i { swap(p+i,p+n-1-i); } } 10.15 #include #defineM4 #defineN5 voidmain() { voidaver_count1(char*cou,float*sco); voidaver_stu(float*sco,float*ave); voidfail2(char*cou,int*num,float*sco,float*ave); voidgood(char*cou,int*num,float*sco,float*ave); charcourse【N】【10】,*cou; floatscore【M】【N】,aver【M】,*sco,*ave; intnumber【M】,*num,i,j; cou=course【0】; printf("输入%d门课程名\n\n",N); for(i=0;i scanf("%s",cou+i*10); printf("\n\n按顺序输入%d个学生学号和%d门课程地成绩\n\n",M,N); printf("学号"); for(i=0;i printf("%s",cou+i*10); num=number; sco=&score【0】【0】; for(i=0;i { scanf("%d",num+i); for(j=0;j { scanf("%f",sco+i*N+j); } } aver_count1(cou,sco); ave=aver; aver_stu(sco,ave); ave=aver; fail2(cou,num,sco,ave); ave=aver; good(cou,num,sco,ave); } voidaver_count1(char*cou,float*sco) { inti; floatsum,aver; sum=0; for(i=0;i sum+=(*(sco+i*N)); aver=sum/M; printf("第-门课%s地平均成绩为: %f\n\n",cou,aver); } voidaver_stu(float*sco,float*ave) { inti,j; floatsum; for(i=0;i { sum=0; for(j=0;j { sum+=(*(sco+i*N+j)); } *(ave+i)=sum/N; } } voidfail2(char*cou,int*num,float*sco,float*ave) { inti,j,k,flag; printf("============两门以上课程不及格地学生============\n\n"); printf("学号"); for(i=0;i printf("%-8s",cou+i*10); printf("平均成绩\n\n"); for(i=0;i { flag=0; for(j=0;j { if(*(sco+i*N+j)<60)flag+=1; } if(flag>2) { printf("%-8d",*(num+i)); for(k=0;k { printf("%-8.2f",*(sco+i*N+k)); } printf("%-8.2f\n\n",*(ave+i)); } } } voidgood(char*cou,int*num,float*sco,float*ave) { inti,j,k,flag; printf("============平均成绩在90分以上或者每门课在85分以上地学生============\n\n"); printf("学号"); for(i=0;i printf("%-8s",cou+i*10); printf("平均成绩\n\n"); for(i=0;i { flag=0; for(j=0;j { if(*(sco+i*N+j)>=85)flag+=1; } if(flag==5||(*(ave+i)>=90)) { printf("%-8d",*(num+i)); for(k=0;k { printf("%-8.2f",*(sco+i*N+k)); } printf("%-8.2f\n\n",*(ave+i)); } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 第三 10 答案