c程序设计第四版谭浩强第八章答案Word文档下载推荐.docx

上传人:b****6 文档编号:17277777 上传时间:2022-11-30 格式:DOCX 页数:26 大小:23.12KB
下载 相关 举报
c程序设计第四版谭浩强第八章答案Word文档下载推荐.docx_第1页
第1页 / 共26页
c程序设计第四版谭浩强第八章答案Word文档下载推荐.docx_第2页
第2页 / 共26页
c程序设计第四版谭浩强第八章答案Word文档下载推荐.docx_第3页
第3页 / 共26页
c程序设计第四版谭浩强第八章答案Word文档下载推荐.docx_第4页
第4页 / 共26页
c程序设计第四版谭浩强第八章答案Word文档下载推荐.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

c程序设计第四版谭浩强第八章答案Word文档下载推荐.docx

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

c程序设计第四版谭浩强第八章答案Word文档下载推荐.docx

if(strcmp(a,b)〉0)

if(strcmp(a,c)>

0)

{t=p1;

p1=p3;

if(strcmp(b,c)〉0)

printf(”sortstring:

%s%s%s\n"

p1,p2,p3);

voidinput(int*p)

inti;

enter10number:

);

for(i=0;

i〈10;

i++)

scanf("

%d"

p+i);

voidoutput(int*p)

inti;

new10number:

i<

10;

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

voidsort(int*p,intn)

inti,t;

n—1;

{

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;

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;

N—m;

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

for(;

i〈N;

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

N;

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

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

enternumber:

i〈N;

%d”,&a[i]);

enterm:

%d”,&

m);

newnumber:

”);

houyi(p,m);

putchar('

\n'

intcount(int*p,intn);

intn,*p,i;

scanf(”%d”,&

n);

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

i〈n;

*(p+i)=0;

thelastnumberis%d\n"

count(p,n)+1);

free(p);

intcount(int*p,intn)

inti,j=1,k=0;

n;

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;

}

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

elsereturni;

#defineN20

intlength(char*p)

intn=0;

while(*p!

=0)

p++;

n+=1;

returnn;

chara[N],*p=a;

printf(”enterstring:

gets(a);

printf(”字符串长度为:

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

#defineN10

voidcopyn(char*p,intm);

char*p=”abcdefghij”;

intm;

%s\nenterm:

,p);

scanf(”%d"

&

copyn(p,m);

voidcopyn(char*p,intm)

charb[N],i;

for(i=m—1;

*(p+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;

=’0'

&&*p〈='

9'

s+=1;

elseif(*p=='

'

elseo+=1;

p++;

printf(”大写字母:

%d\n小写字母:

%d\n空格:

%d\n数字:

%d\n其他:

%d\n"

d,x,k,s,o);

chara[N],*p=a;

enterstring:

count(p);

voidzhuangzhi(int(*p)[3])

inti,j,t;

3;

for(j=0;

j<

3;

j++)

if(i<

j)

{

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

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

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

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

}

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

p=a;

printf(”enterarray:

\n"

for(j=0;

scanf("

%d”,&a[i][j]);

zhuangzhi(p);

printf(”newarray:

\n”);

i〈3;

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

if(j==2)

putchar(’\n’);

}*/

voidcentral(int(*p)[5])

inti,j,l=0,r=0,t;

//r代表行,l代表列

i〈5;

j〈5;

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;

i++)//四个角放最小元素,每次从第二个元素开始对比

for(j=1;

5;

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

r=i;

//找出最小元素

t=*(*p);

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

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

//将最小元素与左上角元素交换,下同

l=4;

//换完重置r和l,下同

for(j=1;

5;

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

t=*(*p+4);

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

r=4;

l=0;

for(j=1;

if(i==0&&

j==4)//遇到右上角,跳过对比

continue;

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

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

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

l=4;

i〈5;

if(i==0&

&j==4||i==4&&

j==0)//遇到右上角和左下角,跳过对比

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

*(*(p+i)+j))

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

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

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

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

enterarray:

%d"

*(p+i)+j);

central(p);

printf(”newarray:

j〈5;

printf("

%—3d”,*(*(p+i)+j));

putchar(’\n’);

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

inti,j;

char*k;

for(i=1;

n;

for(j=i;

j〈n;

if(strcmp(p[i—1],p[j])〉0)

k=p[i-1];

p[i—1]=p[j];

p[j]=k;

char*p[10]={"

gutsy"

"

glory”,”gonad”,”girth"

,"

gaudy”,”gypsy"

”gusto"

”guppy”,"

group"

grope"

};

//测试数据gutsyglorygonadgirthgaudygypsygustoguppygroupgrope

printf(”enterstrings:

printf(”%s"

p[i]);

\nnewstrings:

i〈10;

p[i]);

putchar(’\n’);

#defineN20

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

inti,j;

chark[N];

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

chara[10][N];

char*p=a[0];

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

enterstrings:

\n”);

10;

%s”,&a[i]);

//可写为gets(a[i]),这样写的话,每次输入字符串后按enter,或写为scanf(”%s"

,&a[i]),每输一个字符后按空格即可;

newstrings:

printf(”%s"

a[i]);

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

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

doubles=0;

for(i=1;

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

returns*=(b-a)/n;

doublea,b,s1,s2,s3;

//定义积分下限,上限,用double精度较高

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

%lf%lf"

,&a,&

b);

s1=ding(a,b,sin);

s2=ding(a,b,cos);

s3=ding(a,b,exp);

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

voidnixu(int*p)

inti,m=N/2,t;

m;

t=*(p+i);

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

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

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

printf(”enter%dnumbers:

N);

scanf(”%d"

&a[i]);

nixu(p);

newnumbers:

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

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

floatave=0;

i〈n;

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

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

%4.2f\n"

,ave);

floataverage(float(*p)[6])

floatave=0;

i〈6;

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

returnave;

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

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

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

k=0;

j〈6;

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

60)

k+=1;

elsecontinue;

if(k〉=2)

s=1;

%4。

0f"

*(*(p+i)));

for(l=1;

l<

6;

l++)

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

平均分为:

%4。

2f\n”,average(p+i));

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

无!

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

inti,j,l;

if(average(p+i)>

=90)

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

*(*(p+i)));

for(l=1;

l〈6;

,*(*(p+i)+l));

putchar(’\n'

break;

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

continue;

else

if(j==6)

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

,*(*(p+i)));

for(l=1;

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

putchar('

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;

4;

printf(”%4。

0f"

,a[i][j]);

average1(p,4);

out(p,4);

in(p,4);

#defineN10//方法一

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

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

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个整数

=n;

if(*p<

’0'

||*p>

'

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;

i〈k+1;

%d"

a[i]);

voidnumber(char*p)//方法二

inti,num=0,j=1,k=—1,n=strlen(p);

chara[N][10];

//最多容纳N个整数,每个整数最多十位数

=n;

’0’||*p>

’9’)

*p='

\0’;

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

j=1;

j+=1;

k+1;

a[i]);

chara[100],*p=a;

//最多可输入100个字符

printf(”enterstrings:

gets(p);

number(p);

#defineN20//字符串比较函数

intstr_cmp(char*p1,char*p2)

inti,n=strlen(p1);

i〈=n;

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

continue;

elseif(*(p1+i)>

*(p2+i))

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

break;

return*(p1+i

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

当前位置:首页 > 高中教育 > 初中教育

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

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