PTA作业第一部分

6-7 删除字符串中数字字符(10 分)

删除一个字符串中的所有数字字符。

函数接口定义:

void delnum(char *s);

其中 s是用户传入的参数。 函数的功能是删除指针 s所指的字符串中的所有数字字符。

裁判测试程序样例:

  1. #include "stdio.h"
  2. void delnum(char *s);
  3. int main ()
  4. { char item[80];
  5. gets(item);
  6. delnum(item);
  7. printf("%s\n",item);
  8. return 0;
  9. }
  10. /* 请在这里填写答案 */

输入样例:

a0bc+d496df

输出样例:

abc+ddf

1.设计思路:

(1).题目算法描述

第一步:定义i,j 并初始化为0

第二步:遍历s

第三步:判断s中每个元素是否为数字如果是数字则覆盖此元素

第四步:将s的最后一个元素赋值为'\0'

(2).流程图

2.实验代码

  1. void delnum(char *s)
  2. {
  3. int i = 0,j = 0;
  4. while(s[i] != '\0') {
  5. if (!(s[i] >= '0' && s[i] <= '9')) {
  6. s[j++] = s[i];
  7. }
  8. i++;
  9. }
  10. s[j] = '\0';
  11. }

2.错误调试

答案正确

6-8 统计子串在母串出现的次数(10 分)

编写一个函数,该函数可以统计一个长度为3的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asdasasdfgasdaszx67asdmklo,字符串为:asd,则应输出n=4。。

函数接口定义:

int fun(char *str,char *substr);

其中strsubstr是用户传入的参数。函数统计substr指针所指的字符串在str指针所指的字符串中出现的次数,并返回次数。

裁判测试程序样例:

  1. #include<stdio.h>
  2. int fun(char *str,char *substr);
  3. int main()
  4. { char str[81]="asdasasdfgasdaszx67asdmklo",substr[4]="asd";
  5. int n;
  6. n=fun(str,substr);
  7. printf("n=%d\n",n);
  8. return 0;
  9. }
  10. /* 请在这里填写答案 */

输出样例:

n=4

1.设计思路:

(1).题目算法描述

第一步:定义i,j , k, n并初始化为0

第二步:从母串开始遍历

第三步:母串的每个字符串与子串进行比较

第四步:当子串遍历完的时候统计次数用的n加一

第五步:返回n

(2).流程图

2.实验代码

  1. int fun(char *str,char *substr)
  2. {
  3. int i=0,j=0,k=0,n=0;
  4. for(i=0;str[i]!='\0';i++)//从母串开始遍历
  5. {
  6. for(j=i,k=0;str[j]==substr[k];j++,k++)//每次遍历的当前字符串都要和子串的第一个字符进行比较把子串遍历完次数加一
  7. {
  8. if(substr[k+1]=='\0')
  9. {
  10. n++;
  11. }
  12. }
  13. }
  14. return n;
  15. }

3.错误调试

答案正确

6-9 字符串中除首尾字符外的其余字符按降序排列(10 分)

请编写函数fun,对字符串中除首、尾字符外的其余字符按降序排列。例如,原来的字符串为CEAedca,排序后输出为CedcEAa。

函数接口定义:

int fun(char *s,int num);

其中snum 都是用户传入的参数。函数对字符指针s所指的字符串中除首、尾字符外的其余字符按降序排列。

裁判测试程序样例:

  1. #include <stdio.h>
  2. int fun(char *s,int num);
  3. int main()
  4. {
  5. char s[10];
  6. gets(s);
  7. fun(s,7);
  8. printf("%s",s);
  9. return 0;
  10. }
  11. /* 请在这里填写答案 */

输入样例:

CEAedca

输出样例:

CedcEAa

1.设计思路:

PS:此处不太理题目中给出的num的含义,如果说num代表的是字符串的长度那么难道每个测试字符串的长度都是7吗,而如果说num不是字符串的长度那么num代表什么含义,是内存空间的浪费吗?

(1).题目算法描述

第一步:定义i,j,k,n,t

第二步:遍历统计字符串长度

第三步:遍历字符串进行排序(遍历过程中除去首位字符串)

(2).流程图

2.实验代码

  1. int fun(char *s,int num)
  2. {
  3. int i=0, j=0, k=0, n=0, t=0;
  4. n=strlen(s);
  5. n--;//去掉末位元素
  6. for(i=1;i<n;i++)
  7. {
  8. for(j=i;j<n-1;j++)
  9. {
  10. for(k=j;k<n;i++)
  11. {
  12. if(*(s+j)<*(s+k))
  13. {
  14. t=*(s+j);
  15. *(s+j)=*(s+k);
  16. *(s+k)=t;
  17. }
  18. }
  19. }
  20. }
  21. }

2.错误调试

错误提示:运行超时

错误改正:关于字符串长度统计函数使用时必须包含string.h头文件;变量t应该定义为char类型;循环混乱

修改后的代码:

  1. int fun(char *s,int num)
  2. {
  3. int i=0, j=0, k=0, n=0;
  4. char t;
  5. for(n=0;;n++)
  6. {
  7. if(*(s+n)=='\0')break;
  8. }
  9. n--;
  10. for(i=1;i<n-1;i++)
  11. {
  12. for(j=i;j<n;j++)
  13. {
  14. if(*(s+i)<*(s+j))
  15. {
  16. t=*(s+i);
  17. *(s+i)=*(s+j);
  18. *(s+j)=t;
  19. }
  20. }
  21. }
  22. }

答案正确

7-1 输出学生成绩(20 分)

本题要求编写程序,根据输入学生的成绩,统计并输出学生的平均成绩、最高成绩和最低成绩。建议使用动态内存分配来实现。

输入格式:

输入第一行首先给出一个正整数N,表示学生的个数。接下来一行给出N个学生的成绩,数字间以空格分隔。

输出格式:

按照以下格式输出:

  1. average = 平均成绩
  2. max = 最高成绩
  3. min = 最低成绩

结果均保留两位小数。

输入样例:

  1. 3
  2. 85 90 95

输出样例:

  1. average = 90.00
  2. max = 95.00
  3. min = 85.00

1.设计思路:

(1).题目算法描述

第一步:定义N读入N

第二步:定义数组

第三步:遍历数组找最值并求和

第四步:求平均值

第五步:输出

(2).流程图

2.实验代码

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int N,i;
  5. float sum=0, average=0, max=0, min=0;
  6. scanf("%d",&N);
  7. int a[N];
  8. for(i=0;i<N;i++)
  9. {
  10. scanf("%d",&a[i]);
  11. }
  12. max = a[0];
  13. min=a[0];
  14. for(i=0;i<N;i++)
  15. {
  16. sum = sum + a[i];
  17. if(a[i]>max){
  18. max=a[i];
  19. }
  20. if(a[i]<min){
  21. min=a[i];
  22. }
  23. }
  24. average=sum/N;
  25. printf("average = %.2f\nmax = %.2f\nmin = %.2f\n",average,max,min);
  26. return 0;
  27. }

本题的动态内存分配实现方法有待继续学习

2.错误调试

答案正确

关于动态内存分配相关内容的参考:

https://baike.baidu.com/item/动态分配内存/2968252?fr=aladdin

(来源:百度百科)

关于alloc函数:

https://blog.csdn.net/msdnwolaile/article/details/51695361

1.设计思路:

(1).题目算法描述

第一步:定义N读入N

第二步:使用动态内存分配定义数组

第三步:遍历数组找最值并求和

第四步:求平均值

第五步:释放动态内存分配的空间

第六步:按要求输出结果

(2).流程图

2.实验代码

  1. #include <stdio.h>
  2. #include <stdlib.h>//使用malloc函数的头文件
  3. int main()
  4. {
  5. int N,i;
  6. float sum=0,average=0,max=0,min=0;
  7. scanf("%d",&N);
  8. float *p;
  9. p = (float *)malloc(N);//指针指向动态分配内存
  10. for(i=0;i<N;i++)
  11. {
  12. scanf("%f",(p+i));
  13. sum+=*(p+i);
  14. }
  15. max=*(p+0);
  16. min=*(p+0);
  17. for(i=0;i<N;i++)
  18. {
  19. if(min>*(p+i)){
  20. min=*(p+i);
  21. }
  22. if(max<*(p+i)){
  23. max=*(p+i);
  24. }
  25. }
  26. average=sum/N*1.0;
  27. free(p);//释放空间
  28. printf("average = %.2f\nmax = %.2f\nmin = %.2f\n",average,max,min);
  29. return 0;
  30. }

2.错误调试

7-1 计算职工工资(15 分)

给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。

输入格式:

输入在一行中给出正整数N。随后N行,每行给出一位职员的信息,格式为“姓名 基本工资 浮动工资 支出”,中间以空格分隔。其中“姓名”为长度小于10的不包含空白字符的非空字符串,其他输入、输出保证在单精度范围内。

输出格式:

按照输入顺序,每行输出一位职员的姓名和实发工资,间隔一个空格,工资保留2位小数。

输入样例:

  1. 3
  2. zhao 240 400 75
  3. qian 360 120 50
  4. zhou 560 150 80

输出样例:

  1. zhao 565.00
  2. qian 430.00
  3. zhou 630.00

1.设计思路:

(1).题目算法描述

第一步:定义结构

第二步:定义N,i

第三步:读入N

第四步:遍历输入数据

第五步:遍历输出数据

(2).流程图

2.实验代码

  1. #include <stdio.h>
  2. struct money
  3. {
  4. char name[10];
  5. float jmoney;
  6. float fmoney;
  7. float zmoney;
  8. float mony;
  9. };
  10. int main()
  11. {
  12. int N,i=0;
  13. scanf("%d",&N);
  14. struct money s[N];
  15. for(i=0;i<N;i++)
  16. {
  17. scanf("%s %f %f %f",&s[i].name,&s[i].jmoney,&s[i].fmoney,&s[i].zmoney);
  18. s[i].mony=s[i].jmoney+s[i].fmoney-s[i].zmoney;
  19. }
  20. for(i=0;i<N;i++)
  21. {
  22. printf("%s %.2f\n",s[i].name,s[i].mony);
  23. }
  24. return 0;
  25. }

2.错误调试

错误提示:多种错误

改正方法:将struct money s[i]换成struct money s[N]

刚开始定义的时候i=0 struct money s[i]相当于 struct money s[0] 当进入for循环后i的值改变导致导致出现错误

答案正确

7-2 计算平均成绩(15 分)

给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和成绩([0,100]区间内的整数),要求计算他们的平均成绩,并顺序输出平均线以下的学生名单。

输入格式:

输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩”,中间以空格分隔。

输出格式:

首先在一行中输出平均成绩,保留2位小数。然后按照输入顺序,每行输出一位平均线以下的学生的姓名和学号,间隔一个空格。

输入样例:

  1. 5
  2. 00001 zhang 70
  3. 00002 wang 80
  4. 00003 qian 90
  5. 10001 li 100
  6. 21987 chen 60

输出样例:

  1. 80.00
  2. zhang 00001
  3. chen 21987

1.设计思路:

(1).题目算法描述

第一步:定义结构

第二步:定义N,i, sum

第三步:读入N

第四步:遍历输入数据

第五步:计算average

第六步:输出average

第七步:遍历判断每个学生的分数是否大于平均值输出低于平均分的学生信息

(2).流程图

2.实验代码

  1. #include <stdio.h>
  2. struct student{
  3. char num[6];
  4. char name[11];
  5. int score;
  6. };
  7. int main()
  8. {
  9. int N,i=0,sum=0;
  10. float average;
  11. scanf("%d",&N);
  12. struct student s[N];
  13. for(i=0;i<N;i++)
  14. {
  15. scanf("%s %s %d",s[i].num,s[i].name,&s[i].score);
  16. sum=sum+s[i].score;
  17. }
  18. average = sum/N*1.0;
  19. printf("%.2f\n",average);
  20. for(i=0;i<N;i++)
  21. {
  22. if(s[i].score<average){
  23. printf("%s %s\n",s[i].name,s[i].num);
  24. }
  25. }
  26. return 0;
  27. }

2.错误调试

错误提示:输出错误

错误的输出样式



改正方法:定义结构的时候将char num[5];改为char num[6];

学号信息的长度为5定义的字符串长度也为5无法读入'\0'

由此联想到名字变量也无法读入‘/0’将char name[10]改为char name[11]

答案正确:

6-1 按等级统计学生成绩(20 分)

本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。

函数接口定义:

int set_grade( struct student *p, int n );

其中p是指向学生信息的结构体数组的指针,该结构体的定义为:

  1. struct student{
  2. int num;
  3. char name[20];
  4. int score;
  5. char grade;
  6. };

n是数组元素个数。学号num、姓名name和成绩score均是已经存储好的。set_grade函数需要根据学生的成绩score设置其等级grade。等级设置:85-100为A,70-84为B,60-69为C,0-59为D。同时,set_grade还需要返回不及格的人数。

裁判测试程序样例:

  1. #include <stdio.h>
  2. #define MAXN 10
  3. struct student{
  4. int num;
  5. char name[20];
  6. int score;
  7. char grade;
  8. };
  9. int set_grade( struct student *p, int n );
  10. int main()
  11. { struct student stu[MAXN], *ptr;
  12. int n, i, count;
  13. ptr = stu;
  14. scanf("%d\n", &n);
  15. for(i = 0; i < n; i++){
  16. scanf("%d%s%d", &stu[i].num, stu[i].name, &stu[i].score);
  17. }
  18. count = set_grade(ptr, n);
  19. printf("The count for failed (<60): %d\n", count);
  20. printf("The grades:\n");
  21. for(i = 0; i < n; i++)
  22. printf("%d %s %c\n", stu[i].num, stu[i].name, stu[i].grade);
  23. return 0;
  24. }
  25. /* 你的代码将被嵌在这里 */

输入样例:

  1. 10
  2. 31001 annie 85
  3. 31002 bonny 75
  4. 31003 carol 70
  5. 31004 dan 84
  6. 31005 susan 90
  7. 31006 paul 69
  8. 31007 pam 60
  9. 31008 apple 50
  10. 31009 nancy 100
  11. 31010 bob 78

输出样例:

  1. The count for failed (<60): 1
  2. The grades:
  3. 31001 annie A
  4. 31002 bonny B
  5. 31003 carol B
  6. 31004 dan B
  7. 31005 susan A
  8. 31006 paul C
  9. 31007 pam C
  10. 31008 apple D
  11. 31009 nancy A
  12. 31010 bob B

1.设计思路:

(1).题目算法描述

第一步:定义i,x

第二步:指针遍历结构

第三步:根据分数判断等级

第四步:用x记录不及格学生人数

第五步:返回x

(2).流程图

2.实验代码

  1. int set_grade( struct student *p, int n )
  2. {
  3. int i,x;
  4. for(i=0;i<n;i++,p++)
  5. {
  6. if((p->score>=85)&&(p->score<=100))
  7. {
  8. p->grade ='A';
  9. }else if((p->score>=70)&&(p->score<=84))
  10. {
  11. p->grade ='B';
  12. }else if((p->score>=60)&&(p->score<=69))
  13. {
  14. p->grade='C';
  15. }else{
  16. p->grade='D';
  17. x++;
  18. }
  19. }
  20. return x;
  21. }

2.错误调试

错误提示:答案错误

错误原因:定义x的时候没有初始化

改正方法:定义x的时候将其初始化为0

答案正确:

6-2 结构体数组按总分排序(10 分)

有一组学生数据,每个数据中含有三门课成绩,请按成绩总和从高到低对这组数据进行排序。 编写函数calc求出每名学生的总分。 编写函数sort按每名学生的总分从高到低对这组数据进行排序

函数接口定义:

  1. void calc(struct student *p,int n);
  2. void sort(struct student *p,int n);

其中 p n 都是用户传入的参数。 函数calc求出p指针所指的结构体数组中 n 名学生各自的总分。 函数sort对p指针所指的结构体数组的学生数据按总分降序排序。

裁判测试程序样例:

  1. #include <stdio.h>
  2. struct student
  3. {
  4. int num;
  5. char name[15];
  6. float score[3];
  7. float sum;
  8. };
  9. void calc(struct student *p,int n);
  10. void sort(struct student *p,int n);
  11. int main()
  12. {
  13. struct student stu[5];
  14. int i,j;
  15. float f;
  16. for(i=0;i<5;i++)
  17. {
  18. scanf("%d%s",&stu[i].num,stu[i].name);
  19. for(j=0;j<3;j++)
  20. {
  21. scanf("%f",&f);
  22. stu[i].score[j]=f;
  23. }
  24. }
  25. calc(stu,5);
  26. sort(stu,5);
  27. for(i=0;i<5;i++)
  28. {
  29. printf("%5d%15s",stu[i].num,stu[i].name);
  30. printf(" %.1f %.1f %.1f %.1f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2], stu[i].sum);
  31. }
  32. return 0;
  33. /* 请在这里填写答案 */

输入样例:

  1. 1 zhang 89 87 85
  2. 2 liu 92 98 96
  3. 3 li 74 71 72
  4. 4 xion 95 98 99
  5. 5 liu 99 100 100

输出样例:

  1. 5 liu 99.0 100.0 100.0 299.0
  2. 4 xion 95.0 98.0 99.0 292.0
  3. 2 liu 92.0 98.0 96.0 286.0
  4. 1 zhang 89.0 87.0 85.0 261.0
  5. 3 li 74.0 71.0 72.0 217.0

1.设计思路:

(1).题目算法描述

第一个函数:

第一步:定义i;

第二步:遍历数组求出每个学生成绩的总和

第二个函数:

第一步:定义i,j 和用做交换变量的t

第二步:运用冒泡排序根据学生成绩进行排序

(2).流程图

2.实验代码

  1. void calc(struct student *p,int n)
  2. {
  3. int i;
  4. for(i=0;i<n;i++,p++)
  5. {
  6. p->sum = p->score[0]+p->score[1]+p->score[2];
  7. }
  8. }
  9. void sort(struct student *p,int n)
  10. {
  11. int i=0,j=0;
  12. struct student t;
  13. for(i=0;i<n;i++)
  14. {
  15. for(j=0;j<n-1;j++)
  16. {
  17. if(p[j].sum < p[j+1].sum)
  18. {
  19. t = p[j];
  20. p[j] = p[j+1];
  21. p[j+1] = t;
  22. }
  23. }
  24. }
  25. }

2.错误调试

错误提示:多次尝试在Cold::Blocks 中无法运行出正确的结果,但是在PTA中提交结果正确

错误原因:我调试第一个函数的时候将主函数中将调用第二个函数的代码注释掉了,在PTA提交的过程中只提交了函数的部分所以显示结果正确

答案正确:

作业要求三:

1.所学知识点总结

(1)复习了指针相关的定义和引用,与上次作业总结的内容基本相同就不重复罗列了

(2)学习了相关动态内存分配的内容,但是上课时听的并不是很明白,在课下自行通过网络进行了相关问题的解决,具体的链接已经附在了前面的博客中

(3)学习了结构的定义与使用等相关的知识

(4)学习了用指针操作结构的相关知识

2.代码托管

我的Github地址:https://github.com/XINJY/The-homework-of-C

上传成功截图:

3.点评同学作业

李伍壹(http://www.cnblogs.com/chenxidream/p/8654245.html)

姜健(http://www.cnblogs.com/jj990519/p/8667152.html)

王文博(http://www.cnblogs.com/wwb986187/p/8727528.html)

袁中(http://www.cnblogs.com/2719610441qqcom/p/8660431.html)

申怡苗(http://www.cnblogs.com/Vinecy/p/8660124.html)

4.表格和折线图

表格:

折线图:

C高级第二次作业的更多相关文章

  1. C高级第二次PTA作业

    6-7 删除字符串中数字字符 1.设计思路: (1)算法: 第一步:定义一个字符数组item,输入一个字符串赋给字符数组item.调用函数delnum, 第二步:在函数delnum中定义循环变量i=0 ...

  2. 软件工程(QLGY2015)第二次作业点评(随机挑选20组点评)

    相关博文目录: 第一次作业点评 第二次作业点评 第三次作业点评 说明:随机挑选20组点评,大家可以看看blog名字,github项目名字,看看那种是更好的,可以学习,每个小组都会反应出一些问题,希望能 ...

  3. 软件工程(GZSD2015)第二次作业小结

    第二次作业,从4月7号开始,陆续开始提交作业.根据同学们提交的作业报告,相比第一次作业,已经有了巨大改变,大家开始有了完整的实践,对那些抽象的名词也开始有了直观的感受,这很好.然后有一些普遍存在的问题 ...

  4. 软件工程(GZSD2015) 第二次作业小结

    第二次作业,从4月7号开始,陆续开始提交作业.根据同学们提交的作业报告,相比第一次作业,已经有了巨大改变,大家开始有了完整的实践,对那些抽象的名词也开始有了直观的感受,这很好.然后有一些普遍存在的问题 ...

  5. MathExam第二次作业

    第二次作业:MathExam 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 20 30 • ...

  6. 第二次作业:卷积神经网络 part 2

    第二次作业:卷积神经网络 part 2 问题总结 输出层激活函数是否有必要? 为什么DnCNN要输出残差图片?图像复原又该如何操作? DSCMR中的J2损失函数效果并不明显,为什么还要引入呢? 代码练 ...

  7. 耿丹CS16-2班第二次作业汇总

    -- Deadline: 2016-09-28 12:00 -- 作业内容:http://www.cnblogs.com/huangjunlian/p/5891726.html -- 第二次作业总结: ...

  8. JAVA第二次作业展示与学习心得

    JAVA第二次作业展示与学习心得 在这一次作业中,我学习了复选框,密码框两种新的组件,并通过一个邮箱登录界面将两种组件运用了起来.具体的使用方法和其他得组件并没有什么大的不同. 另外我通过查阅资料使用 ...

  9. 20169212《Linux内核原理与分析》第二周作业

    <Linux内核原理与分析>第二周作业 这一周学习了MOOCLinux内核分析的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资 ...

随机推荐

  1. WINDBG常用方法

    前言:windbg大家都很熟悉,它是做windows系统客户端测试的QA人员很应该掌握的定位程序崩溃原因的工具, 网上也有很多资料,但是真正适合QA阅读和实用的资料不多,我把我认为最重要最应该掌握的结 ...

  2. 剑指offer(55)链表中环的入口节点

    题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null. 题目分析 1.一快一慢指针,先找到碰撞点. 2.然后碰撞点到入口节点的距离就是头结点到入口节点的距离. 具体原理可 ...

  3. Android中的task和stack

    今天在重新理了一遍intent的过程中发现task是一个神奇的东西,而它又和stack有着很深的联系.task顾名思义是一个任务,但是这个任务可不一定只是来自一个app,比如我用微信来发一张图片,那么 ...

  4. EJB到底是什么?

    EJB到底是什么?   1. 我们不禁要问,什么是"服务集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业 ...

  5. Java三种注释

    单行注释:// 注释内容 多行注释:/*... 注释内容....*/ 文本注释:/**.. 注释内容....*/                     这种注释可以用来自动地生成文档.在JDK中有个 ...

  6. ABAP search help (搜索帮助) 几种种方法

    ABAP search help (搜索帮助) 几种种方法    域范围  ABAP 的搜索帮助有很多种方法,掌握下面的几种基本差不多了 *&------------------------- ...

  7. 拼接字符串,生成tree格式的JSON数组

    之前做的执法文书的工作,现在需要从C#版本移植到网页版,从Thrift接口获取数据,加载到对应的控件中 之前用的easyui的Tree插件,通过<ul><li><span ...

  8. centos 打印机安装方法

    这里安装的是hplip 1.首先确定cups有没有安装 没有的话 yum install cups 安装 2.安装 hplip yum install -y hplip hplip-* 3执行 hp- ...

  9. flex属性导图

    声明:部分图片转载自 http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool

  10. Angular2 EventEmitter

    可能你对EventEmitter还不太熟悉,不过别担心,它并不难.EventEmitter只是一个帮你实现观察者模式①的对象.也就是说,它是一个管理一系列订阅者并向其发布事件的对象.就是这么简单.来看 ...