7-1 12-24小时制 (15 分)
编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。
输入格式:
输入在一行中给出带有中间的:
符号(半角的冒号)的24小时制的时间,如12:34
表示12点34分。当小时或分钟数小于10时,均没有前导的零,如5:6
表示5点零6分。
提示:在scanf
的格式字符串中加入:
,让scanf
来处理这个冒号。
输出格式:
在一行中输出这个时间对应的12小时制的时间,数字部分格式与输入的相同,然后跟上空格,再跟上表示上午的字符串AM
或表示下午的字符串PM
。如5:6 PM
表示下午5点零6分。注意,在英文的习惯中,中午12点被认为是下午,所以24小时制的12:00
就是12小时制的12:0 PM
;而0点被认为是第二天的时间,所以是0:0 AM
。
输入样例:
21:11
输出样例:
9:11 PM
#include <bits/stdc++.h>
using namespace std;
int main()
{
int M,S;
while(~scanf("%d:%d",&M,&S))
{
if(M<12)
{
printf("%d:%d AM\n",M,S);
}
else if(M==12)
{
printf("%d:%d PM\n",M,S);
}
else if(M<23)
{
M-=12;
printf("%d:%d PM\n",M,S);
}
}
return 0;
}
7-2 日期格式化 (5 分)
世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。
输入格式:
输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。
输出格式:
在一行中按照“yyyy-mm-dd”的格式给出年、月、日。
输入样例:
03-15-2017
输出样例:
2017-03-15
#include <bits/stdc++.h>
using namespace std;
int main()
{
int y,m,d;
while(~scanf("%d-%d-%d",&y,&m,&d))
{
printf("%04d-%02d-%02d\n",d,y,m);
}
return 0;
}
7-3 整数的分类处理 (20 分)
给定 N 个正整数,要求你从中得到下列三种计算结果:
- A1 = 能被 3 整除的最大整数
- A2 = 存在整数 K 使之可以表示为 3K+1 的整数的个数
- A3 = 存在整数 K 使之可以表示为 3K+2 的所有整数的平均值(精确到小数点后 1 位)
输入格式:
输入首先在第一行给出一个正整数 N,随后一行给出 N 个正整数。所有数字都不超过 100,同行数字以空格分隔。
输出格式:
在一行中顺序输出 A1、A2、A3的值,其间以 1 个空格分隔。如果某个数字不存在,则对应输出NONE
。
输入样例 1:
8
5 8 7 6 9 1 3 10
输出样例 1:
9 3 6.5
输入样例 2:
8
15 18 7 6 9 1 3 10
输出样例 2:
18 3 NONE
#include <bits/stdc++.h>
using namespace std;
int main()
{
int A1,A2,num2,num3;
double A3;
int x;
int n;
while(cin>>n)
{
A1=0;
num2=0;
num3=0;
A3=0;
for(int i=0;i<n;i++)
{
scanf("%d",&x);
if(x%3==0)
{
A1=max(A1,x);
}
else if(x%3==1)
{
num2++;
}
else
{
num3++;
A3+=x;
}
}
if(A1!=0)
{
printf("%d",A1);
}
else
{
printf("N