第八章 习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8.2 阅读程序,指出程序的输出结果。
(1) #include
void main()
{ char *p ="Student ";
void prn_str(char *, int, int);
prn_str(p, 6, 4);
}
void prn_str(char *str, int m, int n)
{ int i;
for (i =1; i <=m -n; i ++)
printf(" ");
for (i =1; i <=n; i ++)
printf("%c ", *str ++);
printf("\n ");
}
(2) #include
void main()
{ int a[3][4]={1, 2, 3, 4, 3, 4, 5, 6, 5, 6, 7, 8};
int i, j, *p =*a;
for (i =0; i <3; i ++) { for (j =0; j <4; j ++) printf("%3d ", *p ++); printf("\n ");
}
}
(2) #include
void main() { char a[]="Chang "; char *p =a; while (*p) printf("%s\n ", p ++);
}
8.3 程序填空。
(1) 以下函数用于求出一个3⨯4矩阵中的最大元素值。
#include
int maxvalue(int (*p)[4])
{ int i, j, max;
max =①;
for (i =0; ②; i ++)
{ for (j =0; ③; j ++)
if (④>max) max =⑤;
p ++;
}
return max;
}
void main()
{ int arr[3][4]={4, 2, 7, 2, 9, 1, -4, 24, 5, 0, 12, 16};
int max;
max=maxvalue(⑥);
printf("Max=%d\n", max);
}
(2) 下面函数用于计算子串substr在母串str中第一次出现的位置,如果母串中不包含
子串,则返回0值。如:at("ver", "university")返回的值为4,at("ty", "string")返回的值为0。
int at(char *substr, char *str)
{ int i, j, post;
for (post=0; str[post]!=①; post++)
{ i=0; j=②;
{ i++;
j++;
}
if (substr[i]=='\0')
return ③;
}
return ④;
}
8.4 编写程序(下面程序均要求用指针方法处理)。
(1) 对一个3⨯4矩阵,分别求出它的所有元素中的最大值和最小值所在的行号及列号(假
设最大值和最小值都是唯一的)。
#include
void main()
{
int a[3][4]={2,3,4,12,-5,34,78,-23,65,112,-7,-208};
int i,j,max,min,minm,minn,maxm,maxn,(*p)[4]=a;//p保存行号,q保存列号
minm=minn=maxm=maxn=0;
max=min=*(*p);
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
if(*(*(p+i)+j)>max)
{
max=*(*(p+i)+j);
maxm=i;
maxn=j;
}
else if(*(*(p+i)+j) { min=*(*(p+i)+j); minm=i; minn=j; } } printf("the max number at %d hang %d lie\n",maxm,maxn); printf("the min number at %d hang %d lie\n",minm,minn); } (2) 对一个3 4矩阵分别进行横向和纵向汇总。 #include void main() { int a[3][4]={2,3,4,12,-5,34,78,-23,65,112,-7,-208}; int i,j,hangsum,liesum,(*p)[4]=a; hangsum=0; liesum=0; for(i=0;i<3;i++) { for(j=0;j<4;j++) { hangsum=hangsum+*(*p+j); printf("%3d ",hangsum); } p++; } printf("hang sum:%3d ",hangsum); printf("\n"); p=a; for(j=0;j<4;j++) { for(i=0;i<3;i++) { liesum=liesum+*(*(p+i)+j); printf("%3d ",liesum); } } printf("lie sum:%3d ",liesum); } (3) 编写一个函数str_cat,实现函数strcat的功能。 #include char *str_cat(char *str1,char *str2) { char *temp = str1; while(*str1!='\0')