C语言程序设计 何钦铭 颜晖 著 高等教育出版社第八章 课后答案Word格式文档下载.docx
- 文档编号:7381515
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:18
- 大小:19KB
C语言程序设计 何钦铭 颜晖 著 高等教育出版社第八章 课后答案Word格式文档下载.docx
《C语言程序设计 何钦铭 颜晖 著 高等教育出版社第八章 课后答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言程序设计 何钦铭 颜晖 著 高等教育出版社第八章 课后答案Word格式文档下载.docx(18页珍藏版)》请在冰点文库上搜索。
%d"
&
n);
/*输入n个整数到数组a*/
Entera[%d]:
n);
for(i=0;
i<
n;
i++)
a[i]);
/*调用choose函数,对数组a进行排序*/
choose(a,n);
/*输出排序后的结果*/
Aftersorted,a[%d]="
n);
i++)
%3d"
a[i]);
\n"
/*定义函数choose,实现选择法排序*/
voidchoose(inta[],intn)/*n是数组a中待排序元素的数量*/
inti,j,index;
for(i=0;
i<
n-1;
i++)
{
index=i;
for(j=i+1;
j<
n;
j++)
if(a[j]<
a[index])index=j;
/*比较大小,记录最小元的下标*/
swap(&
a[i],&
a[index]);
/*交换最小元与a[i]的值*/
}
/*定义函数swap,实现两个数交换*/
voidswap(int*px,int*py)
intt;
t=*px;
*px=*py;
*py=t;
练习8-8
/*输入一个字符串,把其前3个字符移到最后,输出变换后的字符串。
比如输入"
abcdef"
,输出"
defabc"
string.h>
charstr[80],*p,temp;
inti,j;
p=str;
/*输入一个字符串*/
Enterastring:
gets(p);
j=strlen(p)-3;
for(i=0;
i<
3;
i++,j++)
temp=str[i];
str[i]=str[j];
str[j]=temp;
/*输入变换后的结果*/
Afterchanged:
puts(p);
习题8-1
voidchoose(inta[],intn,charch);
inti,a[10];
charch;
/*选择排序方式*/
Pleaseenter'
A'
or'
D'
:
"
%c"
ch);
/*输入10个整数到数组a*/
Entera[0]-a[9]:
10;
/*调用choose函数,对数组a按ch方式进行排序*/
choose(a,10,ch);
Aftersorted,a[0]-a[9]="
voidchoose(inta[],intn,charch)/*n是数组a中待排序元素的数量*/
j++)
if(ch=='
||ch=='
a'
)
{if(a[j]<
}/*比较大小,记录最小元的下标*/
else
{if(a[j]>
}/*比较大小,记录最大元的下标*/
/*交换最大(小)元与a[i]的值*/
习题8-2
intfind(intlist[],intn,intx);
inti,result,x,a[10];
/*输入待查数据x*/
Enteraintegertox:
x);
/*调用find函数,在数组a中查找x所在位置*/
result=find(a,10,x);
/*输出查找结果*/
if(result==-1)printf("
Notfound.\n"
elseprintf("
Thepositionis%d\n"
result);
/*定义函数find,在数组list中查找x所在位置*/
intfind(intlist[],intn,intx)
inti,result=-1;
i++)if(list[i]==x){result=i;
break;
returnresult;
习题8-3
voidmove(inta[],intn,intm);
inti,m,n,a[10];
/*输入两个整数m和n,n--数据个数,m--移动位置*/
Entertwointegerstomandn:
%d%d"
m,&
/*输入n个整数到数组a(a[0]~a[n-1])*/
Entera[0]-a[n-1]:
/*调用move函数,使数组a中各数顺序后移m个位置,移出的数再从开头移入*/
move(a,n,m);
/*输出移动后的结果*/
Resulta[0]-a[n-1]:
%4d"
/*定义函数move,使数组a中各数顺序后移m个位置,移出的数再从开头移入*/
voidmove(inta[],intn,intm)
inti,j,t;
for(i=1;
=m;
i++)/*循环移位m次*/
t=a[n-1];
/*保存最后位置的元素值*/
for(j=n-1;
j>
0;
j--)/*从倒数第二个元素开始,每个元素向后一个位置*/
a[j]=a[j-1];
a[0]=t;
/*将保存的最后位置的元素放在最前面*/
习题8-4
inti,j,n,count,a[11];
/*变量count记录退出人数,变量j记录报数值(在0~3之间变化)*/
/*输入一个整数n(1<
=n<
=10)*/
Enteroneintegerton(1<
=10):
/*为数组元素编号,依次为1~n号*/
=n;
a[i]=i;
/*循环报数,报3者退出,直到全部报数完毕*/
count=0;
i=1;
j=0;
while(count<
n)
if(i>
n)i=1;
/*若i超出n,再从下标为1的元素报数*/
if(a[i]!
=0)j++;
/*报数,若a[i]不为0,则j增1*/
if(j==3)/*若报数值为3,则第i号退出,并分别将j、a[i]清0,count增1*/
{
printf("
i);
a[i]=0;
j=0;
count++;
}
i++;
/*i增1*/
习题8-5
voidmcopy(char*s,char*t,intm);
chars[80],t[80];
intm;
Enterastring:
gets(s);
/*输入要复制的开始位置*/
Enterstartposition:
m);
mcopy(s,t,m);
/*调用mcopy函数*/
puts(t);
/*输出结果*/
/*定义函数mcopy,将字符串s中从第m个字符开始的全部字符复制到字符串t中*/
voidmcopy(char*s,char*t,intm)
s=s+m-1;
for(;
*s!
='
\0'
;
s++,t++)*t=*s;
*t='
习题8-6
voiddelchar(char*s,charc);
chars[80],c;
/*输入要删除的字符*/
Enterdeletechar:
c);
delchar(s,c);
/*调用delchar函数*/
puts(s);
/*定义函数delchar,删除字符串s中的所有字符c*/
voiddelchar(char*s,charc)
charstr[80];
/*将字符串s中的非c字符复制到字符串str中*/
for(i=0,j=0;
s[i]!
if(s[i]!
=c){str[j]=s[i];
j++;
str[j]='
/*将字符串str复制到字符串s中*/
str[i]!
i++)s[i]=str[i];
s[i]='
习题8-7
/*输入5个字符串,按由小到大的顺序输出。
chars[5][80],t[80];
inti,j,index;
/*输入5个字符串到数组s*/
Enter5string:
\n"
5;
gets(s[i]);
/*调用选择法对字符串数组s进行排序*/
4;
i++)
for(j=i+1;
j<
j++)
if(strcmp(s[j],s[index])<
0)index=j;
/*交换最小元与s[i]的值*/
strcpy(t,s[i]);
strcpy(s[i],s[index]);
strcpy(s[index],t);
Aftersorted:
puts(s[i]);
习题8-8
/*编程判断输入的一串字符是否为“回文”。
所谓“回文”是指顺读和倒读者一样的字符串。
*/
/*例如:
“XYZYX”和“xyzzyx”*/
inti,j,m,flag;
charstr[80],*p;
/*输入一个字符串*/
gets(str);
/*判断输入的一串字符是否为“回文”*/
m=strlen(str);
flag=0;
m/2;
if(p[i]!
=p[m-1-i]){flag=1;
/*输出结果*/
if(flag==1)printf("
No\n"
Yes\n"
习题8-9
/*输入一行文字,统计其中的大写字母、小写字母、空格、数字以及其他字符各有多少。
inti,letter1=0,letter2=0,space=0,digit=0,other=0;
/*统计其中的大写字母、小写字母、空格、数字以及其他字符各有多少*/
p[i]!
if(p[i]>
&
&
p[i]<
Z'
)letter1++;
elseif(p[i]>
z'
)letter2++;
0'
9'
)digit++;
elseif(p[i]=='
'
)space++;
elseother++;
UpperLetter=%d\n"
letter1);
LowerLetter=%d\n"
letter2);
Digit=%d\n"
digit);
Space=%d\n"
space);
Other=%d\n"
other);
习题8-10
intstrcomp(char*s1,char*s2);
inti,res;
charstr1[80],str2[80];
/*输入两个字符串*/
Enterstring1:
gets(str1);
Enterstring2:
gets(str2);
/*调用函数strcomp,比较两个字符串str1和str2的大小*/
res=strcomp(str1,str2);
if(res==1)printf("
s1>
s2\n"
elseif(res==0)printf("
s1=s2\n"
s1<
/*定义函数strcomp,比较字符串s1和s2的大小*/
intstrcomp(char*s1,char*s2)
intres=0,i;
/*逐个字符比较两个字符串*/
s1[i]!
s2[i]!
if(s1[i]>
s2[i]){res=1;
if(s1[i]<
s2[i]){res=-1;
if(res==0&
strlen(s1)>
strlen(s2))res=1;
strlen(s1)<
strlen(s2))res=-1;
returnres;
习题8-11
voiddtof(char*s);
charstr[80],*p;
/*输入一个名词英文单词*/
Enteraword:
/*调用函数dtof,将名词单数变复数*/
dtof(p);
/*定义函数dtof,将名词单数变复数*/
voiddtof(char*s)
inti,m;
m=strlen(s);
/*求单词s的长度*/
/*分几种情况,比较单词的最后字母,决定复数的变化形式*/
if(s[m-1]=='
Y'
||s[m-1]=='
y'
){s[m]='
e'
s[m+1]='
s'
s[m+2]='
elseif(s[m-1]=='
O'
o'
S'
X'
x'
elseif((s[m-2]=='
||s[m-2]=='
)&
(s[m-1]=='
H'
h'
)){s[m]='
C'
c'
else{s[m]='
习题8-12
/*要求使用动态内存分配方法为这n个整数分配空间*/
/*求任意个数的平均值、最大值和最小值*/
#include<
stdlib.h>
intmain()
intn,i;
floatavg,max,min,*p;
Entern:
/*为数组p动态分配n个小数类型大小的空间*/
if((p=(float*)calloc(n,sizeof(float)))==NULL)
Notabletoallocatememory.\n"
exit
(1);
Enter%dscores:
/*提示输入n个成绩*/
%f"
p+i);
avg=max=min=*p;
i++)/*求n个数的和、最大值和最小值*/
avg=avg+*(p+i);
if(*(p+i)>
max)max=*(p+i);
if(*(p+i)<
min)min=*(p+i);
Max=%f\n"
max);
Min=%f\n"
min);
Avg=%f\n"
avg/n);
free(p);
/*释放动态分配的空间*/
return0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 何钦铭 颜晖 高等教育出版社第八章 课后答案 语言程序设计 高等教育出版社 第八 课后 答案