广工Anyview试题答案第八章_第1页
广工Anyview试题答案第八章_第2页
广工Anyview试题答案第八章_第3页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、串 ?慜敲求得逆串 ?敜慲; 由?瑜浩履求得 ?敜業屴。*/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;/*【习题】对长度为 n的字符串si,除首、尾字符外,将其余字符按ASCII码降序排列,组合成一个新的字符串s2o*/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;elsechar 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;/*【习题】对字符串S1,除首、尾字符外,将其余字符 按ASCII码降序排列,组合成一个新的字符串S2。*/void func(char *S1, char *S2)for(int i=0;*(S1+i)!=0;i+)*(S

4、2+i)=*(S1+i);int n=i;if(n4)break;elSechar 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 串存放新的字符串。*/int f=0;for(int i

5、=m;si!=0;i+) tf+=si;tf=0;if(m=0|m=1|m=2)break;elsechar 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;/*【习题】在字符串s中查找字符C,如果找到,返回字符c首次出现在字符串 s 中的位置指针;否则,返回空指针NULL。*/Char *matCh(Char *s, Char C)/*返回字符在串s中首次岀现的位置指针 */for(int i=0;si!=0;i+)if(*(s+i)=C)return s+i;return

6、NULL;/*【习题】编写函数,计算年份 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,31,30,31,30,31,31,30,31,30,

7、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;/*【习题】请编写一个函数 func ,通过略去非数字字符,将字符串s转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)*/long func(char *s)/* s 是一个数字字符串的地

8、址,函数返回值为由 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(int i=0;it)t=*(s+i);return t;/*【习题】请编写一个函

9、数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;/*【习题】编写函数,通过指针参数 sum 将 x 和 y 的 和赋给相应实际参数。例如,若x=134、y=378,

10、则sum的实参变量被赋值 512。* void func(int x, int y, int *sum)*sum=x+y;/*【习题】编写函数,返回指针参数 x 和 y 所指向的 变量的值之和。*/int func(int *x, int *y)return *x+*y;/*【习题】编写函数,比较指针参数x和y分别指向的变量,若前者的值较大,则交换两者的值, 并返回 1;否则无须交换,返回0。*/int func(int *x, int *y)if(*x*y)int t=*x;*x=*y;*y=t;return 1;return 0;/*【习题】假设指针 a 指向某数组中的一个元素。 编写函数

11、,在从元素 *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;/*【习题】假设指针 a 指向某数组中的一个元素。 编写函数,对从元素 *a 开始的 n 个元素,统计并返回 值为 x 的元素个数(若不存在这样的元

12、素,则返回0)*/int func(int n, int *a, int x) int t=0;for(int i=0;in;i+)if(*(a+i)=x)t+;if(t=0)return 0;return t;/*【习题】编写函数,返回指针参数 s 所指向的字 符串的长度。例如,若该串为 ?愠 ?瑳摵湥 ?, 则函数返回值是 15。注意:字符串结束符是 0 ,不 计入长度。不允许调用库函数 strlen() 。*/int func(char *s)for(int i=0;*(s+i)!=0;i+)return i;/*【习题】编写函数,在指针参数 s 所指向的字 符串中顺序查找由 c 指定的

13、字符。一旦找到,则返回 该字符在串中的序号(串的首个字符的序号为1 ),否则返回 0。例如,若该串为 ?愠 ?瑳摵湥 ?, c=t ,则函数返回值为 9。注意:字符串结束符是 0 ,不允许调用字符串库函数。*/int func(char *s, char c)for(int i=0;*(s+i)!=0;i+)if(*(s+i)=c)return i+1;/*【习题】编写函数,在指针参数 s 所指向的字 符串中统计并返回由 c 指定的字符的个数。例如,若 该串为 ?愠?瑳摵湥 ?,c=t ,则函数返回值 为 2 。注意:字符串结束符是 0 ,不允许调用字符 串库函数。*/int func(cha

14、r *s, char c)int t=0;for(int i=0;*(s+i)!=0;i+)if(*(s+i)=c)t+;return t;/*【习题】编写函数,复制指针参数 s 指向的字 符串到由指针参数 t 已经指向的存储区域。注意: 字符串结束符是 0 ,不允许调用字符串库函数。 */void func(char *s, char *t)for(int i=0;*(s+i)!=0;i+)*(t+i)=*(s+i);*(t+i)=0;/*【习题】编写函数,由指针参数 s 指向的字 符串头 n 个字符构造一个字符串,并存储到到由指 针参数 t 已经指向的存储区域。例如,若 s 指向的 字符串

15、为?愠?瑳摵湥?, n=4,则t指向的 串为?愠屭。注意:字符串结束符是0 ,不允许调用字符串库函数。*/void func(char *s, int n, char *t)for(int i=0;in;i+)*(t+i)=*(s+i);*(t+i)=0;/*【习题】编写函数,由指针参数 s 指向的字 符串后 n 个字符构造一个字符串,并存储到到由指 针参数t已经指向的存储区域。例如,若s指向的字符串为?愠?瑳摵湥?,n=8,则t指向的 串为獜畴敤瑮尮。注意:字符串结束符是0 ,不允许调用字符串库函数。*/void func(char *s, int n, char *t)for(int i=

16、0;*(s+i)!=0;i+)int k=0;for(int j=i -n;*(s+j)!=0;j+)*(t+(k+)=*(s+j);*(t+k)=0;/*【习题】编写函数,由指针参数 s 指向的字个字符构造一个字符串, n 个字符开始的 i 符串中第 并存储到到由指针参数 t 已经指向的存储区域。例 如,若 s 指向的串为 ?愠?瑳摵湥 ?, i=8,n=7,则t指向的串为獜畴敤瑮。注意:字符串结束符是 0 ,不允许调用字符串库函数。*/void func(char *s, int i, int n, char *t)int k=0;for(int j=i -1;kn;j+)*(t+(k+)

17、=*(s+j);*(t+k)=0;/*【习题】编写函数,通过将 s 字符串中所有小写 字母转换成大写字母 ,构造一个字符串并存储在 t 已经 指向的存储区域,但原来的 s串不改变。例如,若 s字 符串为 I am a student., 则构造的 t 串为 I AM ASTUDENT”. 。*/void func(char *s, char *t)for(int i=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;/*【习题】编写函数,通过将 s 字符串中所有大写

18、 字母转换成小写字母 ,构造一个字符串并存储在 t 已经 指向的存储区域,但原来的 s串不改变。例如,若 s字 符串为I Am a Student.,则构造的t串为i am astudent. ”。*/void func(char *s, char *t)for(int i=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;/*【习题】编写函数,在字符串 s 中顺序查找字符串t,若找到,则返回其岀现的位置,否则返回0例如,设 ?愠 ?瑳摵湥 ?,若 ?獜畴,则返 回值

19、是 8;若 ?慜屮,则返回值是0 。注意:字符串结束符是 0 ,不允许调用字符串库函数。*/int func(char *s, char *t)int k=0;for(int i=0;*(s+i)!=0;i+)if(*(s+i)=*(t+k) if(*(s+i+1)=*(t+k+1) return i+1;return 0;/* 【习题】假设字符串中每个连续字母序列称为 “单词”。编写函数,在字符串 s 中顺序获取每个单 词,依次存入 w 指示的二维数组 ,并返回单词个数。 例如,若有 ?愠 ?瑳摵湥屴,则 w=I,am, a,student 。注意:字符串结束符是 0 ,不 允许调用字符串库函数。*/int func(char *s, char (*w)10)int t=0,h=0,k=0;for(int i=0;*(s+i)!=0;i+) if(A=*(s+i)&*(s+i)=Z)|(a=*(s+i)&*(s+i)=z) k+;if(k=0)return 0; for(i=0;*(s+i)!=0;i+) if(A=*(s+i)&*(s+i)=Z)|(a=*(s+i)&*(s+i)=z) wth+=*(s+i);elsewth=0;if(wt0=0)h=0;continue;elset+;h

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论