C文件的“函数个数:函数平均行数: 注释 空行:代码行数判断

#define _CRT_SECURE_NO_WARNINGS // 新版本提示要用安全函数,此处添加宏_CRT_SECURE_NO_WARNINGS 屏蔽告警 
#define MAX_LINE 1000
#include<bits/stdc++.h>
using namespace std;

int konGepanduan(char buf[],int len){ //空行判断 
	for(int i=0;i<len;i++){
       	if(buf[i]!=10&&buf[i]!=32){
//       		 cout<<(int)buf[i]<<"   "<<i; 
       		return 0; 
		}
	}
	
	return 1; 
}

int zhuShi(char buf[],int len){ //判断注释
 	for(int i=0;i<len-1;i++){
       	if(buf[i]=='/'&&buf[i+1]=='/'){
       	
       		return 1; 
		}
	}
	
	return 0; 
 }
 
 int zuoKH=0; //左括号 
 int hansu=0; //函数数量 
 bool bol=false; 
 int hanShuHS[100]; //统计每一个函数的大小 
 int hs1; //统计每一个多少行 
 void hanShu(char buf[],int len){
 	for(int i=0;i<len-1;i++){
       	if(buf[i]=='{'){
       	   zuoKH++;
       	   
       	 hs1++; //统计函数有多少行 
		  
		   bol=true; 
		}
		if(buf[i]=='}'){
		   zuoKH--; 
		   
			   if(zuoKH==0&&bol==true){
			      hansu++;
			      hanShuHS[hansu]=hs1; //统计行数 
			      bol=false; 
			   } 
		}
		 
		
	}
	

 } 



int main()
{
	char buf[MAX_LINE];  /*缓冲区*/
	FILE* fp;            /*文件指针*/
	int len;             /*行字符个数*/
	
	string file;
	cout<<"请输入文件的绝对路径:"; 
	cin>>file;
	
	if ((fp = fopen(file.c_str(), "r")) == NULL)
	{
		perror("fail to read");
		exit(1);
	}
	
	
	int sum=0; 
	double konGe=0; //判断空格 
	double shuzhi=0;
	
	while (fgets(buf, MAX_LINE, fp) != NULL)
	{
		len = strlen(buf);
		printf("%s", buf);

     

       if(konGepanduan(buf,len)==1){ //空格行判断 
       	konGe++; 
	}
	if(zhuShi(buf,len)==1){
	shuzhi++;
	cout<<"注释加加";	
	} 
	 
       
          hanShu(buf,len); //执行计算函数有多少个 
	
	
          sum++; //行数加加 
	}
	
	 int tonJi; 
	 for(int i=1;i<hansu;i++){ //平均函数统计 
	 tonJi+=hanShuHS[i]; 
//	 	cout<<hanShuHS[i]<<endl;
	 }
	 
	 
	int pjs=tonJi/(hansu-1);  //平均数
	double zs=shuzhi/sum*100; //注释总比列
	double kg=konGe/sum*100; //空格总比列 
	
      cout<<endl;
	if(pjs>=10&&pjs<=15){
		cout<<"代码(函数平均长度):A"; 
	}else if(pjs>=8&&pjs<=9||pjs>=15&&pjs<=20){
		cout<<"代码(函数平均长度):B" ; 
	}else if(pjs>=5&&pjs<=7||pjs>=21&&pjs<=24){
		cout<<"代码(函数平均长度):C"; 
	}else if(pjs<5||pjs>24){
		cout<<"代码(函数平均长度):D"; 
	}
	cout<<endl; 
	
	if(shuzhi>=15&&zs<=25.0){
		cout<<"注释(总比例):A"; 
	}else if(shuzhi>10&&shuzhi<14||zs<26.0&&zs<30.0){
		cout<<"注释(总比例):B"; 
	}else if(shuzhi>5&&shuzhi<9||zs<31.0&&zs<35.0){
		cout<<"注释(总比例):C"; 
	}
	else if(zs<5.0||zs<35.0){
		cout<<"注释(总比例):D"; 
	}
	cout<<endl; 
	
	if(konGe>=15&&zs<=25.0){
		cout<<"空格(总比例):A"; 
	}else if(konGe>10&&konGe<14||kg<26.0&&kg<30.0){
		cout<<"空格(总比例):B"; 
	}else if(konGe>5&&konGe<9||kg<31.0&&kg<35.0){
		cout<<"空格(总比例):C"; 
	}
	else if(kg<5.0||kg<35.0){
		cout<<"空格(总比例):D"; 
	}    
	cout<<endl; 
	
	
	
	
	
	cout<<endl<<"函数个数:"<<hansu-1<<"  函数平均行数:"<<pjs<<"  注释:"<<shuzhi<<"  空行:"<<konGe<<"  代码行数:"<<sum;
//	cout<<endl<<zs<<"  "<<kg; 
	
	return 0;
}

C文件的"函数个数:函数平均行数: 注释 空行:代码行数判断

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用以下代码来统计 Python 源代码文件代码行数,去除注释空行: ```python import os def count_code_lines(file_path): lines = 0 with open(file_path, 'r') as f: is_comment = False for line in f: line = line.strip() if line.startswith('"""') or line.startswith("'''"): is_comment = not is_comment elif is_comment or line.startswith('#') or not line: continue else: lines += 1 return lines # 指定目录 dir_path = 'path/to/directory' # 遍历目录下所有 py 文件并统计代码行数 total_lines = 0 for root, dirs, files in os.walk(dir_path): for file in files: if file.endswith('.py'): file_path = os.path.join(root, file) lines = count_code_lines(file_path) total_lines += lines print(f'{file_path} : {lines}') print(f'Total lines of code: {total_lines}') ``` 代码解释: 1. 定义一个函数 `count_code_lines`,输入为文件路径,输出为该文件代码行数。 2. 在 `count_code_lines` 函数,使用 `with open` 打开文件,并遍历文件的每一。 3. 使用一个布尔变量 `is_comment` 来记录当前是否在注释,如果在注释,则跳过当前。 4. 使用 `strip` 方法去除每开头和结尾的空格和换符。 5. 判断当前是否是注释空行,如果是,则跳过当前,否则代码行数加一。 6. 在主程序,使用 `os.walk` 遍历指定目录下的所有文件和子目录。 7. 对于每个以 `.py` 结尾的文件,调用 `count_code_lines` 函数来统计代码行数,并累加到总行数。 8. 输出每个文件代码行数和总行数

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游迹AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值