⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3511.c

📁 程序分析
💻 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 + -