第八章 习题答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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')

相关文档
最新文档