C程序设计第三版习题答案10章 谭浩强著.docx

上传人:b****5 文档编号:7470880 上传时间:2023-01-24 格式:DOCX 页数:20 大小:17.50KB
下载 相关 举报
C程序设计第三版习题答案10章 谭浩强著.docx_第1页
第1页 / 共20页
C程序设计第三版习题答案10章 谭浩强著.docx_第2页
第2页 / 共20页
C程序设计第三版习题答案10章 谭浩强著.docx_第3页
第3页 / 共20页
C程序设计第三版习题答案10章 谭浩强著.docx_第4页
第4页 / 共20页
C程序设计第三版习题答案10章 谭浩强著.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

C程序设计第三版习题答案10章 谭浩强著.docx

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

C程序设计第三版习题答案10章 谭浩强著.docx

C程序设计第三版习题答案10章谭浩强著

C程序设计(第三版)习题答案(10章)谭浩强著

第十章指针

10.1

intswap(int*p1,int*p2)

{intp;

p=*p1;*p1=*p2;*p2=p;

}

voidmain()

{

intn1,n2,n3;

int*q1,*q2,*q3;

scanf("%d%d%d",&n1,&n2,&n3);

q1=&n1;q2=&n2;q3=&n3;

if(n1>n2)swap(q1,q2);

if(n1>n3)swap(q1,q3);

if(n2>n3)swap(q2,q3);

printf("%d%d%d\n",n1,n2,n3);

}

10.2

main()

{char*str1[20],*str2[20],*str3[20];

charswap();

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("%s\n%s\n%s\n",str1,str2,str3);

}

charswap(p1,p2)

char*p1,*p2;

{char*p[20];

strcpy(p,p1);

strcpy(p1,p2);

strcpy(p2,p);

}

10.3

main()

{intnumber[10];

input(number);

max_min_value(number);

output(number);

}

input(number)

intnumber[10];

{inti;

for(i=0;i<10;i++)

scanf("%d",&number[i]);

}

max_min_value(number)

intnumber[10];

{int*max,*min;

int*p,*end;

end=number+10;

max=min=number;

for(p=number+1;p

if(*p>*max)max=p;

elseif(*p<*min)min=p;

*p=number[0];

number[0]=*min;

*min=*p;

*p=number[9];

number[9]=*max;

*max=*p;

return;

}

output(number)

intnumber[10];

{int*p;

for(p=number;p

printf("%d,",*p);

printf("%d\n",*p);

}

10.4

main()

{intnumber[20],n,m,i;

scanf("%d",&n);

scanf("%d",&m);

for(i=0;i

i++)

scanf("%d",&number[i]);

move(number,n,m);

for(i=0;i

printf("%8d",number[i]);

}

move(array,n,m)

intarray[20],n,m;

{int*p,end;

end=*(array+n-1);

for(p=array+n-1;p>array;p--)

*p=*(p-1);

*array=end;

m--;

if(m>0)move(array,n,m);

}

10.5

#definenmax50

main()

{inti,k,m,n,num[nmax],*p;

scanf("%d",&n);

p=num;

for(i=0;i

*(p+i)=i+1;

i=k=m=0;

while(m

{if(*(p+i)!

=0)k++;

if(k==3)

{*(p+i)=0;

k=0;

m++;

}

i++;

if(i==n)i=0;

}

while(*p==0)p++;

printf("%d",*p);

}

10.6

main()

{intlen;

char*str[20];

scanf("%s",str);

len=length(str);

printf("\nlen=%d\n",len);

}

length(p)

char*p;

{intn=0;

while(*p!

='\0')

{n++;p++;}

return(n);

}

10.7

main()

{intm;

char*str1[20],*str2[20];

scanf("%s",str1);

scanf("%d",&m);

if(strlen(str1)

printf("error");

else

{copystr(str1,str2,m);

printf("%s",str2);

}

}

copystr(p1,p2,m)

char*p1,*p2;

intm;

{intn=0;

while(n

{n++;p1++;}

while(*p1!

='\0')

{*p2=*p1;

p1++;

p2++;

}

*p2='\0';

}

10.8

#include"stdio.h"

main()

{intcle=0,sle=0,di=0,wsp=0,ot=0,i;

char*p,s[20];

for(i=0;i<20;i++)s[i]=0;

i=0;

while((s[i]=getchar())!

='\n')i++;

p=s;

while(*p!

='\n')

{if(*p>='a'&&*p<='z')

++sle;

elseif(*p>='A'&&*p<='Z')

++cle;

elseif(*p=='')

++wsp;

elseif(*p>='0'&&*p<='9')

++di;

else

++ot;

p++;

}

printf("sle=%d,cle=%d,wsp=%d,di=%d,ot=%d\n",sle,cle,wsp,di,ot);

}

10.9

main()

{inta[3][3],*p,i;

for(i=0;i<3;i++)

scanf("%d,%d,%d",a[i][0],a[i][1],a[i][2]);

p=a;

move(p);

for(i=0;i<3;i++)

printf("%d%d%d\n",a[i][0],a[i][1],a[i][2]);

}

move(pointer)

int*pointer;

{inti,j,t;

for(i=0;i<2;i++)

for(j=i+1;j<3;j++)

{t=*(pointer+3*i+j);

*(pointer+3*i+j)=*(pointer+3*j+i);

*(pointer+3*j+i)=t;

}

}

10.10

main()

{inta[5][5],*p,i,j;

for(i=0;i<5;i++)

for(j=0;j<5;j++)

scanf("%d",&a[i][j]);

p=a;

change(p);

for(i=0;i<5;i++)

{printf("\n");

for(j=0;j<5;j++)

printf("%8d",a[i][j]);

}

}

change(p)

int*p;

{inti,j,change;

int*pmax,*pmin;

pmax=p;

pmin=p;

for(i=0;i<5;i++)

for(j=0;j<5;j++)

{if(*pmax<*(p+5*i+j))pmax=p+5*i+j;

if(*pmin>*(p+5*i+j))pmin=p+5*i+j;

}

change=*(p+12);

*(p+12)=*pmax;

*pmax=change;

change=*p;

*p=*pmin;

*pmin=change;

pmin=p+1;

for(i=0;i<5;i++)

for(j=0;j<5;j++)

if(((p+5*i+j)!

=p)&&(*pmin>*(p+5*i+j)))pmin=p+5*i+j;

change=*(p+4);

*(p+4)=*pmin;

*pmin=change;

pmin=p+1;

for(i=0;i<5;i++)

for(j=0;j<5;j++)

if(((p+5*i+j)!

=(p+4))&&((p+5*i+j)!

=p)&&(*pmin>*(p+5*i+j)))

pmin=p+5*i+j;

change=*(p+20);

*(p+20)=*pmin;

*pmin=change;

pmin=p+1;

for(i=0;i<5;i++)

for(j=0;j<5;j++)

if(((p+5*i+j)!

=p)&&((p+5*i+j)!

=(p+4))&&((p+5*i+j)!

=(p+20))

&&(*pmin>*(p+5*i+j)))pmin=p+5*i+j;

change=*(p+24);

*(p+24)=*pmin;

*pmin=change;

}

10.11

main()

{inti;

char*p,str[10][10];

for(i=0;i<10;i++)

scanf("%s",str[i]);

p=str;

sort(p);

for(i=0;i<10;i++)

printf("%s\n",str[i]);

}

sort(p)

char*p;

{inti,j;

chars[10],*smax,*smin;

for(i=0;i<10;i++)

{smax=p+10*i;

for(j=i+1;j<10;j++)

{smin=p+10*j;

if(strcmp(smax,smin)>0)

{strcpy(s,smin);

strcpy(smin,smax);

strcpy(smax,s);

}

}

}

}

10.12

#defineMAX20

main()

{inti;

char*pstr[10],str[10][MAX];

for(i=0;i<10;i++)

pstr[i]=str[i];

for(i=0;i<10;i++)

scanf("%s",pstr[i]);

sort(pstr);

for(i=0;i<10;i++)

printf("%s\n",pstr[i]);

}

sort(pstr)

char*pstr[10];

{inti,j;

char*p;

for(i=0;i<10;i++)

{for(j=i+1;j<10;j++)

{if(strcmp(*(pstr+i),*(pstr+j))>0)

{p=*(pstr+i);

*(pstr+i)=*(pstr+j);

*(pstr+j)=p;

}

}

}

}

10.13

#include"math.h"

main()

{intn=20;

floata,b,a1,b1,a2,b2,c,(*p)(),jiff();

scanf("%f,%f",&a,&b);

scanf("%f,%f",&a1,&b1);

scanf("%f,%f",&a2,&b2);

p=sin;

c=jiff(a,b,n,p);

printf("sin=%f\n",c);

p=cos;

c=jiff(a1,b1,n,p);

printf("cos=%f\n",c);

p=exp;

c=jiff(a2,b2,n,p);

printf("exp=%f\n",c);

}

floatjiff(a,b,n,p)

floata,b,(*p)();

intn;

{inti;

floatx,f,h,area;

h=(b-a)/n;

x=a;

area=0;

for(i=1;i<=n;i++)

{x=x+h;

area=area+(*p)(x)*h;

}

return(area);

}

10.14

main()

{inti,n,num[20];

char*p;

scanf("%d",&n);

for(i=0;i

scanf("%d",&num[i]);

p=num;

sort(p,n);

for(i=0;i

printf("%8d",num[i]);

}

sort(p,m)

char*p;

intm;

{inti;

charchange,*p1,*p2;

for(i=0;i

{p1=p+i;

p2=p+(m-1-i);

change=*p1;

*p1=*p2;

*p2=change;

}

}

10.15

main()

{inti,j,*pnum,num[4];

floatscore[4][5],aver[4],*psco,*pave;

charcourse[5][10],*pcou;

pcou=course[0];

for(i=0;i<5;i++)

scanf("%s",pcou+10*i);

printf("number");

for(i=0;i<5;i++)

printf(",%s",pcou+10*i);

printf("\n");

psco=score;

pnum=num;

for(i=0;i<4;i++)

{scanf("%d",pnum+i);

for(j=0;j<5;j++)

scanf(",%f",psco+5*i+j);

}

pave=aver;

printf("\n");

avsco(psco,pave);

avcour1(pcou,psco);

printf("\n");

fali2(pcou,pnum,psco,pave);

printf("\n");

good(pcou,pnum,psco,pave);

}

avsco(psco,pave)

float*psco,*pave;

{inti,j;

floatsum,average;

for(i=0;i<4;i++)

{sum=0;

for(j=0;j<5;j+)

sum+=(*(psco+5*i+j));

average=sum/5;

*(pave+i)=average;

}

}

avcour1(pcou,psco)

char*pcou;

float*psco;

{inti;

floatsum,average1;

sum=0;

for(i=0;i<4;i++)

sum+=(*(psco+5*i))

average1=sum/4;

printf("%s%5.2f\n",pcou,average1);

}

fali2(pcou,pnum,psco,pave)

char*pcou;

int*pnum;

float*psco,*pave;

{inti,j,k,label;

printf("\nnumber\n");

for(i=0;i<5;i++)

printf("%-8s",pcou+10*i);

printf("\naverage\n");

for(i=0;i<4;i++)

{label=0;

for(j=0;j<5;j++)

if(*(psco+5*i+j)<60.0)label++;

if(label>=2)

{printf("%-8d",*(pnum+i));

for(k=0;k<5;k++)

printf("%-8.2f",*(psco+5*i+k));

printf("%-8.2f",*(pave+i));

}

}

}

good(pcou,pnum,psco,pave)

char*pcou;

int*pnum;

float*psco,*pave;

{inti,j,k,label;

printf("number");

for(i=0;i<5;i++)

printf("%-8s",pcou+10*i);

printf("average");

for(i=0;i<4;i++)

{label=0;

for(j=0;j<5;j++)

if(*(psco+5*i+j)>=85.0)label++;

if((label>=5)||(*(pave+i)>=90))

{printf("%-8d",*(pnum+i));

for(k=0;k<5;k++)

printf("%-8.2f",*(psco+5*i+k));

printf("%-8.2f",*(pave+i));

}

}

}

10.16

#include"stdio.h"

main()

{charstr[50],*pstr;

inti,j,k,m,e10,digit,ndigit,a[10],*pa;

gets(str);

pstr=str;

pa=a;

ndigit=0;

i=j=0;

while(*(pstr+i)!

='\0')

{if((*(pstr+i)>='0')&&(*(pstr+i)<='9'))

j++;

else

{if(j>0)

{digit=*(pstr+i-1)-48;

k=1;

while(k

{e10=1;

for(m=1;m<=k;m++)

e10=e10*10;

digit+=(*(pstr+i-1-k)-48)*e10;

k++;

}

*pa=digit;

ndigit++;

pa++;

j=0;

}

}

i++;

}

if(j>0)

{digit=*(pstr+i-1)-48;

k=1;

while(k

{e10=1;

for(m=1;m<=k;m++)

e10=e10*10;

digit+=(*(pstr+i-1-k)-48)*e10;

k++;

}

*pa=digit;

ndigit++;

j=0;

}

printf("ndigit=%d\n",ndigit);

j=0;

pa=a;

for(j=0;j

printf("%d",*(pa+j));

}

10.17

main()

{intm;

charstr1[20],str2[20],*p1,*p2;

scanf("%s",str1);

scanf("%s",str2);

p1=str1;

p2=str2;

m=strcmp(p1,p2);

printf("%d\n",m);

}

strcmp(p1,p2)

char*p1,*p2;

{inti=0;

while(*(p1+i)==*(p2+i))

if(*(p+i++)=='\0')return(0);

return(*(p1+i)-*(p2+i));

}

10.18

main()

{staticchar*mname[13]={"illeagl","January","February","March",

"April","May","June","July","August","September","October",

"November","December"};

intn;

scanf("%d",&n);

if((n>=1)&&(n<=12))

printf("%s\n",*(mname+n));

else

printf("error");

}

10.20

main()

{inti;

char**p,*pstr[5],str[5][10];

for(i=0;i<5;i++)

pstr[i]=str[i];

for(i=0;i<5;i++)

scanf("%s",pstr[i]);

p=pstr;

sort(p);

for(i=0;i<5;i++)

printf("%s\n",pstr[i]);

}

sort(p)

char**P;

{inti,j;

char*pchange;

for(i=0;i<5;i++)

{for(j=i+1;j<5;j++)

{if(strcmp(*(p+i),*(p+j))>0)

{pchange=*(p+i);

*(p+i)=*(p+j);

*(p+j)=pchange;

}

}

}

}

10.21

main()

{inti,n,digit[20],**p,*pstr[20];

scanf("%d",&n);

for(i=0;i

pstr[i]=&digit[i];

for(i=0;i

scanf("%d",pstr[i]);

p=pstr;

sort(p,n);

for(i=0;i

printf("%d",*pstr[i]);

}

sort(p,n)

int**p,n;

{inti,j,*pchange;

for(i=0;i

{for(j=i+1;j

{if(**(p+i)>**(p+j))

{pchange=*(p+i);

*(p+i)=*(p+j);

*(p+j)=pchange;

}

}

}

}

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

当前位置:首页 > 人文社科 > 文学研究

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

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