L1-1 古风排版(20 分)
中国的古⼈写⽂字,是从右向左竖向排版的。本题就请你编写程序,把⼀段⽂字按古风排版。
输⼊格式:
输⼊在第⼀⾏给出⼀个正整数N(<100),是每⼀列的字符数。第⼆⾏给出⼀个长度不超过1000的⾮空字符串,以回车结束。
输出格式:
按古风格式排版给定的字符串,每列N个字符(除了最后⼀列可能不⾜N个)。
输⼊样例:
4
This is a test case
输出样例:
asa Tst ihe tsi ce s
思路:1.输⼊记得防⽌被吃空格
2.⼆维数组逆序来存字符串,⼀共有N⾏,那么就⼀共有strlen(str)/N 列,向上 取整
3.注意,str的最后⼀个字符存完后要检查⼆维字符数组的第⼀列是否有N⾏,如果没有要⽤空格补齐
#include using namespace std;char Cmap[1005][1005];int main(){ int n,m; char s[1005]; cin >> n; getchar(); //⽤这个来接收空格 gets(s); int len = strlen(s); m = len/n; if(len%n != 0) m++; int i = 0; for(int k = m-1; k >= 0; k--){ for(int j = 0; j < n; j++){ if(i < len) Cmap[j][k] = s[i++]; else Cmap[j][k] = ' '; //当长度超过len时直接赋值空格。 } } for(int j = 0; j < n; j++){ // 最后输出。 for(int k = 0; k < m; k++) cout << Cmap[j][k]; cout << endl; } return 0;} View Code L1-2 ⼤笨钟(10 分) 微博上有个⾃称“⼤笨钟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. #include scanf(\"%d:%d\",&h,&m); if((h==12&&m>0)||(h>12&&h<24)) { h-=12; int i; if(m>0) h+=1; for(i=0; i printf(\"Only %02d:%02d. Too early to Dang.\\n\",h,m); return 0;} View Code L1-3 宇宙⽆敌加法器(20 分) 地球⼈习惯使⽤⼗进制数,并且默认⼀个数字的每⼀位都是⼗进制的。⽽在 PAT 星⼈开挂的世界⾥,每个数字的每⼀位都是不同进制的,这种神奇的数字称为“PAT数”。每个 PAT 星⼈都必须熟记各位数字的进制表,例如“……0527”就表⽰最低位是 7 进制数、第 2 位是 2 进制数、第 3 位是 5 进制数、第 4 位是 10 进制数,等等。每⼀位的进制 d 或者是 0(表⽰⼗进制)、或者是 [2,9] 区间内的整数。理论上这个进制表应该包含⽆穷多位数字,但从实际应⽤出发,PAT 星⼈通常只需要记住前 20 位就够⽤了,以后各位默认为 10 进制。 在这样的数字系统中,即使是简单的加法运算也变得不简单。例如对应进制表“0527”,该如何计算“6203 + 415”呢?我们得⾸先计算最低位:3 + 5 = 8;因为最低位是 7 进制的,所以我们得到 1 和 1 个进位。第 2 位是:0 + 1 + 1(进位)= 2;因为此位是 2 进制的,所以我们得到 0 和 1 个进位。第 3 位是:2 + 4 + 1(进位)= 7;因为此位是 5 进制的,所以我们得到 2和 1 个进位。第 4 位是:6 + 1(进位)= 7;因为此位是 10 进制的,所以我们就得到 7。最后我们得到:6203 + 415 = 7201。 输⼊格式: 输⼊⾸先在第⼀⾏给出⼀个 N 位的进制表(0 < N ≤ 20),以回车结束。 随后两⾏,每⾏给出⼀个不超过 N 位的⾮负的 PAT 数。 输出格式: 在⼀⾏中输出两个 PAT 数之和。 输⼊样例: 3052706203415 输出样例: 7201 思路:1. 先将两个数的位数给补的⼀样,⽅便与计算,直接⽤string 这样前⾯的000还可以和后⾯的xxx直接连接起来 2.从最后⼀个开始相加,⽤string直接连起来⽐较⽅便,不⽤*pow(10,x) 3.进制的转换,k进制的话直接⽤两者之和%k就得到他的⼗进制数了,注意进位的情况 4.输出要注意⾸部为0的情况,⽤⼀个tag进⾏标记,⾸字母不为0才输出 5.坑点 0 0 的情况 #include string radix,num1,num2; cin>>radix>>num1>>num2; if(num1.length()>num2.length()){ string temp=\"\"; for(int i=0;i if(num1.length() num1=temp+num1; } int temp=radix.length()-1; int carry=0; //进位 string result=\"\"; //对各个位进⾏计算 for(int i= num1.length()-1;i>=0;i--){ int sum=(num1[i]-'0')+(num2[i]-'0')+carry; int r=radix[temp]-'0'; temp--; if(r==0){ r=10; } carry=sum/r; result=(char)(sum%r+'0')+result; } //有进位并且还有进制 while(carry != 0&&temp>=0) { int sum=carry; int r=radix[temp]-'0'; temp--; if(r==0){ r=10; } carry=sum/r; result=(char)(sum%r+'0') + result; } if(carry!=0){ result=(char)(carry+'0')+result; } int tag=0; for(int i=0;i View Code L1-4 情⼈节(15 分) 以上是朋友圈中⼀奇葩贴:“2⽉14情⼈节了,我决定造福⼤家。第2个赞和第14个赞的,我介绍你俩认识…………咱三吃饭…你俩请…”。现给出此贴下点赞的朋友名单,请你找出那两位要请客的倒霉蛋。 输⼊格式: 输⼊按照点赞的先后顺序给出不知道多少个点赞的⼈名,每个⼈名占⼀⾏,为不超过10个英⽂字母的⾮空单词,以回车结束。⼀个英⽂句点.标志输⼊的结束,这个符号不算在点赞名单⾥。 输出格式: 根据点赞情况在⼀⾏中输出结论:若存在第2个⼈A和第14个⼈B,则输出“A and B are inviting you to dinner...”;若只有A没有B,则输出“A is the only one for you...”;若连A都没有,则输出“Momo... No one is for you ...”。 输⼊样例1: GaoXZhMagiEinstQuarkLaoLaoFatMouseZhaShenfantacylatesumSenSenQuanQuan whateverwheneverPotatyhahaha. 输出样例1: Magi and Potaty are inviting you to dinner... 输⼊样例2: LaoLaoFatMousewhoever. 输出样例2: FatMouse is the only one for you... 输⼊样例3: LaoLao. 输出样例3: Momo... No one is for you ...思路:1.输⼊有技巧 2.统计⼀下输⼊的名字数⽬即可 #include int cnt=0; while(scanf(\"%s\",a[cnt])==1&&a[cnt][0]!='.') { cnt++; } if(cnt<2) printf(\"Momo... No one is for you ...\\n\"); else if(cnt<14) printf(\"%s is the only one for you...\\n\",a[1]); else printf(\"%s and %s are inviting you to dinner...\\n\",a[1],a[13]);} View Code 这道超级简单的题⽬没有任何输⼊。 你只需要把这句很重要的话 —— I Love GPLT ——竖着输出就可以了。 所谓“竖着输出”,是指每个字符占⼀⾏(包括空格),即每⾏只能有1个字符和回车。 #include int len=strlen(a); for(int i=0;i View Code L1-6 是不是太胖了(5 分) 据说⼀个⼈的标准体重应该是其⾝⾼(单位:厘⽶)减去100、再乘以0.9所得到的公⽄数。已知市⽄是公⽄的两倍。现给定某⼈⾝⾼,请你计算其标准体重应该是多少?(顺便也悄悄给⾃⼰算⼀下吧……) 输⼊格式: 输⼊第⼀⾏给出⼀个正整数H(100 < H ≤ 300),为某⼈⾝⾼。 输出格式: 在⼀⾏中输出对应的标准体重,单位为市⽄,保留⼩数点后1位。 输⼊样例: 169 输出样例: 124.2 #include int main(){ int H; while(scanf(\"%d\",&H) !=EOF){ printf(\"%.1lf\\n\",2*((H-100)*0.9)); } return 0;} View Code L1-7 到底是不是太胖了(10 分) 据说⼀个⼈的标准体重应该是其⾝⾼(单位:厘⽶)减去100、再乘以0.9所得到的公⽄数。真实体重与标准体重误差在10%以内都是完美⾝材(即 | 真实体重 − 标准体重 | < 标准体重×10%)。已知市⽄是公⽄的两倍。现给定⼀群⼈的⾝⾼和实际体重,请你告诉他们是否太胖或太瘦了。 输⼊格式: 输⼊第⼀⾏给出⼀个正整数N(≤ 20)。随后N⾏,每⾏给出两个整数,分别是⼀个⼈的⾝⾼H(120 < H < 200;单位:厘⽶)和真实体重W(50 < W ≤ 300;单位:市⽄),其间以空格分隔。 输出格式: 为每个⼈输出⼀⾏结论:如果是完美⾝材,输出You are wan mei!;如果太胖了,输出You are tai pang le!;否则输出You are tai shou le!。坑点:不要直接⽤浮点数,会有浮点误差 #include int main(){ int n; scanf(\"%d\", &n); for(int i = 0; i < n; i++){ int h, w; scanf(\"%d%d\", &h, &w); w *= 50; int sw = (h - 100) * 9; if(w >= sw * 11) printf(\"You are tai pang le!\\n\"); else if(w <= sw * 9) printf(\"You are tai shou le!\\n\"); else printf(\"You are wan mei!\\n\"); } return 0;} View Code L1-8 外星⼈的⼀天(15 分) 地球上的⼀天是 24 ⼩时。但地球上还有⼀些精⼒和勤奋度都远超⼀般⼈的⼤神级⼈物,他们的“⼀天”是以 48 ⼩时为周期运转的,这种⼈被⼈们尊称为“外星⼈”。⽐如普通⼈的周⼀早8:30 是外星⼈的周⼀早 4:15;普通⼈的周⼆早 9:21 是外星⼈的周⼀下午 4:40 —— 对外星⼈⽽⾔,⼀周的⼯作时间只有三天(即普通⼈的周⼀⾄周六),周⽇他们会蒙头⼤睡恢复体⼒,时间对他们是没有意义的。 在外星⼈眼⾥,地球⼈的时钟对他们⽽⾔实在是太不⽅便了。本题就请你为外星⼈们实现⼀款专⽤时钟。 输⼊格式: 输⼊在⼀⾏中给出⼀个不超过 10 的正整数 N,随后 N ⾏,每⾏给出⼀个地球⼈的时刻,格式为:Day hh:mm,其中Day是 [0,6] 区间内的整数,顺序代表周⽇⾄周六;hh是 24 ⼩时制的⼩时数,是 [0,23] 区间内的整数;mm是分钟数,是 [0,59] 区间内的整数。 输出格式: 对输⼊的每⼀⾏地球⼈时刻,输出对应的外星⼈时间,格式与输⼊相同。其中Day在 [0,3] 区间内,对应周⽇到周三;分钟数若不是整数,则向下取整。注意:由于周⽇的时间对外星⼈没有意义,所以直接输出地球⼈的时间即可。 输⼊样例: 3 1 08:302 09:210 21:07 输出样例: 1 04:151 16:400 21:07 #include int main() { int n; int a, b, c; cin >> n; for (int i = 0; i < n; i++) { scanf(\"%d%d:%d\", &a, &b, &c); if (a == 0) printf(\"%d %02d:%02d\\n\", a, b, c); else { if (a%2==1) { c = ((b % 2) * 60 + c) / 2; b = b / 2; } else { b = b + 24; c = ((b % 2) * 60 + c) / 2; b = b / 2; } printf(\"%d %02d:%02d\\n\", (a + 1) / 2, b, c); } } } View Code 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务