2016-BIT复试机试

本文介绍了一种算法,用于处理学生信息,包括姓名、成绩,并计算平均成绩及不及格科目数量,同时对输入的字符串进行处理,提取并标准化其中的数字。此算法能够有效处理大量数据,提供学生表现的综合分析。

1、输入学生信息,姓名 成绩(成绩的数目不一定)
输出每个学生的学号和平均成绩,以及不及格课程数超过2的学生,按不及格课程数从大到小排好序输出。

#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

typedef struct node
{
	string name;
	int grade[100];
	int unsix;
	double avg;
	int g;  //有g科
}student;
student stu[100];

bool cmp(student a,student b)
{
	return a.unsix>b.unsix;
}

int main()
{
	int i=0;
	int N=0;
	string ss[200];
	while(getline(cin,ss[N])&&ss[N]!="")//读取字符串
        N++;
	for(int i=0;i<N;i++)
	{
		string str=ss[i];
		int len=str.length();
		int have_name=0;  //是否读取过名字
		string temp;
		int g=0,k=0;
		int start=0;
		for(int j=0;j<len;j++)
		{
			if(have_name==0&&str[j]==' ')  //读取名字
			{
				stu[i].name=str.substr(start,k);
				k=0;
				temp="";
				start=j+1;
				have_name=1;
			}
			else if(have_name==1&&str[j]==' ') //读取分数
			{
				int gra=0;
				for(int l=0;l<k;l++)
				   	gra=gra*10+temp[l]-'0';
				stu[i].grade[g]=gra;
				k=0;
				temp="";
				g++;
			}
			if(str[j]!=' ')
			{
				temp[k]=str[j];
				k++;
			}
		    stu[i].g=g;
		}
		int gra=0;   //最后一科
		for(int l=0;l<k;l++)
			gra=gra*10+temp[l]-'0';
			stu[i].grade[g]=gra;
			stu[i].g++;

		for(int p=0;p<stu[i].g;p++) //计算平均成绩,不及格成绩数
		{
			stu[i].avg+=stu[i].grade[p];
			if(stu[i].grade[p]<60)
			  stu[i].unsix++;

		}
		stu[i].avg/=double(stu[i].g);
	}

	for(int i=0;i<N;i++)  //输出姓名+学生均绩
		cout<<stu[i].name<<" "<<stu[i].avg<<endl;

	sort(stu,stu+N,cmp); //按照不及格数目排序

	cout<<"不及格课程数超过2的学生:"<<endl;
	for(int i=0;i<N;i++)
	{
		if(stu[i].unsix>2)
		{
			cout<<stu[i].name;
			cout<<" "<<stu[i].unsix<<endl;  //输出不及格科数
		}
	}
	return 0;
}

2、输入字符串,输出字符串中包含的数字,比如 2.3ABC0-2.3  输出 2.3 0 -2.3。

注意一些特殊的情况如+004.500值为+4.5。

#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

int main()
{
	string str;
	cin>>str;
	string temp;
	int temp_len=0;
	int dot_flag=0;
	int ok=0;
	int len=str.length();
	
	for(int i=0;i<=len;i++)
	{
		if(i==len)
		{
			if(dot_flag==1)
				  while(temp[temp_len-1]=='0')
						temp_len--;
			for(int j=0;j<temp_len;j++)
			      cout<<temp[j];
			      if(temp_len==0)
			      cout<<"0";
			      cout<<endl;
		}
		else if(str[i]=='+'||str[i]=='-')
		{
			if(ok)
			{
				if(dot_flag==1)   //去掉小数点后面的不必要的0
				  while(temp[temp_len-1]=='0')
						temp_len--;
						
				for(int j=0;j<temp_len;j++)
			      cout<<temp[j];
			      cout<<" ";
			      ok=0;
			      dot_flag=0;
			}
			else
			cout<<"0 ";
			
			temp_len=1;
			temp[0]=str[i];
		}
		else if(str[i]>'0'&&str[i]<='9')
		{
			ok=1;
			temp[temp_len]=str[i];
			temp_len++;
		}
		else if(str[i]=='.')
		{
			if(temp_len==0||(temp_len!=0&&(temp[temp_len-1]=='+'||temp[temp_len-1]=='-')))
				{
					temp[temp_len]='0';
					temp_len++;
                }
                temp[temp_len]=str[i];
                temp_len++;
                dot_flag=1;
		}
		else if(str[i]=='0')
		{
			if(ok||str[i+1]=='.')
			{
				ok=1;
				temp[temp_len]=str[i];
			    temp_len++;
			}
		}
		else    //非数字类
		{
			if(ok)
			{
				if(dot_flag==1)
				  while(temp[temp_len-1]=='0')
						temp_len--;
				for(int j=0;j<temp_len;j++)
			      cout<<temp[j];
			      cout<<" ";
			      ok=0;
			      dot_flag=0;
			}
			temp_len=0;
		}
	}
	return 0;
}

 

 

 

 

智慧医药系统(smart-medicine)是一款采用SpringBoot架构构建的Java Web应用程序。其界面设计简洁而富有现代感,核心特色在于融合了当前前沿的生成式人工智能技术——具体接入了阿里云的通义千问大型语言模型,以此实现智能医疗咨询功能,从而增强系统的技术先进性与实用价值。该系统主要定位为医学知识查询与辅助学习平台,整体功能结构清晰、易于掌握,既适合编程初学者进行技术学习,也可作为院校课程设计或毕业项目的参考实现。 中医舌诊作为传统医学的重要诊断手段,依据舌象的颜色、形状及苔质等特征来辨析生理状况与病理变化。近来,随着计算科学的进步,人工智能技术逐步渗透到这一传统领域,形成了跨学科的研究与应用方向。所述的中医舌诊系统正是这一方向的实践产物,它运用AI算法对舌象进行自动化分析。系统以SpringBoot为基础框架,该框架依托Java语言,致力于简化Spring应用程序的初始化与开发流程,其突出优势在于能高效构建独立、可投入生产的应用,尤其契合微服务架构与云原生环境,大幅降低了开发者在配置方面的负担。 系统中整合的通义千问大语言模型属于生成式人工智能范畴,通过海量数据训练获得模拟人类语言的能力,可在限定领域内生成连贯文本,为用户提供近似专业医生的交互式咨询。该技术的引入有助于提升诊断过程的自动化水平与结果一致性。 在设计与体验层面,本系统强调逻辑明晰与操作简便,旨在降低用户的学习门槛,尤其适合中医知识的入门教学。整体交互模式接近百科全书式查询,功能模块精炼聚焦,因而非常适用于教育场景,例如学术项目展示或毕业设计答辩。通过直观的实践界面,使用者能够更深入地理解中医舌诊的理论与方法。 此外,系统界面遵循简约大气的设计原则,兼顾视觉美感与交互流畅性,以提升用户的专注度与使用意愿。结合AI的数据处理能力,系统可实现对舌象特征的快速提取与实时分析,这不仅为传统诊断方法增添了客观量化维度,也拓展了中医知识传播的途径。借助网络平台,该系统能够突破地域限制,使更多用户便捷地获取专业化的中医健康参考,从而推动传统医学在现代社会的应用与普及。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
【掺铒光纤放大器(EDFA)模型】掺铒光纤放大器(EDFA)分析模型的模拟研究(Matlab代码实现)内容概要:本文介绍了掺铒光纤放大器(EDFA)分析模型的模拟研究,并提供了基于Matlab的代码实现方案。通过对EDFA的工作原理、增益特性、噪声系数等关键性能指标进行数学建模与仿真分析,帮助研究人员深入理解其在光通信系统中的作用制。文档还列举了多个相关科研方向的技术支持内容,涵盖智能优化算法、路径规划、无人应用、通信与信号处理、电力系统管理等多个领域,展示了Matlab在科学研究与工程仿真中的广泛应用能力。此外,文中附带网盘链接,便于获取完整的代码资源与开发工具包。; 适合人群:具备一定光学通信或电子信息背景,熟悉Matlab编程,从事科研或工程仿真的研究生、高校教师及技术研发人员。; 使用场景及目标:①用于光通信系统中EDFA性能的理论分析与仿真验证;②支持科研人员快速构建和测EDFA模型,提升研究效率;③为教学实验、毕业设计及学术论文复现提供可靠的技术参考与代码基础。; 阅读建议:建议读者结合光通信基础知识,按照文档结构逐步运行并调Matlab代码,重点关注模型参数设置与仿真结果分析,同时可利用提供的网盘资源拓展学习其他相关课题,深化对系统级仿真的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值