




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 本学期至今oj所有题目汇编 1 实验1 Problem A:简单的打折计算 Time Limit: 1 Sec Memory Limit: 2 MB Submit: 2444 Solved: 1201 Submit Status Web Boarc Descripti on 商店规定:消费满n元,可以打八八折。设某件商品标价 m元,输入购买的件数 x,计算出 需要支付的金额(单位:元),精确到分。 In put 输入只有一行,三个整数 m、n和x,且0 xmn1000。 Output 输出金额,精确到分。 Sample In put 95 300 4 Sample Output 334.40
2、 HINT 了解浮点型的输出控制,注意整型和浮点型混合运算过程中的数据类型转换。 Appe nd Code 答案: #in elude int mai n() double m, n,x; double s; scan f(%lf%lf%lf, s=m*x; s n?pri ntf(%2lf,s):pri ntf(%.2lf,s*0.88); return 0; Problem B:判断闰年 2 MB Time Limit: 1 SecMemory Limit: Submit: 2524Solved: 1249 Submit Status Web Boarc Descripti on 输入一个
3、正整数的年份,判断是否为闰年。 In put 输入只有一行,为一个 10000以内的正整数。 Output 输出为一行。 若输入为闰年偶数则输出“Yes;否则输出“No; Sample In put 2010 Sample Output No HINT 了解逻辑运算符和关系运算符。 Append Code 答案: #i nclude int mai n() int x; sca nf(%d, x%4=0 return 0; Problem C:水仙花数 Time Limit: 1 Sec Submit: 2505 Memory Limit: 2 MB Solved: 1303 Submit S
4、tatus Web Board| Descripti on 如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。如: 13+53+33=153。 In put 一个整数 x, 100=x=999。 Output x是水仙花数,则输出 “ YES”否则为“ NO。 Sample Input 153 Sample Output YES HINT Appe nd Code 答案: #i nclude int mai n() int a,b,c,d; sca nf(%d, b=a/100; c=(a-b*100)/10; d=a-b*100-c*10; a=b*b*b+c*c*c+d*d
5、*d?pri ntf(YES):pri ntf(NO); return 0; Problem A:多少张钞票 Time Limit: 1 Sec Submit: 1726 Memory Limit: 2 MB Solved: 912 Submit Status Web Board Descripti on 客户去商店买东西时,不超过100美金的账单喜欢用现金支付。商店喜欢用最少的钞票 给付客户的找零。请你编写一个程序帮助商店计算出:当客户买了x元商品给了一张100 美元的钞票后,商店应该付给客户多少张20美元、10美元、5美元和1美元的钞票,使得 钞票总数最少。假设不存在其他面值的钞票,也不会
6、有几角几分的价格,商店的各种钞票总 是够用的。 In put 输入一个整数 x, 0 x100。 Output 按顺序输出20美金、10美金、5美金和1美金面值的钞票张数。输出格式见 Sample In put 7 Sample Output $20 bills: 4 $10 bills: 1 $5 bills: 0 $1 bills: 3 HINT 当能支付大面值钞票时不要支付更小面值的钞票,才能满足钞票总数最少, 的控制。 sample。 注意scanf()格式 Appe nd Code 答案: #i nclude int mai n() int a,b,c,d,e,f,g,h,i; sc
7、an f(%d, b=100-a; c=b/20; d=b-20*c; e=d/10; f=d-10*e; g=f/5; h=f-5*g; i=h/1; printf($20 bills: %dn$10 bills: %dn $5 bills: %dn $1 bills: %d,c,e,g,i); Problem B: 自动拨出电话的程序 Time Limit: 1 Sec Memory Limit: 2 MB Submit: 1248 Solved: 962 Submit Status Web Boarc Descripti on 某外国销售公司需要向国内的一些大型单位打电话推销产品。这个公
8、司的工作场景是这 样推销员坐在自己电脑旁边,通过一款自动拨电话的软件与客户联系。所有需要被拨打的电 话号码都事先存储在服务器上,推销员不需要每次都很麻烦的输入客户的电话号码,当推销 员点击软件里拨打的按钮,下一个电话将会自动拨出。 现在你需要编写个程序来模拟这个自动拨电话软件的工作过程。电话号码是按照中国的 习惯存储下来的,可能是从网站上抓取的,也可能是扫描的手写件。 不过它们都被按照这样 的格式存储下来: (城市区号)分区前缀-分机号 比如青岛的一个大型单位的某部电话是(0532)621-15486,是指如果在单位内部直接拨打 15486就行,在青岛的其他地方要拨打62115486,而在北京
9、要拨打 053262115486。根据常 识,先拨0就是要转外线,所以一般电话号码的各个部分都不会以0开头。 你的程序可以把如上格式的电话号码翻译成一个只包含有数字的串,发送给电话机并拨 出。值得注意的是中国的城市区号长度并不相同,比如北京是010。再有不同城市的电话号 码位数也不相同,并且不同单位根据内部电话分机数目多少,有的可能只有3位分机号码, 有的可能分区前缀号会只有2位。但不管怎样中国现在还没有哪个城市的电话号码超过十位 数的。中国的国际区号是0086。 这里不含像114这样的特服电话。 In put 输入只有一行,是符合“(市区号)分区前缀-分机号”规律的电话号码,这里面除了英文字
10、符 “之外只有数字。 Output 输出只有一行,是带中国区号的能电话号码。注意从国外打国内的电话,城市区号前面的0 是不用拨打的。比如中国青岛的国际分区号是0086532。 Sample In put (0532)621-15486 Sample Output 008653262115486 HINT 这是个可以用scanf()解决的问题,请注意电话号码都是数字这个规律。 Appe nd Code 答案: #i nclude int mai n() int a,b,c; scan f(%d)%d-%d, prin tf(0086%d%d%d,a,b,c); Problem C:求 1+2+.
11、+n=? Time Limit: 1 Sec Memory Limit: 2 MB Submit: 5449 Solved: 1121 Submit Status Web Board Descripti on 给定一个 n,求出s = 1+2+3+.+n的值。 In put 输入只有一行,包含一个正整数n(n =2 32)。 Output 输出一行,为1+2+.+n的值。 Sample In put 10 Sample Output 55 HINT n的数据范围大,需注意数据类型的选择和计算次序,以避免数据溢出。 Appe nd Code 答案: #in clude int mai n() u
12、n sig ned long long int n,s; scan f(%llu, if(n %2=0) s=n/2*( n+1); else s=( n+1)/2* n; prin tf(%llu,s); Problem D: 2 的多少次幂 Time Limit: 1 Sec Submit: 2678 Memory Limit: 2 MB Solved: 1397 Submit Status Web Board| Descripti on 从键盘输入一个数 x, x是2的整数次幕(x=2y),请编程求出y的值。 In put 一个非负有理数x, x在0,2 256范围内。 Output 一
13、个整数y。 Sample In put i Sample Output 0 HINT 看起来数据很大,但是用double完全可以存储。为什么?请研究下IEEE-754标准的浮点数 存储格式。这里要用到C语言标准库的数学函数。 Append Code 答案: #i nclude #in clude int mai n() double x,y; scan f(%lf, y=log10(x)/log10(2); prin tf(%.0lf,y); Problem E:三个数比较大小 2 MB Time Limit: 1 SecMemory Limit: Submit: 2815Solved: 12
14、57 Submit Status Web Boarc Descripti on 从键盘上输入oloo之间的三个数,按从小到大的顺序输出。 In put 输入只有一行,为三个整数。 Output 按从小到大输出这三个数。 Sample In put 15 10 20 Sample Output 10 15 20 HINT 用if语句判断各种情况可以解决这个问题。 Appe nd Code 答案: #i nclude int mai n() int x,y,z; scanf(%d %d %d, if(xy) if(yz) prin tf(%d %d %d,z,y,x); else if(xz) p
15、rin tf(%d %d %d,y,z,x); else prin tf(%d %d %d,y,x,z); else if(xz) prin tf(%d %d %d,z,x,y); else if(yz) prin tf(%d %d %d,x,z,y); else prin tf(%d %d %d,x,y,z); 实验3 Problem A:输出是m的倍数或n的倍数、但不是m 和n的公倍数的数 Time Limit: 1 Sec Memory Limit: 2 MB Submit: 3745 Solved: 1192 Submit Status Web Board Descripti on 输
16、出1k之间是m的倍数或n的倍数、但不是m和n的公倍数的数,其中1=m,nk100 , 且m与n不相等。 In put 输入三个整数,依次为 k、m、 n。 Output 从小到大输出符合题意的所有整数,两数之间用一个空格分开。 Sample Input 15 2 3 Sample Output 2 3 4 8 9 10 14 15 HINT 难点在于输出格式的控制:空格在数的中间,学会用循环时边界情况的特殊处理。 Appe nd Code 答案: #i nclude int mai n() int k,m, n,num=1,x=0; scanf(%d %d %d, while( num =k)
17、 if( num%m=0 if(x=1) prin tf(%d, num); if(x!=1) printf( %d, num); nu m+; Problem B: n 个数的最大值和最小值 Time Limit: 1 Sec Memory Limit: 2 MB Submit: 2630 Solved: 1263 Submit Status Web Board Descripti on 找出n个数中最大的数和最小的数,并将它们的值输出出来。 In put 输入为n+1个整数,都在int类型范围内。这些数可能用若干空格或者换行符分隔开。 输入的第1个数为n,表示后续有n个数输入。从输入的第
18、2个数开始,求出直到第 n+1个 数中最大的数和最小的数。 Output 输出为两行,格式见 sample。 Sample In put 3 0 1-1 Sample Output The maximum nu mber is 1. The mi nimum nu mber is -1. HINT 分隔符是空格还是回车都是空白符,对scanf(%d)来说没有区别;先读入 n,然后用for循 环就很容易控制读入 n个数的过程。 Appe nd Code 答案: #i nclude int mai n() int n,a,b,i=2,max,min; scan f(%d, scan f(%d, m
19、ax=a; mi n=a; while(i=max) max=b; if(b=min) mi n=b; i+; printf(The maximum number is %d.nThe minimum number is %d.,max,min); return 0; Problem C:成绩的等级 Time Limit: 1 SecMemory Limit: 2 MB Submit: 5225Solved: 2236 Submit Status Web Board Descripti on 把百分制的考试成绩转换成五级制的成绩: 90 100: Excellent 80 89: Good 7
20、0 79: Average 60 69: Pass 059: Failing 不在0100之间的输入是非法数据,输出“ Error。” In put 输入多行,每行一个整数。 Output 输入所对应的成绩等级。 Sample Input -i 81 92 35 68 72 100 Sample Output Error Good Excelle nt Faili ng Pass Average Excelle nt HINT 用switch语句解决这个问题比较方便。 Appe nd Code appe nd.cc, 答案: #i nclude int mai n() int兀 while(s
21、ca nf(%d, else switch(x/10) case 10: case 9: prin tf(Excelle nt);break; case 8: prin tf(Good);break; case 7: prin tf(Average);break; case 6: prin tf(Pass);break; case 5: case 4: case 3: case 2: case 1: case 0: prin tf(Faili ng);break; default: prin tf(Error);break; prin tf(n ”); return 0; 2 MB Probl
22、em D: A+B Problem Time Limit: 1 SecMemory Limit: Submit: 2221 Solved: 1312 Submit Status Web Board| Descripti on 计算 a+b, 0=a,b1000。 In put 输入有多对整数 a和b组成,每对a和b占一行,a,b用空格分开。 Output 每行输出一个a+b的值,顺序与输入对应。 Sample Input Sample Output 3 30 HINT OJ系统上测试输入结束符为EOF (End Of File ),其值为-1。用scanf()把文件所有内容读 完后,会读到EO
23、F,所以可以用来判断输入是否完成,测试时可以用Ctrl+Z产生EOF。本 题解法参看FAQ 。 Appe nd Code 答案: #i nclude int mai n() int a,b,sum; while(sca nf(%d%d, prin tf(%dn,sum); return 0; Problem E: A+B Problem (II) : In put/Output Pratice Time Limit: 1 Sec Memory Limit: 2 MB Submit: 1710 Solved: 1225 Submit Status Web Boarc Descripti on 计
24、算 a+b, 0=a,b1000。 In put a,b用空格分开。 输入的第一行是一个整数 N,后面有N对整数a和b,每对a和b占一行, Output 每行输出一个a+b的和,顺序与输入对应。 Sample In put 2 1 2 10 20 Sample Output 3 30 HINT N给出了测试样例数,用 for循环处理方便。 Appe nd Code 答案: #i nclude int mai n() int a,b,N,i,sum; scan f(%d, for(i=1;i=N;i+) sea nf(%d %d, sum=a+b; prin tf(%dn,sum); retur
25、n 0; 实验4 Problem A: A+B Problem (III) : In put/Output Pratice Time Limit: 1 Sec Memory Limit: 2 MB Submit: 1609 Solved: 1076 Submit Status Web Board Descripti on 计算 a+b, 0=a,b1000。 In put 0 0时表示 输入有多对整数 a和b组成,每对a和b占一行,a,b用空格分开。当测试样为 输入结束,0 0不参与运算。 Output 每行输出一个a+b的值,顺序与输入对应。 Sample In put 1 2 10 20
26、Sample Output 3 30 HINT 练习break的使用。 Appe nd Code #i nclude int mai n() int a1000,b1000, n,i; for(i=0;i+) scan f(%d %d, if(ai=0 for(n=0;n i; n+) prin tf(%dn,a n+b n); return 0; Problem B: A+B Problem (IV) : In put/Output Pratice Time Limit: 1 Sec Memory Limit: 2 MB Submit: 2199 Solved: 1114 Submit St
27、atus Web Board Descripti on 计算 a+b, 0=a,b1000。 In put 输入有多对整数 a和b组成,每对a和b占一行,a,b用空格分开。 Output 每行输出一个a+b的值,顺序与输入对应。每个格式样例之间用一个空行分隔开。 Sample Input 1 2 10 20 15 35 Sample Output 3 30 50 HINT 由于输出的和比空行多一个,所以全部计算放在一个循环里是不行的,必须要特殊处理开头 或者结尾。 Appe nd Code 答案: #i nclude int mai n() int a,b; while(scanf(%d %d
28、, Problem C:只有一个二元运算符的表达式运算 Time Limit: 1 Sec Memory Limit: 2 MB Submit: 2595 Solved: 1006 Submit Status Web Boarc Descripti on 编程序读入并计算只有一个二元运算符的表达式的值。用到的二元运算符有:“+、-”、 “/、” “ ;与C语言的语法一致。 In put 每行输入一个表达式,格式为:二个整型的操作数a和b,中间用一个符号分开,这个符号 就是运算符。测试样例不存在除数为0的情况。 输入以a和b为0,且用一个空格分开结束。 Output 每行对应输入的运算符为“ +
29、; -”、 “*、 “/、 “%,则计算a+b、a-b、a*b、a/b、a%b的值; 否则输出 “ in valid op。 ” Sample Input 33+5 8*9 2.2 1-6 17/3 9%3 0 0 Sample Output 72 in valid op -5 5 0 HINT 教材上有非常相似的例题可以参考。 Append Code 答案: #i nclude int mai n() int a,b; char c; sca nf(%d%c%d, for(;) if(c=+) prin tf(%dn,a+b); else if(c=-) prin tf(%dn,a-b);
30、else if(c=*) prin tf(%dn,a*b); else if(c=/) prin tf(%dn,a/b); else if(c=%) prin tf(%dn,a%b); else if(c= else printf(invalid opn”); scan f(%d%c%d, return 0; 38 Problem D:求100以内的素数 Time Limit: 1 Sec Memory Limit: 2 MB Submit: 3015 Solved: 1187 Submit Status Web Boarc Descripti on 素数是只能被1和自身整除的正整数,根据数学
31、定义1不是素数。素数也叫质数。 In put 输入为两个整数 m和n,满足0=m=*=100。 Output Sample Input 2 12 Sample Output 11 7 5 3 2 HINT 利用素数的数学规律可以很容易的解出此题,题目给出的数据范围是关键。 Appe nd Code 答案: #in elude int mai n() int i,a,b; scan f(%d%d, prin tf(=n); for(i=b;i=a;i-) if(i%2!=0 if(i=2|i=3|i=5|i=7) prin tf(%dn,i); printf(” An); Problem E:十
32、进制整数转二进制 Time Limit: 1 Sec Memory Limit: 2 MB Submit: 2289 Solved: 1084 Submit Status Web Board Descripti on 给出一个十进制的非负整数 x, x=216,把它转换成二进制数输出。 In put 输入为多行,每行一个整数 x,至读入EOF结束。 Output 每行输出x对应的二进制数值。 Sample Input 0 1 3 33 65535 Sample Output 0 1 11 100001 HINT 本题有多种解法:可以用循环迭代对2的除法和取余操作,不过处理的顺序与输出顺序相反,
33、 需要利用数组存储;用取对数或从大到小减去2的整数次幕的方法计算与输出顺序是相同 的;也可以用printf()把十进制的数值处理成十六进制,然后1位十六进制转4位二进制; 也可以用位运算处理。 Appe nd Code 答案: #i nclude int mai n() int a20,i,j; while(sca nf(%d,;i+) ai=j%2; j=j/2; if(j=0) break; for(;i=0;i-) prin tf(%d,ai); prin tf(n); return 0; Problem F:辗转相除法 Time Limit: 1 Sec Memory Limit: 2
34、 MB Submit: 2288 Solved: 795 Submit Status Web Board Descripti on 辗转相除法,也称欧几里得算法,是求最大公约数的算法。辗转相除法首次出现于欧几里得 的几何原本(第 VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的九章算 术。 两个整数的最大公约数(亦称公约数)是能够同时整除它们的最大的正整数。辗转相除法基于 如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。例如,252 和 105 的最大公约数是 21 (252 = 21 12 ; 105 = 21 5);因为 252 - 105 = 147,所以
35、 147 和105的最大公约数也是 21。在这个过程中,较大的数缩小了,所以继续进行同样的计算 可以不断缩小这两个数直至其中一个变成零。这时,所剩下的还没有变成零的数就是两数的 最大公约数。 例如,计算a = 1071和b = 462的最大公约数的过程如下:从1071中不断减去462直到小 于462 (可以减2次,即商qO = 2),余数是147: 1071 = 242 + 147. 然后从462中不断减去147直到小于147 (可以减3次,即q1 = 3),余数是21 : 462 = 3147 + 21. 再从147中不断减去21直到小于21 (可以减7次,即q2 = 7),没有余数: 14
36、7 = 7 + 0. 此时,余数是0,所以1071和462的最大公约数是21。 In put 输入为多行,每行有一对非负整数a,b,且a*b不会超出int类型的数据范围。输入至 EOF 结束。 Output 每行输出一对a,b的最大公约数和最小公倍数,顺序与输入对应。 从数论上的整除定义出发:若 a整除b (b除以a没有余数),则b是a的倍数,a是b的约 数,这里要求b不为0。因此0是任意整数的倍数,但是 0不能是约数。 Sample Input 1 i 2 3 2 2 3 2 4 6 7 5 12 6 18 9 24 36 Sample Output 1 1 1 6 2 2 1 6 2 12
37、 1 35 6 12 9 18 12 72 HINT 按照题目描述所给的算法解题,注意以下几点:辗转相除法对两个数的大小关系有要求,根 据倍数和约数的数学定义, 一个非0数和0的约数是多少?辗转相除法的计算过程是符合这 种定义的。 Appe nd Code 答案: #in clude int mai n() int a,b,c,d,e,f; while(sca nf(%d%d, else c=b; if(ab) d=b; else d=a; while(d!=O) e=c-d; if(de) c=d; else c=e; if(de) d=e; else d=d; f=(a*b)/c; pri
38、n tf(%d %dn,c,f); 实验六 Problem A:简单的整数排序 Time Limit: 1 Sec Memory Limit: 2 MB Submit: 2313 Solved: 1143 Submit Status Web Board Descripti on 对给出的若干整数按从小到大排序。 In put 输入的第一个数为 n ( n=1000 ),后接n个整数。 Output 按从小到大的顺序输出这些整数, 每两个整数之间用一个空格分隔开,最后一个整数后面没 有空格。 Sample In put 10 3 9 1 5 2 8 5 6 7 3 Sample Output 1
39、 2 3 3 5 5 6 7 8 9 HINT 排序前必须把所有的整数都存储下来。因为只有最多1000个数,1秒的时间足够任何排序 算法运行处结果来。 Appe nd Code 答案:#include int mai n() int a1000; int n ,i,j,temp; scan f(%d, for(i=0;i n;i+) scan f(%d, for(i=1;i=n _1;i+) for(j=0;j aj+1) temp=aj; aj=aj+1; aj+1=temp; for(i=0;i n;i+) if(i=O) prin tf(%d,ai); else printf(” %d,
40、ai); return 0; Problem B:兔子的繁殖问题 Time Limit: 1 Sec Memory Limit: 2 MB Submit: 1944 Solved: 1007 Submit Status Web Board Descripti on 假设一对兔子每月能生一对小兔(一雌一雄),每对小兔出生后的下一个月是没有繁殖能力 的,至出生后的第三个月开始又可以每月生一队小兔,问从一对刚出生的小兔开始,经过若 干个月后一共有多少兔子(假设在此过程中兔子没有死亡)? 这个问题是意大利数学家菲波那契(Fib on acci)在他1202年出版的算盘全书中提出来 的,从第一对刚出生的
41、小兔开始每月的兔子数被乘坐菲波那契序列。 In put 输入的第一个数为 n,接下来有n个数字。每个数字为一个月份 m (m=45 )。 Output 输出为n行,每行为第m个月后的兔子总数。 Sample In put 6 1 2 3 4 5 10 Sample Output 1 2 3 5 8 89 HINT 当n较大时,菲波那契序列的第n项值和计算量都是很大的,可以先计算出菲波那契序列并 用数组存储下来,然后查询出每月兔子数,避免重复运算。 Append Code 答案:#include int mai n() int a50; int i,m, n; a0=1; a1=1; for(i
42、=2;i0, step 不为 0。 Output 把这个等差序列输出在一行里,序列两数之间用一个空格分隔。 Sample Input start = 1, step = 2, times = 100 Sample Output 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 1
43、21 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 HINT Appe nd Code 答案:#include int mai n() int a1000; x ); int start,step,times,i; scan f(start = %d, step = %d, times = %d, for(i=1;i=times;i
44、+) ai=ai-1+step; for(i=0;itimes;i+) if(i=0) prin tf(%d,ai); else printf( %d,ai); return 0; Problem D:产生等差序列之二 Time Limit: 1 Sec Memory Limit: 2 MB Submit: 2297 Solved: 739 Submit Status Web Boarc Descripti on 根据给出的初始数、公差和终止条件求等差序列。 In put 输入为一行,格式见 sample。其中,start为初始数,step为公差,end为终止条件。满足, step不为0,并且
45、start和end的大小关系与step的方向一致。end不一定是序列的最后一个 数。 Output 把这个等差序列输出在一行里,序列两数之间用一个空格分隔。 Sample Input start = 1, step = 2, end = 200 Sample Output 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 107 10
46、9 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 HINT 根据start和step的大小关系,判断序列终止的条件可能不同。 Appe nd Code 答案:#include int mai n() int a1000; int step,start,e nd,i; sca nf(st
47、art = %d, step = %d, end = %d, a0=start; if(step0) for(i=1;ai=e nd;i+) ai=ai-1+step; for(i=0;ai=e nd;i+) ai=ai-1+step; for(i=0;ai=e nd;i+) if(i=0) prin tf(%d,ai); else printf( %d,ai); 实验七 Problem A:字符串的逆序 Time Limit: 1 Sec Memory Limit: 2 MB Submit: 1582 Solved: 900 Submit Status Web Boarc Descripti
48、 on 将输入的一个字符串 s逆序输出。 In put 输入为一个串s。输入最少为一个字符,最多不会超过100个字符。输入不含各种空白符(t、 n、r、)。 Output 串s的逆序。 Sample Input abcde Sample Output edcba HINT 输入可以用scanf(%s)处理。 Appe nd Code 答案:#include #in elude int mai n() char str1OO; int i; scan f(%s,str); for(i=strle n(str)-1;i=0;i-) prin tf(%c,stri); Problem B:去行首行尾
49、的空白符 Time Limit: 1 Sec Memory Limit: 2 MB Submit: 736 Solved: 371 Submit Status Web Board Descripti on 在C语言中,将ASCII字符集中的制表符(t)、回车符(r)、换行符(n)、垂直制 表符(v)、换页符(f )和空格字符()称作空白符。 你的任务是读入每行字符串,去掉行首和行尾的连续空白符,但是在任意非空白符中间的空 白符不要去除。 In put 输入为多行,每行为一个串(不超过100个字符),至某行输入的非空白符仅为“END结束。 Output 输出为多行,为每行输入的去掉前后空白符的串
50、。“ END也输出。 Sample Input abcdefg 12345678 XYZ abc 123 END Sample Output abcdefg 12345678 XYZ abc 123 END HINT 个字符为空白符之一则返回真。 头文件ctype.h中有isspace函数对空白符进行检测, Appe nd Code 答案:#include #in clude #in clude int mai n() char str1OO; int i,j,b,x,y; for(;) gets(str); for(i=0;i=0;j-) b=isspace(strj); if(b=0) b
51、reak; for(x=i;x=j;x+) prin tf(%c,strx); prin tf(n); y=j-i+1; if(y=3 Problem C:回文 Time Limit: 1 SecMemory Limit: 4 MB Submit: 2414Solved: 932 Submit Status Web Board Descripti on 回文(Palindrome) ”是指一个串和它的倒序串完全一样,例如 文言文” 上海在海上” 妈 妈爱我,我爱妈妈就是回文。 接下来,你要编写一个程序来判断一个串是不是”回文。在这里, 回文”是指一个串中大小 写不敏感的英文字母(a和A是同一个
52、字母)和数字的顺序和逆序完全相同,其他字符(如 空白符、标点和其他符号等)及所在位置被忽略。 In put 输入为多行,到文件末尾结束。每行为一个串,且不会超过1000个字符,且全部由可显示 的ASCII码字符组成。 Output 当一个串中的字母和数字部分能够构成一个回文,即输出“Yes.;”否则输出“No.” Sample In put 123 2002 +0_0+ eye hello Revilo P.Oliver Do you know? No X in Nixo n. Dollars make men covetous, the n covetous men make dollars
53、. A man, a pla n, a can al: Pan ama! Sample Output No.| Yes. Yes. Yes. No. Yes. No. Yes. No.| Yes. HINT 首先要考虑如何去除空白符(空格、回车、换行、制表符等),标点和各种符号(如“,! 和“#等),并且把串中的英文字符统一大小写,最后才能进行回文判定。 请注意,用gets()和scanf()判断文件尾的方法是不一样的。gets()函数的返回值请查阅 C语言 的语法手册。 Appe nd Code 答案:#include #in clude #in clude int mai n() char
54、 a1000; char c1000; int i,j=0,q=0,o,p,l,k,m; while(gets(a)!=NULL) o=strle n( a); j=0; for(i=0;i=o;i+) m=isalnum(ai); if(m!=0) cj=ai; j+; l=j-1; for(q=0;q=65 scan f(%d, for(k=1;k=M;k+) scan f(%d%d, int a100100; int b100100; for(i=0;im;i+) for(j=0;j n;j+) sca nf(%d, for(i=0;i n;i+) for(j=0;jm;j+) bij=
55、aji; for(i=0;i n;i+) prin tf(%d,biO); for(j=1;jm;j+) printf(” %d,bij); prin tf(n ”); prin tf(n); 实验八 (编程题) 128 MB Problem A:编写函数 maxValue Time Limit: 1 Sec Memory Limit: Submit: 695 Solved: 249 Submit Status Web Board Descripti on 编写一个函数 maxValue,求三个整数的最大值,其原型为: int maxValue(i nt a,i nt b,i nt c); 其
56、中a、b、c是参与比较的三个整数,返回值是三个数的最大值。 In put 输入三个int类型的整数,两两之间用空格隔开。 Output 输出三个整数的最大值。 Sample In put 1 2 3 Sample Output HINT Appe nd Code append.G int main() int x,y,z; sea nf(%d%d%d, prin tf(%d,maxValue(x,y,z); return 0; 答案: #i nclude int maxValue(i nt a,i nt b,i nt c) if(ab if(ac if(ba if(bc if(cb if(ca
57、 int main() int x,y,z; scan f(%d%d%d, prin tf(%d,maxValue(x,y,z); return 0; Problem B:编写函数myFloor和myCeil (编程题) Time Limit: 1 Sec Memory Limit: 128 MB Submit: 306 Solved: 115 Submit Status Web Boarc Descripti on 取整函数有四个,分别是 fix, floor, ceil, round。这里要求你编写 myFloor和myCeil函数, 它们的原型分别是: int myFloor(doubl
58、e data); int myCeil(double data); 其中myFloor函数的结果是不大于data的最大整数,myCeil函数的结果是不小于data的最 小整数。 注意:不能使用 math.h和stdlib.h两个头文件。 In put 输入有多行,每行是一个需要转换的实数。 Output 输出为多行,与上述输入一一对应。每行先输出floor函数的结果,再输出 ceil函数的结果。 两者之间用一个空格隔开。取整之后的结果不超出int类型的表示范围。 Sample In put 1.3 -1.5 2 Sample Output 1 2 -2 -1 2 2 HINT Appe nd
59、Code append.G int main() double data; while (sea nf(%lf, return 0; 答案: #i nclude int myFloor(double data) int a; if(data0) a=data/1; return a; if(data=0) a=data/1; if(a=data) return a; else retur n a+1; else a=data/1; return a; int main() double data; while (sca nf(%lf, return 0; Problem C:求字符串的长度(编
60、程题) Time Limit: 1 Sec Memory Limit: 16 MB Submit: 793 Solved: 356 Submit Status Web Board Descripti on 编写一个求字符串长度的函数,其原型如下: int strle n( char str); 其中str表示待求长度的字符串,返回值是str的长度。 注意:主函数已经给出,只需提交strle n()函数及必要的头文件包含命令。 In put 输入为多行。第一行 N0表示有N个测试用例,后面有 N行,每行包含一个字符串(不超 过1000个字符)。 Output 输出为多行,每行对应于一个测试用例。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽省阜阳市太和县2024-2025学年九年级上学期10月月考物理试卷(含答案)
- 拍摄视频采购合同范本
- 养鱼设备租赁合同范本
- 土地同意转租合同范本
- 承包土地售卖合同范本
- 网络平台经销合同范本
- 法律规定合同范本
- 大型货车货运合同范本
- 企业定制珠宝合同范本
- 绿化草坪的合同范本
- 儿科护理进修
- 2025年安防生产行业技能考试-安全防范系统安装维护员历年参考题库含答案解析(5套共100道单选合辑)
- 2024年西藏米林县人民医院公开招聘护理工作人员试题带答案详解
- 2025年新版保安员考试试题附(答案+解析)
- 2025年中级注册安全工程师《道路运输安全实务》考试真题及答案
- 监察法专题培训课件
- DR射线检测培训课件
- 产后康复师培训课件
- 胰腺肿瘤WHO分类2025
- 新加坡数学教学课件
- 宫颈癌术后的护理
评论
0/150
提交评论