for(inti=n-1;i>1;i--)
if(t>*(s+i)+*(s+i-1)+*(s+i-2)) t=*(s+i)+*(s+i-1)+*(s+i-2); return t; }
/**********
【习题8.132】编写函数,通过指针参数sum将x和y的 和赋给相应实际参数。例如,若x=134、y=378,则sum 的实参变量被赋值512。 **********/
voidfunc(int x, int y, int *sum) {
*sum=x+y; }
/**********
【习题8.136】编写函数,返回指针参数x和y所指向的 变量的值之和。 **********/
intfunc(int *x, int *y) {
return *x+*y; }
/**********
【习题8.138】编写函数,比较指针参数x和y分别 指向的变量,若前者的值较大,则交换两者的值, 并返回1;否则无须交换,返回0。 **********/
intfunc(int *x, int *y) {
if(*x>*y)
{int t=*x;*x=*y;*y=t;return 1;} return 0; }
/**********
【习题8.143】假设指针a指向某数组中的一个元素。 编写函数,在从元素*a开始的n个元素范围内,向后 查找给定值x,一旦找到值等于x的元素,则返回该元
素的序号;若找不到,则返回0。例如,假定a指向的 10个元素依次为5,6,3,0,-4,8,9,-6,8,-7,若x=5, 则返回1;若x=8,则返回6;若y=4,则返回0。 **********/
intfunc(int n, int *a, int x) {
for(inti=0;i /********** 【习题8.146】假设指针a指向某数组中的一个元素。 编写函数,对从元素*a开始的n个元素,统计并返回 值为x的元素个数(若不存在这样的元素,则返回0)。 **********/ intfunc(int n, int *a, int x) { int t=0; for(inti=0;i /********** 【习题8.203】编写函数,返回指针参数s所指向的字 符串的长度。例如,若该串为\, 则函数返回值是15。注意:字符串结束符是'\\0',不 计入长度。不允许调用库函数strlen()。 **********/ intfunc(char *s) { for(inti=0;*(s+i)!='\\0';i++){} returni; } /********** 【习题8.212】编写函数,在指针参数s所指向的字 符串中顺序查找由c指定的字符。一旦找到,则返回 该字符在串中的序号(串的首个字符的序号为1), 否则返回0。例如,若该串为\, c='t',则函数返回值为9。注意:字符串结束符是 '\\0',不允许调用字符串库函数。 **********/ intfunc(char *s, char c) { for(inti=0;*(s+i)!='\\0';i++) if(*(s+i)==c) return i+1; } /********** 【习题8.215】编写函数,在指针参数s所指向的字 符串中统计并返回由c指定的字符的个数。例如,若 该串为\,c='t',则函数返回值 为2。注意:字符串结束符是'\\0',不允许调用字符 串库函数。 **********/ intfunc(char *s, char c) { int t=0; for(inti=0;*(s+i)!='\\0';i++) if(*(s+i)==c) t++; return t; } /********** 【习题8.222】编写函数,复制指针参数s指向的字 符串到由指针参数t已经指向的存储区域。注意: 字符串结束符是'\\0',不允许调用字符串库函数。 **********/ voidfunc(char *s, char *t) { for(inti=0;*(s+i)!='\\0';i++) *(t+i)=*(s+i);*(t+i)='\\0'; } /********** 【习题8.225】编写函数,由指针参数s指向的字 符串头n个字符构造一个字符串,并存储到到由指 针参数t已经指向的存储区域。例如,若s指向的 字符串为\,n=4,则t指向的 串为\。注意:字符串结束符是'\\0',不允 许调用字符串库函数。 **********/ voidfunc(char *s, int n, char *t) { for(inti=0;i *(t+i)=*(s+i);*(t+i)='\\0'; } /********** 【习题8.228】编写函数,由指针参数s指向的字 符串后n个字符构造一个字符串,并存储到到由指 针参数t已经指向的存储区域。例如,若s指向的 字符串为\,n=8,则t指向的 串为\。注意:字符串结束符是'\\0', 不允许调用字符串库函数。 **********/ voidfunc(char *s, int n, char *t) { for(inti=0;*(s+i)!='\\0';i++){} int k=0; for(int j=i-n;*(s+j)!='\\0';j++) *(t+(k++))=*(s+j);*(t+k)='\\0'; } /********** 【习题8.231】编写函数,由指针参数s指向的字 符串中第i个字符开始的n个字符构造一个字符串, 并存储到到由指针参数t已经指向的存储区域。例 如,若s指向的串为\,i=8, n=7,则t指向的串为\。注意:字符串 结束符是'\\0',不允许调用字符串库函数。 **********/ voidfunc(char *s, inti, int n, char *t) { int k=0; for(int j=i-1;k *(t+(k++))=*(s+j);*(t+k)='\\0'; } /********** 【习题8.234】编写函数,通过将s字符串中所有小写 字母转换成大写字母,构造一个字符串并存储在t已经 指向的存储区域,但原来的s串不改变。例如,若s字 符串为\则构造的t串为\ STUDENT.”。 **********/ voidfunc(char *s, char *t) { for(inti=0;*(s+i)!='\\0';i++) { if('a'<=*(s+i)&&*(s+i)<='z') *(t+i)=(char)(*(s+i)-32); else *(t+i)=*(s+i); } *(t+i)='\\0'; } /********** 【习题8.237】编写函数,通过将s字符串中所有大写 字母转换成小写字母,构造一个字符串并存储在t已经 指向的存储区域,但原来的s串不改变。例如,若s字 符串为\则构造的t串为\ student.”。 **********/ voidfunc(char *s, char *t) { for(inti=0;*(s+i)!='\\0';i++) { if('A'<=*(s+i)&&*(s+i)<='Z') *(t+i)=(char)(*(s+i)+32); else *(t+i)=*(s+i); } *(t+i)='\\0'; } /********** 【习题8.243】编写函数,在字符串s中顺序查找字 符串t,若找到,则返回其出现的位置,否则返回0。 例如,设s=\,若t=\,则返 回值是8;若t=\,则返回值是0。注意:字符串 结束符是'\\0',不允许调用字符串库函数。 **********/ intfunc(char *s, char *t) { int k=0; for(inti=0;*(s+i)!='\\0';i++) if(*(s+i)==*(t+k)) if(*(s+i+1)==*(t+k+1)) return i+1; return 0;