微博上有个自称 "大笨钟 V" 的家伙, 每天敲钟催促码农们爱惜身体早点睡觉. 不过由于笨钟自己作息也不是很规律, 所以敲钟并不定时. 一般敲钟的点数是根据敲钟时间而定的, 如果正好在某个整点敲, 那么 "当" 数就等于那个整点数; 如果过了整点, 就敲下一个整点数. 另外, 虽然一天有 24 小时, 钟却是只在后半天敲 1~12 下. 例如在 23:00 敲钟, 就是 "当当当当当当当当当当当", 而到了 23:01 就会是 "当当当当当当当当当当当当". 在午夜 00:00 到中午 12:00 期间(端点时间包括在内), 笨钟是不敲的.
下面就请你写个程序, 根据当前时间替大笨钟敲钟.
输入格式:
输入第一行按照 hh:mm 的格式给出当前时间. 其中 hh 是小时, 在 00 到 23 之间; mm 是分钟, 在 00 到 59 之间.
输出格式:
根据当前时间替大笨钟敲钟, 即在一行中输出相应数量个 Dang. 如果不是敲钟期, 则输出:
Only hh:mm. Too early to Dang.
其中 hh:mm 是输入的时间.
输入样例 1:
19:05
输出样例 1:
DangDangDangDangDangDangDangDang
输入样例 2:
07:05
输出样例 2:
- Only 07:05. Too early to Dang.
- ------------------------------------------------L1-018----------------------------------------------------------
注解: 这道题难度不大, 思路还是蛮清晰的, 就是很容易跳坑, 刚开始用整型去存, 发现出了点问题, 对于整型无法直接接受像 01,08,09 这样的数字, 所以第二次我换用 char 来处理了, 需要注意的是对于 24 点和 12 点的特判问题.
- #include<stdio.h>
- char data[5];
- int main()
- {
- for(int i = 0;i<5;i++) scanf("%c",&data[i]);
- if(data[0] == '1' && data[1]>'2')
- {
- for(int i = 0;i<data[1]-'0'-2;i++) printf("Dang");
- if(data[3] == data[4] && data[3] == '0') return 0;
- else printf("Dang");
- }
- else if(data[0] == '1' && data[1] == '2')
- {
- if(data[3] == data[4] && data[3] == '0')
- {
- printf("Only %c%c:%c%c. Too early to Dang.",data[0],data[1],data[3],data[4]);
- return 0;
- }
- else printf("Dang");
- }
- else if(data[0] == '2' && data[1] <='4')
- {
- if(data[1] == '4')
- {
- printf("Only 00:00. Too early to Dang.");
- return 0;
- }
- for(int i = 0;i<data[1]-'0'+8;i++) printf("Dang");
- if(data[3] == data[4] && data[3] == '0') return 0;
- else printf("Dang");
- }
- else printf("Only %c%c:%c%c. Too early to Dang.",data[0],data[1],data[3],data[4]);
- return 0;
- }
- ------------------------------------------------L1-019----------------------------------------------------------
谁先倒
划拳是古老中国酒文化的一个有趣的组成部分. 酒桌上两人划拳的方法为: 每人口中喊出一个数字, 同时用手比划出一个数字. 如果谁比划出的数字正好等于两人喊出的数字之和, 谁就输了, 输家罚一杯酒. 两人同赢或两人同输则继续下一轮, 直到唯一的赢家出现.
下面给出甲, 乙两人的酒量 (最多能喝多少杯不倒) 和划拳记录, 请你判断两个人谁先倒.
输入格式:
输入第一行先后给出甲, 乙两人的酒量(不超过 100 的非负整数), 以空格分隔. 下一行给出一个正整数 N(≤100), 随后 N 行, 每行给出一轮划拳的记录, 格式为:
甲喊 甲划 乙喊 乙划
其中喊是喊出的数字, 划是划出的数字, 均为不超过 100 的正整数(两只手一起划).
输出格式:
在第一行中输出先倒下的那个人: A 代表甲, B 代表乙. 第二行中输出没倒的那个人喝了多少杯. 题目保证有一个人倒下. 注意程序处理到有人倒下就终止, 后面的数据不必处理.
输入样例:
- 1 1
- 6
- 8 10 9 12
- 5 10 5 10
- 3 8 5 12
- 12 18 1 13
- 4 16 12 15
- 15 1 1 16
输出样例:
- A 1
- ------------------------------------------------L1-019----------------------------------------------------------
注解: 水题, 难度不大, 注意一下函数判断位置就好
- #include<stdio.h>
- int max_a,max_b,times;
- int call_a,call_b,out_a,out_b;
- int temp_a,temp_b;
- int main()
- {
- scanf("%d %d %d",&max_a,&max_b,×);
- temp_a = temp_b = 0;
- for(int i = 0;i<times;i++)
- {
- scanf("%d %d %d %d",&call_a,&out_a,&call_b,&out_b);
- int sum = call_a + call_b;
- if(out_a == sum && out_b == sum) continue;
- else
- {
- if(out_a == sum) temp_a++;
- if(out_b == sum) temp_b++;
- }
- if(temp_a> max_a)
- {
- printf("A\n%d\n",temp_b);
- break;
- }
- if(temp_b> max_b)
- {
- printf("B\n%d\n",temp_a);
- break;
- }
- }
- return 0;
- }
- ------------------------------------------------L1-020----------------------------------------------------------
帅到没朋友
当芸芸众生忙着在朋友圈中发照片的时候, 总有一些人因为太帅而没有朋友. 本题就要求你找出那些帅到没有朋友的人.
输入格式:
输入第一行给出一个正整数 N(≤100), 是已知朋友圈的个数; 随后 N 行, 每行首先给出一个正整数 K(≤1000), 为朋友圈中的人数, 然后列出一个朋友圈内的所有人 -- 为方便起见, 每人对应一个 ID 号, 为 5 位数字(从 00000 到 99999),ID 间以空格分隔; 之后给出一个正整数 M(≤10000), 为待查询的人数; 随后一行中列出 M 个待查询的 ID, 以空格分隔.
注意: 没有朋友的人可以是根本没安装 "朋友圈", 也可以是只有自己一个人在朋友圈的人. 虽然有个别自恋狂会自己把自己反复加进朋友圈, 但题目保证所有 K 超过 1 的朋友圈里都至少有 2 个不同的人.
输出格式:
按输入的顺序输出那些帅到没朋友的人. ID 间用 1 个空格分隔, 行的首尾不得有多余空格. 如果没有人太帅, 则输出 No one is handsome.
注意: 同一个人可以被查询多次, 但只输出一次.
输入样例 1:
- 3
- 3 11111 22222 55555
- 2 33333 44444
- 4 55555 66666 99999 77777
- 8
- 55555 44444 10000 88888 22222 11111 23333 88888
输出样例 1:
10000 88888 23333
输入样例 2:
- 3
- 3 11111 22222 55555
- 2 33333 44444
- 4 55555 66666 99999 77777
- 4
- 55555 44444 22222 11111
输出样例 2:
- No one is handsome
- ------------------------------------------------L1-020----------------------------------------------------------
注解: 这道题思路简单, 建一个超过五位数的数组去存放已有的数据即可, 如 find[100000];. 然后这道题有一个重点需要注意, 那就是对最后结果的处理:
%Nd -> 表示输出的整型宽度至少为 N 位, 右对齐, 位数大于 5 则输出实际位数. 如: printf("%5d",1) 输出: 1(不足用空格填充);
%0Nd -> 表示输出的整型宽度至少为 N 位, 不足 N 位用 0 填充. 如: printf("%05d",1) 输出: 00001;
AC 代码:
- #include<stdio.h>
- int times,friends,ans;
- int find[100000];
- int main()
- {
- scanf("%d",×);
- ans = 0;
- for(int i = 0;i<times;i++)
- {
- scanf("%d",&friends);
- for(int u = 0;u<friends;u++)
- {
- int temp;
- scanf("%d",&temp);
- if(friends != 1) find[temp]++;
- }
- }
- scanf("%d",×);
- for(int i = 0;i<times;i++)
- {
- scanf("%d",&friends);
- if(find[friends] == 0)
- {
- find[friends] = -1;
- if(ans != 0) printf(" ");
- printf("%05d",friends);
- ans++;
- }
- }
- if(ans == 0) printf("No one is handsome");
- return 0;
- }
注: 如果有更好的解法, 真心希望您能够评论留言贴上您的代码呢~ 互相帮助互相鼓励才能成长鸭~~
来源: https://www.cnblogs.com/winniy/p/10501737.html