欢迎来到第壹文秘! | 帮助中心 分享价值,成长自我!
第壹文秘
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 第壹文秘 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    统计程序中各种代码行数的课程设计.docx

    • 资源ID:1278056       资源大小:51.28KB        全文页数:15页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    统计程序中各种代码行数的课程设计.docx

    希求分析1)问题描述读入一个C程序,统计程序中代码、注择和空行数以及函数的个数和平均行数,并利用统计信息分析评价该程序风格,2)根本要求如下,“),把C程序文件按字符顺序读入源程序:(2)、边读入程序,边识别统计代码行、注释行和空行,同时还要识别函数的开始和结束,以便统计其个数及平均行数。(3)、程序风格分为代码注粹和空行三方面,每方面分A、B、C,D四个等级,ABCD代码(曲数的平均长度)10-15行87162057或2124<5*>24注郭(占总行数比例)15*25%10142630%59或3135%<5%>35%空行(占总行数比率)15-25%HrI4或2630%59或3135%<5%<>35%3)人出范例以下是对程序文件ProgAna1.C分析的输出结果例如:Theresu1.tsofana1.ysingprogramfi1.e"ProgAna1.C":1.inesofcode:1801.inesofcomments:63B1.ank1.ines:52CodeCommentsSpace61%21%18%Theprograminc1.udes9functions.Theaverage1.engthofasectionofcodeis12.91.ines.GradeA:Exce1.1.entroutinesizesty1.e.GradeA:Exce1.1.entcommentingsty1.e.GradeA:Exce1.1.entwhitespacesty1.e.1 .概要设计i)头文件引用与宏定义:Sinc1.ude<stdio.h>WincIude<std1.ib.h>«inc1.ude<strin.h>defineTRIE1SdefineFA1.SE0»defineK)01.int«define阳XS1.ZE5000CdcfineCOCNT20Sdefine1.EN202).所用存储结构函数腕性结构/可以统计的最大的文件个数/文件名的最大长度IyPedefstruct1charfi1.ename20;年一个函数的名字int1.ength:每一个函数的长度i11tpos;每一个函数的位置)Fun:统计结构的声明typedofstructintcomments:/纯注样的个数iniCUmBcut;混合注择个数intb1.ank:空行的个数FUnfunMAXSIZE;函数的M性intothers;除去函数中代码外其余的代码个数intfuncount:/函数的个数Ann1.y;2 .惮钿设计。的数功能及声明BOO1.Str1.pty(char*s)S是不是空intFind(char*s1.,char*s2)SiS1.中是否有但为S2的子申voidHave1.ine(FI1.E*fp,char*s)重文件中获取一行char*IgnOreBchar*S)截断一行的空字符intIsCom(char*s)/判断一行是不是注择B(X)1.IsB1.ank(char*s)/判断一行是不是空格Boa1.SFUnB(Char*s)判断一行是否是函数的开头voidPrintMaX(AnaIy*An)/打印最大函数的信息voidprintR(intaver,intcoc,intb1.anks)/打印代码风格级别voidprint(Ana1.y*An)/voidcheckfi1.e(charfi1.e11ame.inti)检测文件是否存在Boo1.Get1.n(int*n)标准输入的数据.只能为数字voidanaIy(charfi1.enaeCOUNTj1.EN,intn)分析单个文件voidSaYeIon。保存日志2)惮细源代码“检测是否为空申BOO1.StrEepty(char*s)(if(s0=,0")returnTRUE:returnFA1.SE:查看S1.中是否有值为S2的子:也假设有那么返回第一个子串的位置,假设无那么返回-1:intFind(char*s1.,char*s2)(inti=O,j=O;if(str1.en(si)<str1.en(s2)return-1:whi1.e(sii!=>0,)(if(s1.i=s2j)(i+;J÷+:if(s2j='O')returni-j;continue;i:j=O:return1;读取文件中的一行字符voidIIave1.ine(FI1.E*fp,char*s)(whiIe(Ifeof(Cp)*S=fgetc(fp);if(*s='n,)(假设果是一行的结尾那么表示取完了一行»s='0,:return;S+;*s=,0,;)忽略一行字符开头的空格和tab,返回截断后上的串指针char*IgnoreB(char*s)(whi1.e(»s=,*s='')s+;returns:/判断一行字符是不是注择intIsCom(char*s)intpose,pos1.,pos2:s=IgnoreB(三);pose=Find(S1.VZr);if(pose0)此行仅有注择,无代码;return1;if(pose=-1)return0:pos1.=Find(SO;pos2二Find(spos1.÷1.,*);if(pose>POSI&apose<pos2)returnO;return2;判断-行字符是不是空白BOO1.IsB1.ank(char*s)S=IgnorcB(三);if(s=,0,)returnTRUE:returnFA1.SE:B(X)1.IsPunB(char*s)inti,j1.pos,os2:有分号.ifwhi1.efor的不是函数开头if(Find(st*;*)!=-1Find(s,*if*)!=-1Find(S,"for")!=-IFind(s.*whi1.e*)!=T1.1.FindQ"switch")!=-1)returnFA1.SE:没有小括号的不是函数开头if(pos=Find(s,*(*)-1)returnFA1.SE:s=I11oreB(三):i=Find(s,*);j=Find(S,"*):if(i!=-18Aj!=-Di=i>j?j:i;e1.seif(i=-1)e1.seif(1=-1i&j="I)returnFA1.SE:if(i>pos)returnFA1.SE:s=isi;s=IgnoreB(三);pos2=Find(s,-(,):if(*s=,0,*s='('ipos2>os)returnFA1.SE:returnTREE:打印股大的函数属性voidPrintMax(na1.y*An)(/FI1.Efp:i11ti,j=0;int1.en:for(i=1.;i<An->funcount:i+)if(An->funj.1.ength<n->funi.1.ength)/找出山大的函数的位置j=i;if(An->funj.1.ength<0An->funj.pos<0)Prin1.frtherearenotanyfunctioninthefi1.es")打印出函数所在的文件和位置return:printf(The1.engthofIengthestfunctionhave%d1.inesnAn->funj.1.ength);打印长度Printf("TheposofIengthestfunctionisin%sthedthIinen*,n->funj.fi1.ename,An->funj.pos);打印出函数所在的文件和位置PrintfrThe1.engthofIengthestfunctionhave%d1.inesnAn->funj.1.ength);/打印长度voidPrintR(intaver,intcome,intb1.anks)按代码级别判定标i输出分析结果inti:charGrade415=Exce1.1.ent","Good","So-So","Bad"/定义四个级别段判定代码的级别if(aver<=15&&aver>=10)i=O;e1.seif(aver<=2Ot&aver>=16)aver<=9aver>=8)i=1;e1.seif(aver<=7&kaver>=5)!aver<=2-1&&aver>=21)i=2;e1.seif(aver<5)I(aver>24)i=3:printf(Grade%sroutinecodeS1.yIen”,GradeiD;判定注糅的级别if(comc<=25&&co<nc>=15)i=0;e1.seif(cc<nc<=14co三c>=10)come<=30&&come>=26)i=1:e1.seif(come<=9&&come>=5)ico三c<=35&&come>=31)i=2;e1.seif(coac<5)I(ComC>35)i=3:printf(,Grade%sroutineCOimenIingsty1.en*,Gradei):判定空行的级别ifb1.anks<=25k&b1.anks>=15)i=O;e1.seif<(b1.anks<=14&&b1.anks>=10)Ib1.anks<=30&&b1.anks>=26)i=1;e1.seif(b1.anks<=9&&b1.anks>=5)b1.anks<=35&&b1.anks>=31.)i=2;e1.seif(b1.anks<5)(b1.anks>35)i=3;printf(*Grade%swhitespacesty1.en*,Gradei):打印输出结果voidprint(Ana1.y*n)(intsum=O,funcode=O:inii,come,b1.anks,aver,code;for(i-0;i<An->funcount:i»)求函数的代码总数funcode+=An->funi.1.ength;求所有的代码总数sum÷=An->b1.ank;sum+=A11->co<nfDents;sum-n->come11t:sum+=n->others;sum+=funcode:if(su三-0)/防止除数SUfn为0sum=1;if(An->funcount=0)防止除数为0aver=0:e1.seaver=funcodeAn->funcount;ComC=(An->co11ncn1.s+Ar->co11mcnt)100sum:b1.anks-(

    注意事项

    本文(统计程序中各种代码行数的课程设计.docx)为本站会员(p**)主动上传,第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第壹文秘(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 1wenmi网站版权所有

    经营许可证编号:宁ICP备2022001189号-1

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!

    收起
    展开