2022年统计程序中各种代码行数课程设计

上传人:151****513 文档编号:245973983 上传时间:2022-01-26 格式:DOCX 页数:25 大小:15.47KB
返回 下载 相关 举报
2022年统计程序中各种代码行数课程设计_第1页
第1页 / 共25页
2022年统计程序中各种代码行数课程设计_第2页
第2页 / 共25页
2022年统计程序中各种代码行数课程设计_第3页
第3页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《2022年统计程序中各种代码行数课程设计》由会员分享,可在线阅读,更多相关《2022年统计程序中各种代码行数课程设计(25页珍藏版)》请在金锄头文库上搜索。

1、精选word文档 下载可编辑需求分析1) 问题描述读入一个 C 程序,统计程序中代码、注释和空行数以及函数的个数和平均行数,并利 用统计信息分析评价该程序风格。2) 基本要求如下:(1)、把 C 程序文件按字符顺序读入源程序;(2)、边读入程序, 边识别统计代码行、注释行和空行,同时还要识别函数的开始和结 束,以便统计其个数及平均行数。(3)、程序风格分为代码注释和空行三方面。每方面分A、B、 C、D 四个等级。代码(函数的平均长度)1015 行89 或 162057 或 212424注释(占总行数比例)1525%1014 或 2630%59 或 3135%35%空行(占总行数比率)1525%

2、1014 或 2630%59 或 3135%35%3)输入输出范例以下是对程序文件 ProgAnal.C 分析的输出结果示例: The results of analysing program file ProgAnal.C:Lines of code :180Lines of comments:63Blank lines:52CodeCommentsSpace61%21%18%The program includes 9 functions.The average length of a section of code is 12.9 lines. Grade A: Excellent ro

3、utine size style.Grade A: Excellent commenting style.Grade A: Excellent white space style.1. 概要设计1). 头文件引用与宏定义 : #include #include #include #define TRUE 1 #define FALSE 0#defineBOOLint#defineMAXSIZE 5000#defineCOUNT20 可以统计的最大的文件个数#defineLEN20 文件名的最大长度2). 所用存储结构 函数属性结构typedef struct char filename20;

4、每一个函数的名字int length; 每一个函数的长度 int pos; 每一个函数的位置 Fun; 统计结构的声明typedef struct int comments; 纯注释的个数int comment; 混合注释个数int blank; 空行的个数Fun funMAXSIZE; 函数的属性int others; 除去函数中代码外其余的代码个数int funcount; 函数的个数Analy;2. 详细设计1).函数功能及声明BOOL StrEmpty(char *s) S 是不是空int Find(char *s1,char *s2)查找S1中是否有值为 S2的子串void Have

5、Line(FILE *fp,char *s) 重文件中获取一行char* IgnoreB(char *s) 截断一行的空字符int IsCom(char *s) 判断一行是不是注释BOOL IsBlank(char *s) 判断一行是不是空格BOOL IsFunB(char *s) 判断一行是否是函数的开头void PrintMax(Analy *An) 打印最大函数的信息void printR(int aver ,int comc,int blanks ) 打印代码风格级别void print(Analy *An) void checkfile(char *filename,int i) 检

6、测文件是否存在BOOL GetIn(int *n) 规范输入的数据,只能为数字void analy(char filenameCOUNTLEN,int n) 分析单个文件void savelog() 保存日志2)详细源代码 检测是否为空串BOOL StrEmpty(char *s) if(s0=0)return TRUE; return FALSE; 查看S1中是否有值为S2的子串,若有则返回第一个子串的位置,若无则返回-1 ;int Find(char *s1,char *s2)int i=0,j=0;if(strlen(s1) pos1 & posc j ? j : i;else if (

7、i=-1)i=j;else if (1=-1 & j=-1) return FALSE;if (i pos) return FALSE;s=&si;s=IgnoreB(s);pos2=Find(s,();if(*s=0 | *s=( |pos2 pos) return FALSE;return TRUE; 打印最大的函数属性 void PrintMax(Analy *An) FILE *fp;int i,j=0; int len;for(i=1;i funcount ;i+) if(An-funj.length funi.length) 找出最大的函数的位置j=i; if(An-funj.le

8、ngth funj.pos funj.length); printf(The length of lengthest function have %d lines 打印长度The pos of lengthest function is in %s the %dthlinen,An-funj.filename,An-funj.pos); 打印出函数所在的文件和位置 printf(The length of lengthest function have %d linesn,An-funj.length); 打印长度void printR(int aver ,int comc,int blanks ) 按代码级别判定标准输出分析结果int i;char Grade415=Excellent,Good,So-So,Bad; 定义四个级别段 判定代码的级别if (aver =

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

当前位置:首页 > 办公文档 > 其它办公文档

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