抱歉,昨天忘了往博客上更新,今天补上。

成绩查询系统

分值: 21

数学老师小y 想写一个成绩查询系统,包含如下指令:

  1. insert [name] [score],向系统中插入一条信息,表示名字为name的学生的数学成绩为score。
  2. find [name],表示查找名字为name的学生的数学成绩。

注意有些同学可能会为了刷分多次选课,查询的时候给出最大成绩即可。学生的名字是由小写字母组成。成绩是一个 0…100 的整数。

老师找到你,想你帮他完成这个系统。

输入格式

输入若干行,每行都是insert [name] [score]或者find [name]的形式,或一行end表示输入结束。输入行数不大于 1000,每个学生名字长度不大于 20 个字符。

输出格式

对于每个查询,输出查询的学生的最高成绩,如果系统中不存在该学生,输出 −1。

样例输入

insert zhangsan 90

insert lisi 78

insert xiaoming 86

find xiaoming

find jack

end

样例输出

86

-1

作者注释:本人能力有限,用纯C写的有bug,整std写了一个,仅供参考。

对了,代码功能添加了一个查询所有记录的功能,删掉即符合题意了。

 #include<stdio.h>
#include<vector>
#include<string>
#include<iostream>
#include<math.h>
using namespace std;
struct info{
string name;
int score;
}stu;
/*
定义find函数:
功能:在容器中按姓名查找是否有相同姓名的记录;
参数:结构体类型的容器,字符串类型的姓名;
返回值类型:指向某条数据的指针。
*/
vector<info>::iterator find(vector<info>&stu,string name){
vector<info>::iterator it;//声明迭代器
for(it=stu.begin();it!=stu.end();it++){
if(it->name==name)
break;
}
return it;//返回的是指向某条数据的指针
}
int main(){
string sign,name;
int score;
vector<info> inf;//声明结构体类型的容器,用来存放数据
cin>>sign;//录入操作符
vector<info>::iterator it;//声明迭代器
while(sign!="end"){
if(sign=="insert"){
cin>>stu.name>>stu.score;//录入
it = find(inf,stu.name);//调用函数
if(it==inf.end()){
inf.push_back(stu);
}else if(it->score<stu.score){//若刚刚输入的成绩大于已存的成绩
inf.insert(it,stu);//存放分数高的记录
}else{//没有找到,新存一条记录
inf.insert(it+,stu);
}
}
else if(sign=="find"){
cin>>stu.name;//录入
it=find(inf,stu.name);//调用函数
cout<<it->score<<endl;
}
else if(sign=="all"){
for(it=inf.begin();it!=inf.end();it++){
cout<<it->name<<" "<<it->score<<endl;
}
}
cin>>sign;//执行完一遍操作,进入下一遍
}
return ;
}

此题学到一个处理出入输出的技巧:用while来做判断。

如题中while(sign!="end"){······}。

补:今天有人提到此题,用map写:

 #include<map>
#include<math.h>
#include<iostream>
using namespace std;
int main(){
map<string,int> m;
string sign,name;
int score;
while(){
cin>>sign;
if(sign=="end"){
break;
}
else if(sign=="insert"){
cin>>name>>score;
if(score>m[name]){
m[name] = score;
}
}
else if(sign=="find"){
cin>>name;
if(m[name]==){
cout<<"-1"<<endl;
}else{
cout<<m[name]<<endl;
}
}
}
return ;
}

C语言 · 成绩查询系统的更多相关文章

  1. C语言程序设计#成绩查询系统

    学生成绩管理系统 [注释]:请点赞,好人一生平[yi]安[wo]. #codeblocks程序下编写 #include<stdio.h>#include<stdlib.h>// ...

  2. 暑假闲着没事第一弹:基于Django的长江大学教务处成绩查询系统

    本篇文章涉及到的知识点有:Python爬虫,MySQL数据库,html/css/js基础,selenium和phantomjs基础,MVC设计模式,ORM(对象关系映射)框架,django框架(Pyt ...

  3. C语言身份证信息查询系统(修改版)

    很久以前写了一个<C语言身份证信息查询系统>,如果你点击链接进去看了. 估计也会被我那磅礴大气的代码震惊到的,最近复习/学习文件操作,把代码改了改,算是对以前还不会文件操作的时候的愿望,哈 ...

  4. C语言-用函数实现社保工资查询系统

    需求: 1.有登陆操作,超过三次需重新打开登录 2.查询五险一金.税前税后工资计算,个人与单位应缴明细 3.输入税后工资和税前工资都可查询 4.退出有询问确认操作 代码如下; #include< ...

  5. 用excel打造报表查询系统

    网络数据库以及ERP在中小型企业中日益风行,虽然ERP功能强大,但有的ERP报表系统中规范的报表较少,主要提供二次开发接口或通过如CRYSTALREPORT等其他报表工具进行管理,其实我们可以使用Ex ...

  6. 【百度地图API】建立全国银行位置查询系统(二)——怎样为地图添加控件

    原文:[百度地图API]建立全国银行位置查询系统(二)--怎样为地图添加控件 <摘要>你将在第二章中学会以下知识: 使用手写代码的利器——notepad++: 如何为地图添加控件——鱼骨. ...

  7. Android查询系统的音频(音乐播放器的核心)

    //查询系统的音频库 public static List<MusicBean> getMusicInfo(Context context){ List<MusicBean> ...

  8. PHP中CURL技术模拟登陆抓取网站信息,用与微信公众平台成绩查询

    伴随微信的红火,微信公众平台成为许多开发者的下一个目标.笔者本身对于这种新鲜事物没有如此多的吸引力.但是最近有朋友帮忙开发微信公众平台中一个成绩查询的功能.于是便在空余时间研究了一番. 主要的实现步骤 ...

  9. 【云图】如何制作全国KTV查询系统?

    原文:[云图]如何制作全国KTV查询系统? 摘要:本文以[唱吧]531麦霸音乐节为案例,详细解读了如何导入自有数据到高德云图,并进行检索和展示.最后,调起高德mobile地图来进行路线规划和周边查询. ...

随机推荐

  1. golang 学习 ---- channel

    把一个loop放在一个goroutine里跑,我们可以使用关键字go来定义并启动一个goroutine: package main import "fmt" func loop() ...

  2. mmap映射文件至内存( 实现 共享内存 与 文件的另类访问 )

    Linux提供了内存映射函数mmap, 它把文件内容映射到一段内存上(准确说是虚拟内存上), 通过对这段内存的读取和修改, 实现对文件的读取和修改, 先来看一下mmap的函数声明: 头文件: < ...

  3. Java 内存溢出思维导图

    文 by / 林本托 Tips 做一个终身学习的人. 在 Java 内存中,只有一个区域不会发生 OOM 异常,那就是程序计数器内存.下面的思维导图记录了每个内存区域发生内存异常的条件和基本的解决思路 ...

  4. jQuery $.ajax 参数说明及调用注意事项

    $.ajax参数设置 备注:data.contentType.dataType属性值很重要!!! async 类型:Boolean 默认值: true.默认设置下,所有请求均为异步请求.如果需要发送同 ...

  5. App开发准备

    一. Android开发 二. IOS开发 1. 准备苹果电脑 Mac pro 一般比较贵,很少人或公司使用 替代的产品为 iMac 或 Mac mini 中配8G内存版 2. 准备苹果开发者账户,才 ...

  6. [转]使用spring中的@Transactional注解时,可能需要注意的地方

    前情提要 在编写业务层方法时,会遇到很多需要事务提交的操作,spring框架为我们提供很方便的做法,就是在需要事务提交的方法上添加@Transactional注解,比起我们自己开启事务.提交以及控制回 ...

  7. Android studio界面相关设置

    用惯了emacs的操作方式,每当使用一款新的编辑器的时候,第一个想到的就是这个工具有没有emacs的快捷键,Android studio也是一样的. 1. Android studio设置emacs的 ...

  8. Elastalert 监控

    1.logstash 做监控的优劣 适合match-then-alert 的方式 logstash-filter-metric logstash-input-http_poller 无状态.进程间数据 ...

  9. The superclass "javax.servlet.http.HttpServlet" was not found 问题解决

    项目中报" The superclass "javax.servlet.http.HttpServlet" was not found "这个错误,是因为缺少t ...

  10. Android 调试利器:Stetho + Chrome

    简介 Stetho 由 Facebook 开发的一款查看 Android 数据库.SharePreference.网络拦截器的利器,通过与 Chrome 的配合使用,使 Android App 开发过 ...