必威体育Betway必威体育官网
当前位置:首页 > IT技术

C语言 · 成绩查询系统

时间:2019-11-03 17:14:20来源:IT技术作者:seo实验室小编阅读:54次「手机版」
 

二级c成绩查询

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

成绩查询系统

分值: 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写了一个,仅供参考。

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

 1 #include<stdio.h>
 2 #include<vector>
 3 #include<string>
 4 #include<iOStream>
 5 #include<math.h>
 6 using namespace std;
 7 struct info{
 8     string name;
 9     int score;
10 }stu;
11 /*
12 定义find函数:
13     功能:在容器中按姓名查找是否有相同姓名的记录; 
14     参数:结构体类型的容器,字符串类型的姓名; 
15     返回值类型:指向某条数据指针。 
16 */
17 vector<info>::iterator find(vector<info>&stu,string name){
18     vector<info>::iterator it;//声明迭代器 
19     for(it=stu.begin();it!=stu.end();it++){
20         if(it->name==name)
21             break;
22     }
23     return it;//返回的是指向某条数据的指针 
24 }
25 int main(){
26     string sign,name;
27     int score;
28     vector<info> inf;//声明结构体类型的容器,用来存放数据 
29     cin>>sign;//录入操作符 
30     vector<info>::iterator it;//声明迭代器 
31     while(sign!="end"){
32         if(sign=="insert"){
33             cin>>stu.name>>stu.score;//录入 
34             it = find(inf,stu.name);//调用函数 
35             if(it==inf.end()){
36                 inf.push_back(stu);
37             }else if(it->score<stu.score){//若刚刚输入的成绩大于已存的成绩 
38                 inf.insert(it,stu);//存放分数高的记录 
39             }else{//没有找到,新存一条记录 
40                 inf.insert(it+1,stu);
41             }
42         }
43         else if(sign=="find"){
44             cin>>stu.name;//录入
45             it=find(inf,stu.name);//调用函数
46             cout<<it->score<<endl;
47         }
48         else if(sign=="all"){
49             for(it=inf.begin();it!=inf.end();it++){
50                 cout<<it->name<<" "<<it->score<<endl;
51             }
52         } 
53         cin>>sign;//执行完一遍操作,进入下一遍 
54     }
55     return 0;
56 }

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

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

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

 1 #include<map>
 2 #include<math.h>
 3 #include<iostream>
 4 using namespace std;
 5 int main(){
 6     map<string,int> m;
 7     string sign,name;
 8     int score;
 9     while(1){
10         cin>>sign;
11         if(sign=="end"){
12             break;
13         }
14         else if(sign=="insert"){
15             cin>>name>>score;
16             if(score>m[name]){
17                 m[name] = score;
18             }
19         }
20         else if(sign=="find"){
21             cin>>name;
22             if(m[name]==0){
23                 cout<<"-1"<<endl;
24             }else{
25                 cout<<m[name]<<endl;
26             }
27         }
28     }
29     return 0;
30 }

文章最后发布于: 2017-04-03 14:50:00

相关阅读

NEO & Onchain 创始人达鸿飞:构建可合规的区块链

3月14日,由亚太区块链协会、TOKENSKY组委会及CSDN等联合主办的”2018 TOKENSKY区块链大会”于韩国首尔希尔顿大酒店开幕。此次会议

ASP.NET --自定义错误信息显示(customErrors, compilati

   一次在将aps.net MVC框架的一个应用解决方案publish到微软azure上时,新加页面一直请求信息报错(通用错误信息),在本地又运行正常

Fusioncharts常用参数设置

1.1 <chart>参数设置: 图表和轴的标题* caption=”String” : 图表上方的标题* subCaption=”String” : 图表上方的副标

ABAP 新特性 - CORRESPONDING

一、工作区Work Area ​DATA: gt_out TYPE STANDARD TABLE OF zssd005_out_1, gs_out TYPE zssd005_out_1. ******

PHP function_exists的一个坑

先来看一段js代码a(); function a(){} 这是要报错的,会报a函数为undefined 我记忆中js是不允许的,但刚才试了几个浏览器都是可以的

分享到:

栏目导航

推荐阅读

热门阅读