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

成绩查询系统

分值: 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学习笔记 --switch

    switch的例子: switch coinflip() { case "heads": heads++ case "tails": tails++ defau ...

  2. 步进电机驱动器 和H桥

    http://bbs.eeworld.com.cn/thread-489952-1-1.html

  3. MongoDB常用操作一查询find方法(转)

    来:http://blog.csdn.net/wangli61289/article/details/40623097 https://docs.mongodb.org/manual/referenc ...

  4. JS中getElementByID,getElementsByName,getElementsByTagName的区别

    <input type="text" name="mynumber" id="mynum1" value="" / ...

  5. CSS边框闪烁呼吸样式

    <html> <body> <head> .arrow_box{animation: glow 800ms ease-out infinite alternate; ...

  6. Word 2010之简单图文混排

    所谓图文混排,就是指将图片与文本内容进行一定规律的排列,以让文档更加漂亮. 下面的示范是一个简单的将两副照片混排到文字当中的(图片与文本内容无关,仅供演示). 1. 打开Word,输入文本内容: 2. ...

  7. 设计模式-观察者模式(Observer Pattern)

    观察者模式(Observer Pattern):定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己. 观察者 ...

  8. 腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动

    在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH ...

  9. 深入理解Linux内核-进程地址空间

    给内核分配内存和给用户态进程分配内存是有区别的:1.内核的优先级最高,如果某个内核函数请求动态内存,不会被延时2.内核信任自己,不必保护措施3.用户态进程对动态内存的请求被认为不是紧迫的,总是被尽量推 ...

  10. 每日英语:Patent Wars Erupt Again in Tech Sector

    The long-running patent war among the technology industry's heavyweights just grew a whole lot bigge ...