📄 3511.c
字号:
# include "stdio.h"
# include "string.h"
main()
{ void print();
void outputs(int a,int b,int c,int d,int e,float f,char gcode);
float average(int *funp,int functionxin);
int longest(int *funweip,int functionxin);
char pancode(float averfun);
void output(int max,int *funp,int *funweip);
char code[30000],stack[100];
int codeline=0,commentline=0,whiteline=0,totle=0,function=0;
int fun[100]={0},i,j=0,flag=0,flag2=0,funwei[100]={0};
int max;
float averfun;
char gcode;
code[0]=-1;
stack[0]='#';
fun[0]=-1;
print();
for(i=1;i<30000&&flag==0;i++)
{code[i]=getch();
if(code[i-1]=='/'&&code[i]=='/')commentline++;//注释行自加
if(code[i]==13)
{ totle++; //总行数自加
if(code[i-1]==13)whiteline++; //空格行数自加
}
if(code[i]=='{')
{ stack[++j]=code[i];
flag2=1;
}
if(flag2==1&&code[i-1]==13)
if(code[i-2]!=13&&code[i-1]!='/'&&code[i]!='/'||code[i-1]!=13&&code[i]!=13)
{fun[function+1]++;
if(funwei[function+1]==0)funwei[function+1]=totle;}
if(code[i]=='}')
{j--;if(stack[j]=='#') function++;flag2=0;}
if(code[i]=='#')flag=1;
if(code[i]==13)printf("\n");
else
putchar(code[i]);
}
codeline=totle-commentline;
codeline-=whiteline;
averfun=average(fun,function);
max=longest(funwei,function);
gcode=pancode(averfun);
outputs(codeline,commentline,whiteline,totle,function,averfun,gcode);
output(max,fun,funwei);
}
void print()
{printf(" ************************************************************\n");
printf(" 程序分析\n ");
printf(" ************************************************************\n");
printf(" 输入要求:\n");
printf(" 1) 注释行和代码行不能在同一行,注释行以‘//‘开头。\n");
printf(" 2) 每行最多只有一个“{”,“}”,“switch”和“struct”.\n");
printf(" 3) 程序以‘#’结束。\n");
printf(" 请输入程序:\n");
}
float average(int *funp,int functionxin)
{int i;float average=0;
for(i=1;i<=functionxin;i++)
average=average+funp[i];
average=average/functionxin;
return average;
}
int longest(int *funweip,int functionxin)
{int i,max=0;
for(i=0;i<functionxin;i++)
{if(funweip[i+1]>funweip[max])
max=i+1;}
return max;
}
char pancode(float averfun)
{char gcode;int averfunc;
averfunc=(int)(averfun);
if(averfunc>=10&&averfunc<=15)gcode='A';
if(averfunc>=8&&averfunc<=9||averfunc>=16&&averfunc<=20)
gcode='B';
if(averfunc>=5&&averfunc<=7||averfunc>=21&&averfunc<=24)gcode='C';
else gcode='D';
return gcode;
}
void outputs(int a,int b,int c,int d,int e,float f,char gcode)
{char pan(int av);
float avra,avrb,avrc;
int avera,averb,averc;
float fa,fb,fc,fd;
char gcom,gwhite;
fa=(float)(a);
fb=(float)(b);
fc=(float)(c);
fd=(float)(d);
avra=fa/fd; avera=(int)(avra*100);
avrb=fb/fd; averb=(int)(avrb*100);
avrc=fc/fd; averc=(int)(avrc*100);
gcom=pan(averb);
gwhite=pan(averc);
printf("\n The results of analysing program file :\n");
printf(" Lines of code:%d\n",a);
printf(" Lines of comments:%d\n",b);
printf(" Blank lines:%d\n\n",c);
printf(" Code Comments Space\n");
printf(" ==== ======== =====\n");
printf(" %d%% %d%% %d%%\n\n",avera,averb,averc);
printf(" The program includes %d functions.\n",e);
printf(" The average length of a section of code is %.1f lines.\n\n",f);
printf(" Grade %c: Excellent routine size style.\n",gcode);
printf(" Grade %c: Excellent commenting style.\n",gcom);
printf(" Grade %c: Excellent white space style.\n\n",gwhite);
}
char pan(int av)
{char gpan;
if(av>=15&&av<=25)gpan='A';
if(av>=10&&av<=14||av>=26&&av<=30)
gpan='B';
if(av>=5&&av<=9||av>=31&&av<=35)gpan='C';
else gpan='D';
return gpan;
}
void output(int max,int *funp,int *funweip)
{
printf(" The longest function is %d lines.\n",funp[max]);
printf(" It is in the line %d of the code.\n",funweip[max]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -