C语言程序设计第三版第10章答案.docx

上传人:b****4 文档编号:27024119 上传时间:2023-06-25 格式:DOCX 页数:32 大小:18.86KB
下载 相关 举报
C语言程序设计第三版第10章答案.docx_第1页
第1页 / 共32页
C语言程序设计第三版第10章答案.docx_第2页
第2页 / 共32页
C语言程序设计第三版第10章答案.docx_第3页
第3页 / 共32页
C语言程序设计第三版第10章答案.docx_第4页
第4页 / 共32页
C语言程序设计第三版第10章答案.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

C语言程序设计第三版第10章答案.docx

《C语言程序设计第三版第10章答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第三版第10章答案.docx(32页珍藏版)》请在冰豆网上搜索。

C语言程序设计第三版第10章答案.docx

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));

}

}

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1