189
社区成员
Deadline: 2021-09-21 00:00am
实现一个程序功能,它可以对读入的C或C++代码文件进行不同等级的关键字提取。
基础要求:输出关键字统计信息
进阶要求:输出有几组switch case结构,同时输出每组对应的case个数
拔高要求:输出有几组if else结构
终极要求:输出有几组if,else if,else结构
在完成更高要求的情况前,需完成前置的要求。
使用 C++、Java、Python 中任一种完成任务。
制定合适的代码规范,进行测试。
使用 Git 进行版本控制。
GitHub 初使用
为了保证你的代码能够帮助更多的人,并且能得到有效的管理和开源共享,请先学习 GitHub 使用:
下载 Git。
学习基础 Git 命令。
在GitHub上创建仓库并上传本次作业,完成基本需求,并至少进行10次以上的 commit。
代码规范制定
为了其他同仁可以轻松的阅读你的代码,请制定属于你的代码规范,要求不能偏离主流代码规范:请参照 《码出高效_阿里巴巴Java开发手册》/《谷歌C++开源项目风格指南》/《Python PEP8》,从以下几个角度制定你的编程规范,并撰写成 Markdown 文件,请牢记你制定的编码规范,并在此次作业中严格执行。
缩进
变量命名
每行最多字符数
函数最大行数
函数、类命名
常量
空行规则
注释规则
操作符前后空格
其他规则
创建作业的GitHub仓库。
编写程序,积极 commit。
迭代更新,优化代码。
编写博客,完成作业。
给出此次作业的 PSP 表格。
解题思路描述。即刚开始拿到题目后,如何思考,如何找资料的过程。
设计实现过程。设计包括代码如何组织,关键函数的流程图。
代码说明。展示出项目关键代码,并解释思路。
单元测试截图和描述。
单元测试覆盖率优化和性能测试,性能优化截图和描述。
总结本次作业。
Git 部分(15)
commit 信息规范(5)
文件规范(5)
其他(5)
代码部分(20)
代码风格(5)
代码规范(5)
单元测试(10)
博客部分(65)
任务分解(10)
PSP 表格(5)
迭代过程描述(10)
困难描述及解决办法寻找(15)
其他(10)
程序评测(45)
正确性(20)
运行速度(25)
提交时间(5)
C语言文件样例:
#include <stdio.h>
int main(){
int i=1;
double j=0;
long f;
switch(i){
case 0:
break;
case 1:
break;
case 2:
break;
default:
break;
}
switch(i){
case 0:
break;
case 1:
break;
default:
break;
}
if(i<0){
if(i<-1){}
else{}
}
else if(i>0){
if (i>2){}
else if (i==2) {}
else if (i>1) {}
else {}
}
else{
if(j!=0){}
else{}
}
return 0;
}
格式要求
输入格式:执行时,需向程序传入两个参数,第一个参数是代码文件的路径,第二个参数是完成等级(从低到高为1,2,3,4)
如 python keyCount.py data/key.c 4
输出格式:上面的代码作为样例
total num: 35
switch num: 2
case num: 3 2
if-else num: 2
if-elseif-else num: 2
关键字共定义为32个:
auto | break | case | char | const | continue | default | do |
---|---|---|---|---|---|---|---|
double | else | enum | extern | float | for | goto | if |
int | long | register | return | short | signed | sizeof | static |
struct | switch | typedef | union | unsigned | void | volatile | while |