时间转换
描述
给定秒数 seconds ,把秒转化成小时、分钟和秒。
数据范围:
输入描述:
一行,包括一个整数,即给定的秒数。
输出描述:
一行,包含三个整数,依次为输入整数对应的小时数、分钟数和秒数(可能为零),中间用一个空格隔开。
示例1
输入:
3661复制输出:
1 1 1输入
9000
复制输出
2 30 0
输入
60
复制输出
0 1 0
#include<stdio.h>
int main()
{
int seconds;
scanf("%d",&seconds);
int hour,minute,second;
hour=seconds/3600;
printf("%d ",hour);
second=seconds%60;
if(seconds>3600)
{
seconds-=3600*hour;
minute=seconds/60;
printf("%d ",minute);
}
else
{
printf("%d ",seconds/60);
}
printf("%d ",second);
return 0;
}
结果示例
BC29 2的n次方计算
描述
不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算。
数据范围:
输入描述:
一行输入整数n(0 <= n < 31)。
输出描述:
输出对应的2的n次方的结果。
示例1
输入:
2复制输出:
4
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
printf("%d",1<<n);
return 0;
}
左移动操作符
BC7 缩短二进制
描述
我们处理的整数通常用十进制表示,在计算机内存中是以二进制补码形式存储,但通常二进制表示的整数比较长,为了便于在程序设计过程中理解和处理数据,通常采用八进制和十六进制,缩短了二进制补码表示的整数,但保持了二进制数的表达特点。请输出十进制整数1234对应的八进制和十六进制。
输入描述:
无
输出描述:
十进制整数1234对应的八进制和十六进制(字母大写),用空格分开,并且要求,在八进制前显示前导0,在十六进制数前显示前导0X。
备注:
printf可以使用使用格式控制串“%o”、“%X”分别输出八进制整数和十六进制整数,并使用修饰符“#”控制前导显示
#include<stdio.h>
int main()
{
int a=1234;
printf("%#o %#X",a,a);
return 0;
}
#o和#x可以打印出八进制前到0,16进制前导0x
BC20 kiki算数
描述
问题:KiKi今年5岁了,已经能够认识100以内的非负整数,并且并且能够进行 100 以内的非负整数的加法计算。不过,BoBo老师发现KiKi在进行大于等于100的正整数的计算时,规则如下:
1. 只保留该数的最后两位,例如:对KiKi来说1234等价于34;
2. 如果计算结果大于等于 100, 那么KIKI也仅保留计算结果的最后两位,如果此两位中十位为0,则只保留个位。
例如:45+80 = 25
要求给定非负整数 a和 b,模拟KiKi的运算规则计算出 a+b 的值。
输入描述:
一行,输入两个非负整数a和b,用一个空格分隔。(0 <= a,b<= 231-1)。
输出描述:
针对每组输入,输出按照KiKi的运算规则计算出 a+b 的值。
示例1
输入:
45 80复制输出:
25
#include<stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
if(a+b<100)
{
printf("%d",a+b);
}
else
{
if((a+b)/10%10==0)
{
printf("%d",(a+b)%10);
}
else
{
printf("%d",(a+b)%100);
}
}
return 0;
}