c程序设计第四版谭浩强第八章答案.docx

上传人:b****7 文档编号:9668039 上传时间:2023-02-05 格式:DOCX 页数:28 大小:19.58KB
下载 相关 举报
c程序设计第四版谭浩强第八章答案.docx_第1页
第1页 / 共28页
c程序设计第四版谭浩强第八章答案.docx_第2页
第2页 / 共28页
c程序设计第四版谭浩强第八章答案.docx_第3页
第3页 / 共28页
c程序设计第四版谭浩强第八章答案.docx_第4页
第4页 / 共28页
c程序设计第四版谭浩强第八章答案.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

c程序设计第四版谭浩强第八章答案.docx

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

c程序设计第四版谭浩强第八章答案.docx

c程序设计第四版谭浩强第八章答案

#include

#include

#include

#include

/*

intmain()

{

int*p1,*p2,*p3,*t,a,b,c;

printf("enterthreenumber:

");

scanf("%d%d%d",&a,&b,&c);

p1=&a;p2=&b;p3=&c;

if(a>b)

{t=p1;p1=p2;p2=t;}

if(a>c)

{t=p1;p1=p3;p3=t;}

if(b>c)

{t=p2;p2=p3;p3=t;}

printf("sortnumber:

%d%d%d\n",*p1,*p2,*p3);

}

*/

/*

#defineN20

intmain()

{

char*p1,*p2,*p3,*t,a[N],b[N],c[N];

printf("enterthreestrings:

");

scanf("%s%s%s",a,b,c);

p1=a;p2=b;p3=c;

if(strcmp(a,b)>0)

{t=p1;p1=p2;p2=t;}

if(strcmp(a,c)>0)

{t=p1;p1=p3;p3=t;}

if(strcmp(b,c)>0)

{t=p2;p2=p3;p3=t;}

printf("sortstring:

%s%s%s\n",p1,p2,p3);

}

*/

/*

voidinput(int*p)

{

inti;

printf("enter10number:

");

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

scanf("%d",p+i);

}

voidoutput(int*p)

{

inti;

printf("new10number:

");

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

printf("%-2d",*(p+i));

}

voidsort(int*p,intn)

{

inti,t;

for(i=0;i

{

if(*(p+i)>*(p+i+1))

{t=*(p+i);*(p+i)=*(p+i+1);*(p+i+1)=t;}

}

for(i=n-2;i>0;i--)

{

if(*(p+i-1)>*(p+i))

{t=*(p+i);*(p+i)=*(p+i-1);*(p+i-1)=t;}

}

}

intmain()

{

inta[10],*p=a;

input(p);

sort(p,10);

output(p);

putchar('\n');

}

*/

/*

#defineN10

voidhouyi(int*p,intm)

{

inti,b[N]={0};

for(i=0;i

b[i+m]=*(p+i);

for(;i

b[i-N+m]=*(p+i);

for(i=0;i

printf("%3d",b[i]);

}

intmain()

{

inta[N],i,m,*p=a;

printf("enternumber:

");

for(i=0;i

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

printf("enterm:

");

scanf("%d",&m);

printf("newnumber:

");

houyi(p,m);

putchar('\n');

}

*/

/*

intmain()

{

intcount(int*p,intn);

intn,*p,i;

printf("enternumber:

");

scanf("%d",&n);

p=(int*)calloc(n,sizeof(int));

for(i=0;i

*(p+i)=0;

printf("thelastnumberis%d\n",count(p,n)+1);

free(p);

}

intcount(int*p,intn)

{

inti,j=1,k=0;

for(i=0;i

{

if(*(p+i)!

=3)

{

*(p+i)=j;

if(*(p+i)==3)

j=1;//数到3时将下一个重置为1

else

j+=1;

if(i==(n-1))

i=-1;//轮到到最后一个人报数时,将i重置为-1,执行完for语句后自动加一变为0,从头开始

k+=1;//报完一个数后加一

}

else

{

if(i==(n-1))

i=-1;//检查到最后一个人是3时,将i重置为-1,执行完for语句后自动加一变为0,从头开始

continue;//检查到这个人是3时,跳过报数

}

if(k==3*(n-1))//报数的总个数达到3*(n-1)时,就只剩一个人了

break;

else

continue;

}

for(i=0;i

if(*(p+i)==3)

continue;

elsereturni;

}

*/

/*

#defineN20

intlength(char*p)

{

intn=0;

while(*p!

=0)

{

p++;

n+=1;

}

returnn;

}

intmain()

{

chara[N],*p=a;

printf("enterstring:

");

gets(a);

printf("字符串长度为:

%d\n",length(p));

}

*/

/*

#defineN10

intmain()

{

voidcopyn(char*p,intm);

char*p="abcdefghij";

intm;

printf("%s\nenterm:

",p);

scanf("%d",&m);

copyn(p,m);

}

voidcopyn(char*p,intm)

{

charb[N],i;

for(i=m-1;*(p+i);i++)

b[i-m+1]=*(p+i);

b[i-m+1]='\0';

printf("%s\n",b);

}

*/

/*

#defineN50

voidcount(char*p)

{

intd=0,x=0,k=0,s=0,o=0;

while(*p)//不能写*(p++),否则计算出错,无法计算第一个字符

{

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

x+=1;

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

d+=1;

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

s+=1;

elseif(*p=='')

k+=1;

elseo+=1;

p++;

}

printf("大写字母:

%d\n小写字母:

%d\n空格:

%d\n数字:

%d\n其他:

%d\n",d,x,k,s,o);

}

intmain()

{

chara[N],*p=a;

printf("enterstring:

");

gets(a);

count(p);

}

*/

/*

voidzhuangzhi(int(*p)[3])

{

inti,j,t;

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

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

if(i

{

t=*(*(p+i)+j);//*(*(p+i)+j)代表a[i][j]

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

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

}

}

intmain()

{

int(*p)[3],a[3][3],i,j;

p=a;

printf("enterarray:

\n");

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

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

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

zhuangzhi(p);

printf("newarray:

\n");

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

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

{

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

if(j==2)

putchar('\n');

}

}*/

/*

voidcentral(int(*p)[5])

{

inti,j,l=0,r=0,t;//r代表行,l代表列

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

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

if(*(*(p+i)+j)>*(*(p+r)+l))

{

r=i;l=j;

}

t=*(*(p+2)+2);*(*(p+2)+2)=*(*(p+r)+l);*(*(p+r)+l)=t;//最大元素放在中心

l=0;r=0;

for(i=0;i<5;i++)//四个角放最小元素,每次从第二个元素开始对比

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

if(*(*(p+i)+j)<*(*(p+r)+l))

{

r=i;l=j;//找出最小元素

}

t=*(*p);*(*p)=*(*(p+r)+l);*(*(p+r)+l)=t;//将最小元素与左上角元素交换,下同

l=4;r=0;//换完重置r和l,下同

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

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

if(*(*(p+r)+l)>*(*(p+i)+j))

{

r=i;l=j;

}

t=*(*p+4);*(*p+4)=*(*(p+r)+l);*(*(p+r)+l)=t;

r=4;l=0;

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

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

if(i==0&&j==4)//遇到右上角,跳过对比

continue;

elseif(*(*(p+r)+l)>*(*(p+i)+j))

{

r=i;l=j;

}

t=*(*(p+4));*(*(p+4))=*(*(p+r)+l);*(*(p+r)+l)=t;

r=4;l=4;

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

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

if(i==0&&j==4||i==4&&j==0)//遇到右上角和左下角,跳过对比

continue;

elseif(*(*(p+r)+l)>*(*(p+i)+j))

{

r=i;l=j;

}

t=*(*(p+4)+4);*(*(p+4)+4)=*(*(p+r)+l);*(*(p+r)+l)=t;

}

intmain()

{

inta[5][5],(*p)[5]=a,i,j;

printf("enterarray:

\n");

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

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

scanf("%d",*(p+i)+j);

central(p);

printf("newarray:

\n");

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

{

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

printf("%-3d",*(*(p+i)+j));

putchar('\n');

}

}

*/

/*

voidsort(char*p[],intn)//指针数组处理

{

inti,j;

char*k;

for(i=1;i

for(j=i;j

if(strcmp(p[i-1],p[j])>0)

{

k=p[i-1];p[i-1]=p[j];p[j]=k;

}

}

intmain()

{

char*p[10]={"gutsy","glory","gonad","girth","gaudy","gypsy","gusto","guppy","group","grope"};//测试数据gutsyglorygonadgirthgaudygypsygustoguppygroupgrope

inti;

printf("enterstrings:

");

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

printf("%s",p[i]);

sort(p,10);

printf("\nnewstrings:

");

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

printf("%s",p[i]);

putchar('\n');

}

*/

/*

#defineN20

voidsort(char*p,intn)//指针处理

{

inti,j;

chark[N];

for(i=1;i

for(j=i;j

if(strcmp(p+20*(i-1),p+20*j)>0)//不能写为p+i-1,否则出错

{

strcpy(k,p+20*(i-1));strcpy(p+20*(i-1),p+20*j);strcpy(p+20*j,k);

}

}

intmain()

{

chara[10][N];

char*p=a[0];//不能写为*p=a,这等价于是把行向量赋值给列向量

inti;

printf("enterstrings:

\n");

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

scanf("%s",&a[i]);//可写为gets(a[i]),这样写的话,每次输入字符串后按enter,或写为scanf("%s",&a[i]),每输一个字符后按空格即可;

sort(p,10);

printf("newstrings:

\n");

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

printf("%s",a[i]);

putchar('\n');

}

*/

/*

#definen1000//矩形法求定积分,n为区间分割数目

doubleding(doublea,doubleb,double(*fun)(double))

{

doubles=0;

inti;

for(i=1;i

s+=(*fun)(i*(b-a)/n);

returns*=(b-a)/n;

}

intmain()

{

doublea,b,s1,s2,s3;//定义积分下限,上限,用double精度较高

printf("输入积分下限,上限,分割区间数目:

");

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

s1=ding(a,b,sin);

s2=ding(a,b,cos);

s3=ding(a,b,exp);

printf("sin(x)从%f到%f的积分为%f\n",a,b,s1);

printf("cos(x)从%f到%f的积分为%f\n",a,b,s2);

printf("exp(x)从%f到%f的积分为%f\n",a,b,s3);

}

*/

/*

#defineN10

voidnixu(int*p)

{

inti,m=N/2,t;

for(i=0;i

{

t=*(p+i);

*(p+i)=*(p+N-1-i);

*(p+N-1-i)=t;

}

}

intmain()

{

inta[N],*p=a,i;

printf("enter%dnumbers:

\n",N);

for(i=0;i

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

nixu(p);

printf("newnumbers:

\n");

for(i=0;i

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

putchar('\n');

}

*/

/*

voidaverage1(float(*p)[6],intn)

{

inti;

floatave=0;

for(i=0;i

ave+=*(*(p+i)+1)/4;

printf("第一门课程的平均分为:

%4.2f\n",ave);

}

floataverage(float(*p)[6])

{

inti;

floatave=0;

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

ave+=*(*p+i)/5;

returnave;

}

voidout(float(*p)[6],intn)

{

inti,j,k,l,s=0;

printf("两门课以上不及格的学生:

\n");

for(i=0;i

{

k=0;

for(j=1;j<6;j++)

{

if(*(*(p+i)+j)<60)

k+=1;

elsecontinue;

}

if(k>=2)

{

s=1;

printf("%4.0f",*(*(p+i)));

for(l=1;l<6;l++)

printf("%4.0f",*(*(p+i)+l));

printf("平均分为:

%4.2f\n",average(p+i));

}

}

if(s==0)//没有符合条件的学生时输出“无”

printf("无!

\n");

}

voidin(float(*p)[6],intn)

{

inti,j,l;

for(i=0;i

{

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

{

if(average(p+i)>=90)

{

printf("平均分在90分以上的学生:

%4.0f",*(*(p+i)));

for(l=1;l<6;l++)

printf("%4.0f",*(*(p+i)+l));

putchar('\n');

break;

}

if(*(*(p+i)+j)>=85)

continue;

else

break;

}

if(j==6)

{

printf("全部课程成绩在85分以上的学生:

%4.0f",*(*(p+i)));

for(l=1;l<6;l++)

printf("%4.0f",*(*(p+i)+l));

putchar('\n');

}

}

}

intmain()

{

inti,j;

floata[4][6]={{1001,65,67,55,60,45},{1002,80,87,90,81,85},{1003,90,99,100,98,95},{1004,86,89,90,91,85}};

float(*p)[6]=a;

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

{

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

printf("%4.0f",a[i][j]);

putchar('\n');

}

average1(p,4);

out(p,4);

in(p,4);

}

*/

/*

#defineN10//方法一

intnum1(char*p)//将数字字符串转为整形数字的函数

{

intn=strlen(p),i,a=0;

for(i=0;i

a+=(int)((*(p+i)-48)*pow(10,n-1-i));

returna;

}

voidnumber(char*p)

{

inti,num=0,j=1,k=-1,n=strlen(p);//j用于计算数字长度,k用于计算数字个数

inta[N];//最多容纳N个整数

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

{

if(*p<'0'||*p>'9')

{

if(num==1)

{

*p='\0';

a[k]=num1(p-j);

}

num=0;

}

elseif(num==0)

{

num=1;

j=1;//找到新数字时重置j

k+=1;

}

else

j+=1;

p++;

}

for(i=0;i

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

putchar('\n');

}

*/

/*

#defineN10

voidnumber(char*p)//方法二

{

inti,num=0,j=1,k=-1,n=strlen(p);//j用于计算数字长度,k用于计算数字个数

chara[N][10];//最多容纳N个整数,每个整数最多十位数

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

{

if(*p<'0'||*p>'9')

{

if(num==1)

{

*p='\0';

strcpy(a[k],p-j);

}

num=0;

}

elseif(num==0)

{

num=1;

j=1;//找到新数字时重置j

k+=1;

}

else

j+=1;

p++;

}

for(i=0;i

printf("%s",a[i]);

putchar('\n');

}

intmain()

{

chara[100],*p=a;//最多可输入100个字符

printf("enterstrings:

\n");

gets(p);

number(p);

}

*/

/*

#defineN20//字符串比较函数

intstr_cmp(char*p1,char*p2)

{

inti,n=strlen(p1);

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

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

continue;

elseif(*(p1+i)>*(p2+i))

{

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

break;

}

else

{

return*(p1+i

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

当前位置:首页 > 医药卫生 > 预防医学

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

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