【1024程序员节福利!!!】牛客网小练习

时间转换

描述

给定秒数 seconds ,把秒转化成小时、分钟和秒。

数据范围: 

输入描述:

一行,包括一个整数,即给定的秒数。

输出描述:

一行,包含三个整数,依次为输入整数对应的小时数、分钟数和秒数(可能为零),中间用一个空格隔开。

示例1

输入:

3661

复制输出:

1 1 1

输入

    9000

复制输出

  2  30  0

输入

   60

复制输出

 0  1  0 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#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

1
2
3
4
5
6
7
8
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
printf("%d",1<<n);
return 0;
}

 左移动操作符

BC7 缩短二进制

描述

我们处理的整数通常用十进制表示,在计算机内存中是以二进制补码形式存储,但通常二进制表示的整数比较长,为了便于在程序设计过程中理解和处理数据,通常采用八进制和十六进制,缩短了二进制补码表示的整数,但保持了二进制数的表达特点。请输出十进制整数1234对应的八进制和十六进制。

输入描述:

输出描述:

十进制整数1234对应的八进制和十六进制(字母大写),用空格分开,并且要求,在八进制前显示前导0,在十六进制数前显示前导0X

备注:

printf可以使用使用格式控制串“%o”、“%X”分别输出八进制整数和十六进制整数,并使用修饰符“#”控制前导显示

1
2
3
4
5
6
7
#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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#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;
}


【1024程序员节福利!!!】牛客网小练习
http://example.com/2021/10/24/【1024程序员节福利!!!】牛客网小练习/
作者
Zevin
发布于
2021年10月24日
许可协议