7-1 寻找250


对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。

输入格式:

输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”。

输出格式:

在一行中输出第一次出现的“250”是对方扔过来的第几个数字(计数从1开始)。题目保证输出的数字在整型范围内。

输入样例:

888 666 123 -233 250 13 250 -222

输出样例:

5
  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. int count=0;
  5. int a=0;
  6. while(a!=250){
  7. cin>>a;
  8. count++;
  9. }cout<<count;
  10. return 0;
  11. }

 

这个题目 很简单 ,直接读取,读了输出就好~

7-2 日期格式化

世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。

输入格式:

输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。

输出格式:

在一行中按照“yyyy-mm-dd”的格式给出年、月、日。

输入样例:

03-15-2017

输出样例:

2017-03-15

作者: 陈越

单位: 浙江大学

时间限制: 400 ms

内存限制: 64 MB

 

	
  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. int a,b,c;
  5. scanf("%d-%d-%d",&a,&b,&c);
  6. printf("%04d-%02d-%02d",c,a,b);
  7. return 0;
  8. }

 

这道题也不算难,分类读入年月日,按顺序输出就好。

7-3 阅览室

天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下S键,程序开始计时;当读者还书时,管理员输入书号并按下E键,程序结束计时。书号为不超过1000的正整数。当管理员将0作为书号输入时,表示一天工作结束,你的程序应输出当天的读者借书次数和平均阅读时间。

注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有S没有E,或者只有E没有S的纪录,系统应能自动忽略这种无效纪录。另外,题目保证书号是书的唯一标识,同一本书在任何时间区间内只可能被一位读者借阅。

输入格式:

输入在第一行给出一个正整数N(≤10),随后给出N天的纪录。每天的纪录由若干次借阅操作组成,每次操作占一行,格式为:

书号([1, 1000]内的整数) 键值(S或E) 发生时间(hh:mm,其中hh是[0,23]内的整数,mm是[0, 59]内整数)

每一天的纪录保证按时间递增的顺序给出。

输出格式:

对每天的纪录,在一行中输出当天的读者借书次数和平均阅读时间(以分钟为单位的精确到个位的整数时间)。

输入样例:

	
  1. 3
  2. 1 S 08:10
  3. 2 S 08:35
  4. 1 E 10:00
  5. 2 E 13:16
  6. 0 S 17:00
  7. 0 S 17:00
  8. 3 E 08:10
  9. 1 S 08:20
  10. 2 S 09:00
  11. 1 E 09:20
  12. 0 E 17:00

输出样例:

	
  1. 2 196
  2. 0 0
  3. 1 60
	
  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4.     int n;
  5.     cin>>n;
  6.     for(int i=0;i<n;i++){
  7.         int count=0,time=0;
  8.         int id=1;
  9.         string s;
  10.         int a,b;
  11.         int num[1005]{0};
  12.         int sent[1005]{0};
  13.         while(id!=0){
  14.             cin>>id>>s;
  15.             scanf("%d:%d",&a,&b);
  16.             int t=a*60+b;
  17.             if(s[0]=='S'){
  18. sent[id]=1;
  19.                 num[id]=t;
  20.             }else{
  21.                 if(sent[id]==1){
  22.                     count++;
  23.                     time+=(t-num[id]);
  24.                     num[id]=0;
  25. sent[id]=0;
  26.                 }
  27.             }
  28.         }
  29.             double tt=time*1.0;
  30.             if(count>1){
  31.                 tt=(time*1.0)/count;
  32.             }printf("%d %d\n",count,(int)(tt+0.5));        
  33.     }
  34.     return 0;
  35. }

 

这道题做过之前,现在再做有了思路但是代码敲起来 还是出现了问题。
具体问题就是 不用一个额外的数组判断 书籍是否借出会爆一个测试点,直接用存储时间的数组存储时间 会错误,目前仍然没有弄清问题原因
解决办法已经想出来了,就是 创建两个数组 一个存储借书时间,一个布尔类型 存储状态,操作前都要先判断状态。
输出的时候注意 四舍五入输出 和避免出现除零小错误。

今天是训练营的打卡第一天,寒假不要忘了学习哈~~~~~。