1、北京理工大学2013级C程序设计非信息类答案Part 1
1. 【入门】Hello world.
成绩
5
开启时间
2014年03月3日 星期一 08:00
折扣
0.8
折扣时间
2014年03月18日 星期二 23:55
允许迟交
否
关闭时间
2014年03月18日 星期二 23:55
让我们用C语言向世界问好。
最早的程序基本是这个样子的:
#include
2、能通过这个简单的程序,那就让我们继续完成后面的习题吧。
输入:无 输出:Hello world.
测试输入
期待的输出
时间限制
内存限制
额外进程
测试用例 1
1. ↵
1. Hello world.↵
1秒
64M
0
1. #include
3、8日 星期二 23:55
允许迟交
否
关闭时间
2014年03月18日 星期二 23:55
背景:我们已经学习了 printf 函数的基本使用方法,这里给出了一个小程序,它运行的结果是输出一个由星号(*)组成的4*4的正方形。
程序如下:
#include
4、输入:无。 输出:指定图形。
测试输入
期待的输出
时间限制
内存限制
额外进程
测试用例 1
1. ↵
*↵
1. ***↵
2. *****↵
3. *******↵
1秒
64M
0
1. #include
5、return 0;} 3. 【入门】求A+B 成绩 5 开启时间 2014年02月3日 星期一 14:00 折扣 0.8 折扣时间 2014年03月18日 星期二 23:55 允许迟交 否 关闭时间 2014年03月18日 星期二 23:55 我们已经学了如何使用 scanf 函数中输入整型数据(%d),下面让我们使用 scanf 函数来输入两个整数,然后求它们的和。 输入: 整数1 整数2 输出: 整数1+整数2=和 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 1. 10↵
6、
2. 20↵
1. 10+20=30↵
1秒
64M
0
测试用例 2
1. -10↵
2. 10↵
1. -10+10=0↵
1秒
64M
0
测试用例 3
1. 300 200↵
1. 300+200=500↵
1秒
64M
0
1. #include
7、次方 成绩 5 开启时间 2014年02月25日 星期二 14:00 折扣 0.8 折扣时间 2014年03月18日 星期二 23:55 允许迟交 否 关闭时间 2014年03月18日 星期二 23:55 输入一个整数 x,输出 x 的3次方。想一想,在C语言中如何用公式来表达 x 的 3次方? 输入:一个整数。 输出:该整数的 3 次方值。 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 1. 3↵ 1. 27↵ 1秒 64M 0 测试用例 2 1. -3↵ 1. -27↵ 1秒 64M 0
8、
1. #include
9、CII码。 输入:一个字符 输出: 该字符对应的ASCII码 说明:如果编程有问题,请先看看教材P51的例题3-4,然后再办法发挥一下…… 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 1. A↵ 1. The ASCII of character 'A' is 65.↵ 1秒 64M 0 测试用例 2 1. Z↵ 1. The ASCII of character 'Z' is 90.↵ 1秒 64M 0 测试用例 3 1. 0↵ 1. The ASCII of character '0' i
10、s 48.↵
1秒
64M
0
测试用例 4
1. 1↵
1. The ASCII of character '1' is 49.↵
1秒
64M
0
测试用例 5
1. +↵
1. The ASCII of character '+' is 43.↵
无限制
64M
0
1. #include
11、eturn 0;} 6. 【入门】大小写字母转换 成绩 5 开启时间 2014年03月17日 星期一 08:00 折扣 0.8 折扣时间 2014年04月4日 星期五 23:55 允许迟交 否 关闭时间 2014年04月6日 星期日 23:55 我们知道,英文字母是分大小写的,下面我们需要编写一个简单的程序,将输入的全部小写字母变换为大写字母,大写字母变换为小写字母,非写字母保持不变。 输入: 一个字符 输出: 变换后的字符 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 1. A↵ 1. a
12、↵
1秒
64M
0
测试用例 2
1. Z↵
1. z↵
1秒
64M
0
测试用例 3
1. b↵
1. B↵
1秒
64M
0
测试用例 4
1. y↵
1. Y↵
1秒
64M
0
测试用例 5
1. #↵
1. #↵
无限制
64M
0
1. #include
13、32; 6. else y=x; 7. printf("%c\n",y);return 0;} 7. 【小学】一年级的算术题 成绩 5 开启时间 2014年03月17日 星期一 08:00 折扣 0.8 折扣时间 2014年04月4日 星期五 23:55 允许迟交 否 关闭时间 2014年04月6日 星期日 23:55 背景: 小明上小学一年级了,老师已经教会了他们整数的+、-、*、/、%计算,下面老师开始出题,请小明给出计算结果。 输入: 两个整数,每个整数之间使用空格分隔。例如输入格式为:123 444 输出: 分别输
14、出按照整型数据进行 +、-、*、/、* 之后的运行结果。
测试输入
期待的输出
时间限制
内存限制
额外进程
测试用例 1
1. 10 3↵
1. 10+3=13↵
2. 10-3=7↵
3. 10*3=30↵
4. 10/3=3↵
5. 10%3=1↵
1秒
64M
0
1. #include
15、b); 5. printf("%d*%d=%d\n",a,b,a*b); 6. printf("%d/%d=%d\n",a,b,a/b); 7. printf("%d%%%d=%d\n",a,b,a%b);return 0;} 8. 【中学】判断三角形的形状 成绩 5 开启时间 2014年03月17日 星期一 08:00 折扣 0.8 折扣时间 2014年04月4日 星期五 23:55 允许迟交 否 关闭时间 2014年04月6日 星期日 23:55 小明上了初中,开始学习如何求解一元二次方程。 要求:输入三角型的三条边,判断三角形
16、的形状。假设输入的三边边长均>0。(提示:本题中应该要用到 if 语句嵌套) 输入:三角型的3条边的长度(int型)。 输出:等边三角形:equilateral triangle. 等腰三角形:isoceles triangle. 不构成三角形:non-triangle. 一般三角形:triangle. 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 1. 2 2 2↵ 1. equilateral triangle.↵ 1秒 64M 0 测试用例 2 1. 3 2 2↵ 1. isoceles triangle.↵ 1秒 6
17、4M
0
测试用例 3
1. 1 3 1↵
1. non-triangle.↵
1秒
64M
0
测试用例 4
1. 3 4 5↵
1. triangle.↵
1秒
64M
0
1. #include
18、riangle.\n"); 5. else if(a==b&&b!=c||a==c&&c!=b||b==c&&c!=a) printf("isoceles triangle.\n") ; 6. else printf("triangle.\n"); 7. return 0;} 9. 【中学】计算时钟的夹角 成绩 5 开启时间 2014年03月17日 星期一 08:00 折扣 0.8 折扣时间 2014年04月6日 星期日 23:55 允许迟交 是 关闭时间 2014年04月11日 星期五 23:
19、55 背景: 钟面上的时针和分针之间的夹角总是在 0 ~180之间 ( 包括 0 和180 ) 。举例来说,在十二点的时候两针之间的夹角为 0 ,而在六点的时候夹角为180 ,在三点的时候为90 。本题要解决的是计算 12:00 到 11:59 之间任意一个时间的夹角。 输入: 每组测试数据包含两个数字:第一个数字代表小时 ( 大于 0 小于等于 12) ,第二个数字代表分 ( 在区间 [0, 59] 上 ) 。 输出: 对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。输出格式如下所示。 再看一看,想一想:是否可以不用if 语句,只使用 pr
20、intf 函数来简化你的程序? 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 1. 12 0↵ 1. At 12:00 the angle is 0.0 degrees.↵ 1秒 64M 0 测试用例 2 1. 12 30↵ 1. At 12:30 the angle is 165.0 degrees.↵ 1秒 64M 0 测试用例 3 1. 6 0↵ 1. At 6:00 the angle is 180.0 degrees.↵ 1秒 64M 0 测试用例 4 1. 3 0↵ 1. At 3:00
21、the angle is 90.0 degrees.↵ 1秒 64M 0 测试用例 5 1. 3 3↵ 1. At 3:03 the angle is 73.5 degrees.↵ 1秒 64M 0 测试用例 6 1. 3 9↵ 1. At 3:09 the angle is 40.5 degrees.↵ 1秒 64M 0 测试用例 7 1. 4 0↵ 1. At 4:00 the angle is 120.0 degrees.↵ 1秒 64M 0 测试用例 8 1. 5 59↵ 1. At 5:59 the angle is 1
22、74.5 degrees.↵
1秒
64M
0
测试用例 9
1. 4 20↵
1. At 4:20 the angle is 10.0 degrees.↵
1秒
64M
0
测试用例 10
1. 0 0↵
1. At 0:00 the angle is 0.0 degrees.↵
1秒
64M
0
1. #include
23、>180?360-z:z; 5. if(y<10) printf("At %d:0%d the angle is %.1f degrees.\n",x,y,z); 6. else printf("At %d:%d the angle is %.1f degrees.\n",x,y,z);} 10.【日期】根据日期求星期 成绩 5 开启时间 2014年03月17日 星期一 08:00 折扣 0.8 折扣时间 2014年04月6日 星期日 23:55 允许迟交 否 关闭时间 2014年04月11日 星期五 23:55 任
24、意给出一个年月日,求出是星期几。 输入: 年 月 日 输出: 0~6。 星期日用 0 表示,星期一用 1 表示,星期二用 2 表示......星期六用 6 表示。 假设年份大于1900。先想一想:我们现在只会使用 if 语句,该如何建立数学模型?找到数学模型是解决本题的关键。 看了部分先完成同学提交的程序,有人居然使用数组了,这个太不应该,因为我们根本就没有讲数组,让我怀疑使用数组的程序是抄的。 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 1. 2013 3 11↵ 1. 1↵ 1秒 64M 0 测试
25、用例 2
1. 2013 3 15↵
1. 5↵
1秒
64M
0
测试用例 3
1. 2013 3 17↵
1. 0↵
1秒
64M
0
1. #include
26、26*(m+1)/10+d-1)%7;printf("%d\n",weeks);} 11.【中学】求解一元二次方程 成绩 5 开启时间 2014年03月17日 星期一 08:00 折扣 0.8 折扣时间 2014年04月11日 星期五 23:55 允许迟交 是 关闭时间 2014年04月11日 星期五 23:55 初中的小明已经开始学习求解一元二次方程了,下面让我们来教计算机如何求解。输入 a,b,c ,求一元二次方程 ax²+bx+c=0 的根。 输入:假设 a,b,c均int。 输出:要求输出的根为 double 型,保留 6 位小数。 说明:如
27、果不会作,请参考教材P108的例5-17 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 1. 0 0 0↵ 1. Input error!↵ 1秒 64M 0 测试用例 2 1. 0 0 10↵ 1. Input error!↵ 1秒 64M 0 测试用例 3 1. 0 10 0↵ 1. x=0.000000↵ 1秒 64M 0 测试用例 5 1. 10 0 0↵ 1. x1=x2=0.000000↵ 1秒 64M 0 测试用例 6 1. 10 20 0↵ 1. x1=0.0000
28、00↵ 2. x2=-2.000000↵ 1秒 64M 0 测试用例 8 1. 10 0 20↵ 1. x1=1.414214i↵ 2. x2=-1.414214i↵ 1秒 64M 0 测试用例 9 1. 1 2 1↵ 1. x1=x2=-1.000000↵ 1秒 64M 0 测试用例 10 1. 1 2 -1↵ 1. x1=0.414214↵ 2. x2=-2.414214↵ 1秒 64M 0 测试用例 11 1. 2 2 2↵ 1. x1=-0.500000+0.866025i↵ 2. x2=-0.5000
29、00-0.866025i↵
1秒
64M
0
1. #include
30、f("x1=x2=%.6lf\n",b==0?0:-b/(2*a)); 7. else if(d>0) printf("x1=%lf\nx2=%lf\n",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)); 8. else if(b==0) printf("x1=%lfi\nx2=-%lfi\n",sqrt(-d)/(2*a),sqrt(-d)/(2*a)); 9. else printf("x1=%lf+%lfi\nx2=%lf-%lfi\n",-b/(2*a),sqrt(-d)/(2*a),-b/(2*a
31、),sqrt(-d)/(2*a));} 12.【中学】找出最大素数 成绩 5 开启时间 2014年03月17日 星期一 08:00 折扣 0.8 折扣时间 2014年04月11日 星期五 23:55 允许迟交 否 关闭时间 2014年04月11日 星期五 23:55 小明在中学学习了什么是素数。素数是指一个只能被1和它本身整除的数,在数论中占有重要的研究地位,在当代密码学中也被广泛应用。 输入: 取值范围 输出: 该范围内的最大素数 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 1. 1
32、00↵
1. The max prime number is 97.↵
1秒
64M
0
1. #include
33、ak; 10. printf("The max prime number is %d.\n",n);} 13.【小学】再做一年级算术题 成绩 5 开启时间 2014年03月17日 星期一 08:00 折扣 0.8 折扣时间 2014年04月11日 星期五 23:55 允许迟交 否 关闭时间 2014年04月11日 星期五 23:55 小明上小学一年级了,老师已经教会了他们进行整数的 +、-、*、/ 、% 计算,下面老师开始出题,给出一个简单的算术表达式,请小明给出计算结果,请你用 switch 语句编写一个程序,帮小明算出结果。 输入:
34、操作数1 op 操作数2 输出: 计算结果 提示: 关键是在表达式输入过程中如何取出运算符?
测试输入
期待的输出
时间限制
内存限制
额外进程
测试用例 1
1. 10+20↵
1. 30↵
1秒
64M
0
测试用例 2
1. 30-20↵
1. 10↵
1秒
64M
0
测试用例 3
1. 8*11↵
1. 88↵
1秒
64M
0
测试用例 4
1. 13/5↵
1. 2↵
1秒
64M
0
1. #include
35、 {int a,b,c;char op; scanf("%d%c%d",&a,&op,&b); 4. switch(op) 5. {case'+':c=a+b;printf("%d\n",c);break; 6. case'-':c=a-b;printf("%d\n",c);break; 7. case'*':c=a*b;printf("%d\n",c);break; 8. case'/':c=a/b;printf("%d\n",c);break; 9. case'%':c=a%b;printf("%d\n",c);break;} 10.
36、return 0;} 14.【日期】确定母亲节 成绩 5 开启时间 2014年03月8日 星期六 08:00 折扣 0.8 折扣时间 2014年04月11日 星期五 23:55 允许迟交 是 关闭时间 2014年04月11日 星期五 23:55 母亲节是每年的五月第二个星期天,针对输入的年份,计算该年的哪一天是母亲节。 输入: 年份 输出: 日期(5月的哪一天) 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 1. 2014↵ 1. 11↵ 1秒 64M 0 测试用例 2 1.
37、 2015↵
1. 10↵
1秒
64M
0
测试用例 3
1. 2012↵
1. 13↵
1秒
64M
0
1. #include
38、ak;case 6:n=14;break;case 7:n=13;break; 8. case 8:n=11;break;case 9:n=10;break;case 10:n=9;break;case 11:n=8;break; 9. case 12:n=13;break;case 13:n=12;break;case 14:n=11;break;case 15:n=10;break; 10. case 16:n=8;break;case 17:n=14;break;case 18:n=13;break;case 19:n=12;break; 11. case 20:n=10;bre
39、ak;case 21:n=9;break;case 22:n=8;break;case 23:n=14;break; 12. case 24:n=12;break;case 25:n=11;break;case 26:n=10;break;case 27:n=9;break;} 13. printf("%d\n",n);return 0;} 15.【图形】输出一行星号 成绩 5 开启时间 2014年03月17日 星期一 08:00 折扣 0.8 折扣时间 2014年04月11日 星期五 23:55 允许迟交 否 关闭时间 2014年04月11日 星期
40、五 23:55
现在要用最简单得办法,在一行中输出N个星号。 输入:N值 输出: 一行中N个星号。
测试输入
期待的输出
时间限制
内存限制
额外进程
测试用例 1
1. 4↵
1. ****↵
1秒
64M
0
测试用例 2
1. 8↵
1. ********↵
1秒
64M
0
测试用例 3
1. 1↵
1. *↵
1秒
64M
0
测试用例 4
1. 0↵
1. ↵
1秒
64M
0
1. #include
41、"%d",&n); 3. for(i=1;i<=n;i++) printf("*"); printf("\n");} 16.【日期】再算星期 成绩 5 开启时间 2014年03月24日 星期一 08:00 折扣 0.8 折扣时间 2014年04月13日 星期日 23:55 允许迟交 是 关闭时间 2014年04月20日 星期日 23:55 再次给出任意一个年月日(年>1900),现在我们不能只是直接计算,要先判断给出的日期是否合法,对于非法的日期要给出错误提示信息,合法的日期要再计算是星期几。 输入: 年 月 日 输出: 0~6。
42、 星期日用 0 表示,星期一用 1 表示,星期二用 2 表示......星期六用 6 表示。
假设年份大于1900。先想一想:我们现在只会使用 if 语句,该如何建立数学模型?
测试输入
期待的输出
时间限制
内存限制
额外进程
测试用例 1
1. 2013 3 11↵
1. 1↵
1秒
64M
0
测试用例 2
1. 2013 13 15↵
1. month is error.↵
1秒
64M
0
测试用例 3
1. 2013 3 32↵
1. day is error.↵
1秒
64M
0
1. #include
43、tdio.h>
2. #include
44、reak;case 7:t=31;break;case 8:t=31;break; 9. case 9:t=30;break;case 10:t=31;break;case 11:t=30;break;case 12:t=31;break; 10. default:{printf("month is error.\n");s=0;}} 11. if(m==2) 12. if((y%4==0&&y%100!=0)||(y%400==0)) t=29; 13. if(s==1&&(d<1||d>t)) {printf("day is error.\n
45、");s=0;}} 14. if(s==1) {a=y/100+1; if(m<=2) {m=m+12;y=y-1;} 15. w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1; 16. if(w==7) w=0; 17. printf("%d\n",w);} 18. return 0;} 17.【中学】贪吃的猴子 成绩 5 开启时间 2014年03月24日 星期一 14:00 折扣 0.8 折扣时间 2014年04月13日 星期日 23:55 允许迟交 否 关闭时间 2014年04
46、月20日 星期日 23:55 有一只猴子,第一天摘了若干个桃子 ,当即吃了一半,但还觉得不过瘾 ,就又多吃了一个。第2天早上又将剩下的桃子吃掉一半,还是觉得不过瘾,就又多吃了两个。以后每天早上都吃了前一天剩下的一半加天数个(例如,第5天吃了前一天剩下的一般加5个)。到第n天早上再想吃的时候,就只剩下一个桃子了。 输入: 天数n 输出: 第一天的桃子个数 提述:要先建立递推公式。 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 1. 3↵ 1. The monkey got 14 peaches in
47、 first day.↵
1秒
64M
0
1. #include
48、 18.【小学】三做一年级算术题 成绩 5 开启时间 2014年03月24日 星期一 14:00 折扣 0.8 折扣时间 2014年04月13日 星期日 23:55 允许迟交 否 关闭时间 2014年04月20日 星期日 23:55 两个一年级小朋友在一起玩游戏,小明给出一堆一位的正整数和运算要求(+、-、*、/、%),小丽要找出这些整数中的最大值和最小值,然后按照小明的要求算出最大数与最小数进行算术运算的结果。 输入: 用逗号分隔的一位正整数序列,及其运算符和等号 输出: 最大数 op 最小数=结果 测试输入 期待的输出
49、
时间限制
内存限制
额外进程
测试用例 1
1. 5,1,1,2,0,3,+,=↵
1. 5+0=5↵
1秒
64M
0
测试用例 2
1. 1,5,2,0,/,=↵
1. Error!↵
1秒
64M
0
测试用例 3
1. 1,7,2,2,5,3,/,=↵
1. 7/1=7↵
1秒
64M
0
1. #include
50、i=0;;i=i+2) 6. {if(l[i]=='=') break; 7. else 8. {if(l[i]==43||l[i]==45||l[i]==42||l[i]==37||l[i]==47) 9. op=l[i]; 10. else 11. {if(l[i+2]==44) 12. {a=(l[i]-48)*10+l[i+1]-48;i++;} 13. else a=l[i]-48; 14.






