2016广工Anyview试题答案-第八章.docx

上传人:xt****7 文档编号:125780278 上传时间:2020-03-20 格式:DOCX 页数:12 大小:41.98KB
返回 下载 相关 举报
2016广工Anyview试题答案-第八章.docx_第1页
第1页 / 共12页
2016广工Anyview试题答案-第八章.docx_第2页
第2页 / 共12页
2016广工Anyview试题答案-第八章.docx_第3页
第3页 / 共12页
2016广工Anyview试题答案-第八章.docx_第4页
第4页 / 共12页
2016广工Anyview试题答案-第八章.docx_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《2016广工Anyview试题答案-第八章.docx》由会员分享,可在线阅读,更多相关《2016广工Anyview试题答案-第八章.docx(12页珍藏版)》请在金锄头文库上搜索。

1、/*【习题8.011】请编写函数func(char s, char t, int n),由数组s中长度为n的字符序列构造其逆序列,并存储在数组t中。例如,由给定字符序列s=are求得逆序列t=era;由s=time求得t=emit。*/void func(char s, char t, int n) /* 数组s的前n个元素存放给定的字符序列, 数组t的前n个元素存放s的逆序列。 注意:数组的下标从0开始。*/ for(int i=0;in;i+) ti=sn-i-1;/*【习题8.012】请编写函数func(char*s, char *t),由字符串s构造其逆串t。例如,由给定串s=are求

2、得逆串t=era;由s=time求得t=emit。*/void func(char *s, char *t) /* s是给定字符串的起始地址, t是求得s的逆串的起始地址*/ int n=0; for(int i=0;*(s+i)!=0;i+) n+; for(i=0;in;i+) ti=sn-i-1;/*【习题8.015】对长度为n的字符串s1,除首、尾字符外,将其余字符按ASCII码降序排列,组合成一个新的字符串s2。*/void func(char *s1, char *s2, int n)/* s1为字符串的起始地址, s2为新字符串的起始地址, n为字符串的长度。 要求:s1串不能发

3、生改变, s2串存放新的字符串。*/ for(int i=0;in;i+) *(s2+i)=*(s1+i); if(n4)break; else char t=*(s2+1);int k=1;int j,h; for(i=1;i=n-2;i+) for(j=i;j=n-2;j+) if(t=*(s2+j) t=*(s2+j);h=j; *(s2+h)=s2k+;s2k-1=t;t=s2k; /*【习题8.016】对字符串s1,除首、尾字符外,将其余字符按ASCII码降序排列,组合成一个新的字符串s2。*/void func(char *s1, char *s2) for(int i=0;*(s

4、1+i)!=0;i+) *(s2+i)=*(s1+i); int n=i; if(n4)break; else char t=*(s2+1);int k=1;int j,h; for(i=1;i=n-2;i+) for(j=i;j=n-2;j+) if(t=0)个字符开始的所有字符,按升序的次序构成字符串t。*/void substr(char *s, int m, char *t)/* s为字符串的起始地址, m=0, t为新字符串的起始地址, 注意:字符串尾字符之后跟随着一个结束符0, 即ASCII码为0的字符,结束符不属于字符串。 要求:s串不能发生改变, t串存放新的字符串。*/ in

5、t f=0; for(int i=m;si!=0;i+) tf+=si;tf=0; if(m=0|m=1|m=2)break; else char c=t0; int k=0; for(i=0;ti!=0;i+) for(int j=i;tj!=0;j+) if(c=tj)c=tj; tj=tk;tk+=c;c=tk; /*【习题8.020】在字符串s中查找字符c,如果找到,返回字符c首次出现在字符串s中的位置指针;否则,返回空指针NULL。*/char *match(char *s, char c) /* 返回字符在串s中首次出现的位置指针 */ for(int i=0;si!=0;i+)

6、if(*(s+i)=c) return s+i; return NULL;/*【习题8.033】编写函数,计算年份year中第yearday天相应的月和日。例如,调用函数month_day(2000,61,&m,&d)之后,m=3,d=1,即2000年的第61天是3月1日。*/int month_day(int year, int yearday, int *pmonth, int *pday) /* year是年, yearday是天数, 若year和yearday合理, 则*pmonth和*pday是计算得出的月和日,函数返回1; 否则,函数返回0。*/ int date12=31,29,

7、31,30,31,30,31,31,30,31,30,31; if(year%4=0&yearday0&yearday2) *pday=yearday; for(int i=0;i0&yearday2) *pday=yearday; for(int i=0;i*pmonth-1;i+) *pday-=datei; else if(*pmonth=1)*pday=yearday; else *pday=yearday-31;return 1; return 0;/*【习题8.044】请编写一个函数func,通过略去非数字字符,将字符串s转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数

8、)。*/long func(char *s) /* s是一个数字字符串的地址, 函数返回值为由s含有的数字字符转换得到的数(包含正负数情况) */ int i=0;long t=0;bool meet_negative=false;bool meet_number=false;while(si)if(47(int)si&(int)si0)个整数中的最大值。注意:要求在函数中采用指针(而不是下标)来处理数组元素。*/int findmax(int s, int n) /* 返回s中n(0)个整数的最大值。 注意:要求在函数中采用指针(而不是下标)来处理数组元素。*/ int t=*s; for(

9、int i=0;it)t=*(s+i); return t;/*【习题8.124】请编写一个函数min3adj(int s, int n),数组s中有n(0)个整数,返回在s中相邻三个数的和中的最小值。*/int min3adj(int s, int n) /* 数组s含n(=3)个整数, 返回在s中相邻三个数的和中的最小值。*/ int t=*(s+n-1)+*(s+n-2)+*(s+n-3); for(int i=n-1;i1;i-) if(t*(s+i)+*(s+i-1)+*(s+i-2) t=*(s+i)+*(s+i-1)+*(s+i-2); return t; /*【习题8.132】

10、编写函数,通过指针参数sum将x和y的和赋给相应实际参数。例如,若x=134、y=378,则sum的实参变量被赋值512。*/void func(int x, int y, int *sum) *sum=x+y;/*【习题8.136】编写函数,返回指针参数x和y所指向的变量的值之和。*/int func(int *x, int *y) return *x+*y;/*【习题8.138】编写函数,比较指针参数x和y分别指向的变量,若前者的值较大,则交换两者的值,并返回1;否则无须交换,返回0。*/int func(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。*/int func(int n, int *a, int x) for(int i=0;in;i+) if(*(a+i)=x) return i+1; return 0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号