题目L1-043
天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下S
键,程序开始计时;当读者还书时,管理员输入书号并按下E
键,程序结束计时。书号为不超过1000的正整数。当管理员将0作为书号输入时,表示一天工作结束,你的程序应输出当天的读者借书次数和平均阅读时间。
注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有S
没有E
,或者只有E
没有S
的纪录,系统应能自动忽略这种无效纪录。另外,题目保证书号是书的唯一标识,同一本书在任何时间区间内只可能被一位读者借阅。
输入格式:
输入在第一行给出一个正整数N(≤10),随后给出N天的纪录。每天的纪录由若干次借阅操作组成,每次操作占一行,格式为:
书号
([1, 1000]内的整数) 键值
(S
或E
) 发生时间
(hh:mm
,其中hh
是[0,23]内的整数,mm
是[0, 59]内整数)
每一天的纪录保证按时间递增的顺序给出。
输出格式:
对每天的纪录,在一行中输出当天的读者借书次数和平均阅读时间(以分钟为单位的精确到个位的整数时间)。
(已修改,成功AC)
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int main()
{
int n;
int p=0;
int timer[1001]={0},timer2[1001]={0};
int f[1001]={0},e[1001]={0},h[1001]={0};
cin>>n;
int sum=0,count=0;
int a,c,d,t,min,hour;
char b;
int i;
for(i=0;;i++)
{
scanf("%d %c %d:%d",&a,&b,&c,&d);
if(a!=0&&b=='S')
{
timer[a]=c;timer2[a]=d;
h[a]=1;
}
else if(a!=0&&b=='E'&&h[a]!=0)
{
count++;
min=d-timer2[a];
hour=abs(c-timer[a]);
t=hour*60+min;
sum=sum+t;
timer[a]=0;timer2[a]=0;
h[a]=0;
}
if(a==0)
{
f[p]=count;
e[p++]=sum;
sum=0;
count=0;
memset(h,0,sizeof(h));
}
if(p==n)
{
break;
}
}
for(i=0;i<n;i++)
{
if(f[i]!=0)
{
float m=(float)e[i]/f[i]+0.5;
e[i]=(int)m;
}
printf("%d %d\n",f[i],e[i]);
}
}
L1-048题目:
给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A有Ra行、Ca列,B有Rb行、Cb列,则只有Ca与Rb相等时,两个矩阵才能相乘。
输入格式:
输入先后给出两个矩阵A和B。对于每个矩阵,首先在一行中给出其行数R和列数C,随后R行,每行给出C个整数,以1个空格分隔,且行首尾没有多余的空格。输入保证两个矩阵的R和C都是正数,并且所有整数的绝对值不超过100。
输出格式:
若输入的两个矩阵的规模是匹配的,则按照输入的格式输出乘积矩阵AB,否则输出Error: Ca != Rb
,其中Ca
是A的列数,Rb
是B的行数。
#include<stdio.h>
int main()
{
int Ra,Ca,Rb,Cb,i,j,sum,t;
t=0;
scanf("%d%d",&Ra,&Ca);
int a[Ra][Ca];
for(i=0;i<Ra;i++)
{
for(j=0;j<Ca;j++)
{
scanf("%d", &a[i][j]);
}
}
scanf("%d%d",&Rb,&Cb);
int b[Rb][Cb];
for(i=0;i<Rb;i++)
{
for(j=0;j<Cb;j++)
{
scanf("%d",&b[i][j]);
}
}
if(Ca!=Rb)
printf("Error: %d != %d\n",Ca,Rb);
else
{
int c[Ra][Cb];
for(i=0;i<Ra;i++)
{
for(t=0;t<Cb;t++)
{
sum=0;
for(j=0;j<Ca;j++)
{
sum=sum+a[i][j]*b[j][t];
}
c[i][t]=sum;
}
}
printf("%d %d\n",Ra,Cb);
for(i=0;i<Ra;i++)
{
for(j=0;j<Cb;j++)
{
if(j==Cb-1)
printf("%d",c[i][j]);
else
printf("%d ",c[i][j]);
}
printf("\n");
}
}
return 0;
}