好文档 - 专业文书写作范文服务资料分享网站

《C语言程序设计》课后习题答案(第四版)谭浩强23019

天下 分享 时间: 加入收藏 我要投稿 点赞

8-10-2

#include int main()

{void change(int *p); int a[5][5],*p,i,j;

printf(\ for (i=0;i<5;i++) for (j=0;j<5;j++)

scanf(\ p=&a[0][0]; change(p);

printf(\ for (i=0;i<5;i++) {for (j=0;j<5;j++)

printf(\ printf(\ }

return 0; }

void change(int *p) //交换函数 {int i,j,temp;

int *pmax,*pmin; pmax=p; pmin=p;

for (i=0;i<5;i++) //找最大值和最小值的地址,并赋给 pmax,pmin for (j=i;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; }

temp=*(p+12); //将最大值与中心元素互换 *(p+12)=*pmax; *pmax=temp;

temp=*p; //将最小值与左上角元素互换 *p=*pmin; *pmin=temp;

pmin=p+1;

//将a[0][1]的地址赋给pmin,从该位置开始找最小的元素 for (i=0;i<5;i++) //找第二最小值的地址赋给 pmin for (j=0;j<5;j++) {if(i==0 && j==0) continue;

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

temp=*pmin; //将第二最小值与右上角元素互换 *pmin=*(p+4); *(p+4)=temp;

pmin=p+1;

for (i=0;i<5;i++) //找第三最小值的地址赋给pmin for (j=0;j<5;j++) {if((i==0 && j==0) ||(i==0 && j==4)) continue; if(*pmin>*(p+5*i+j)) pmin=p+5*i+j; }

temp=*pmin; // 将第三最小值与左下角元素互换 *pmin=*(p+20); *(p+20)=temp;

pmin=p+1;

for (i=0;i<5;i++) // 找第四最小值的地址赋给pmin for (j=0;j<5;j++) {if ((i==0 && j==0) ||(i==0 && j==4)||(i==4 && j==0)) continue; if (*pmin>*(p+5*i+j)) pmin=p+5*i+j; }

temp=*pmin; //将第四最小值与右下角元素互换 *pmin=*(p+24); *(p+24)=temp; }

8-11-1

#include #include int main()

{void sort(char s[][6]); int i;

char str[10][6];

printf(\ for (i=0;i<10;i++) scanf(\ sort(str);

printf(\ for (i=0;i<10;i++) printf(\ return 0; }

void sort(char s[10][6]) {int i,j;

char *p,temp[10]; p=temp;

for (i=0;i<9;i++) for (j=0;j<9-i;j++)

if (strcmp(s[j],s[j+1])>0) {strcpy(p,s[j]);

strcpy(s[j],s[+j+1]); strcpy(s[j+1],p); } }

8-11-2

#include #include int main()

{void sort(char (*p)[6]); int i;

char str[10][6]; char (*p)[6];

printf(\ for (i=0;i<10;i++) scanf(\ p=str; sort(p);

printf(\ for (i=0;i<10;i++) printf(\ return 0; }

void sort(char (*s)[6]) {int i,j;

char temp[6],*t=temp; for (i=0;i<9;i++) for (j=0;j<9-i;j++)

if (strcmp(s[j],s[j+1])>0) {strcpy(t,s[j]);

strcpy(s[j],s[+j+1]); strcpy(s[j+1],t); }

} 8-12

#include #include int main()

{void sort(char *[]); int i;

char *p[10],str[10][20]; for (i=0;i<10;i++) p[i]=str[i];

printf(\ for (i=0;i<10;i++) scanf(\ sort(p);

printf(\ for (i=0;i<10;i++) printf(\ return 0; }

void sort(char *s[]) {int i,j;

char *temp; for (i=0;i<9;i++) for (j=0;j<9-i;j++)

if (strcmp(*(s+j),*(s+j+1))>0) {temp=*(s+j); *(s+j)=*(s+j+1); *(s+j+1)=temp; } } 8-13

#include #include int main()

{float integral(float(*)(float),float,float,int);//对integarl函数的声明 float fsin(float); //对fsin函数的声明 float fcos(float); //对fcos函数的声明 float fexp(float); //对fexp函数的声明 float a1,b1,a2,b2,a3,b3,c,(*p)(float); int n=20;

printf(\scanf(\printf(\scanf(\printf(\scanf(\p=fsin;

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

printf(\p=fcos;

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

printf(\p=fexp;

c=integral(p,a3,b3,n);

printf(\return 0; }

float integral(float(*p)(float),float a,float b,int n) {int i;

float x,h,s; h=(b-a)/n; x=a; s=0;

for(i=1;i<=n;i++) {x=x+h;

s=s+(*p)(x)*h; }

return(s); }

float fsin(float x) {return sin(x);} float fcos(float x) {return cos(x);} float fexp(float x) {return exp(x);} 8-14

#include int main()

{void sort (char *p,int m);

《C语言程序设计》课后习题答案(第四版)谭浩强23019

8-10-2#includeintmain(){voidchange(int*p);inta[5][5],*p,i,j;printf(\for(i=0;i<5;i++)for(j=0;j<5;j++)scanf(\p=&a[0][0];
推荐度:
点击下载文档文档为doc格式
87azb13lxw6x2111f20r4n7xz5ee5l00bm8
领取福利

微信扫码领取福利

微信扫码分享