信息工程学院学生会科技部
关于举办信息工程学院C语言程序设计大赛的策划书
一、活动背景:
随着计算机技术的快速发展,计算机程序语言的多样化,C语言已经使用的越来越广泛,C语言作为一种最基本的计算机语言对于当代大学生来说已经越来越重要。
二、活动目的:
为了丰富校园文化生活,发掘大学生潜能,培养创新精神和加强实践能力,营造良好的大学氛围,展现大学生的精神风貌.选拔优秀人才,提高同学们的动手动脑能力,知识应用以及相关创新能力。
同时,也让更多的同学关注C语言、学习C语言,能够增强C语言爱好者之间的经验交流,促进共同进步。
三、活动对象
皖西学院全日制在校大学生
四、活动地点
逸夫楼三楼四楼机房
五、活动时间
2010年12月5——15日
六、活动要求及注意事项
1、参赛选手报名需要填写报名表,并将报名表送至信息工程学院学生会办公室(逸夫楼一楼西北角)
2、参赛选手需提前十分钟到场,不必带素拓卡,加分时再带,
- 1 -
每人一张(按上机名单加分)
3、参赛选手需在规定时间内上交作品
4﹑比赛开始,参赛者需在桌面上建立自己的文件夹,文件夹的命名方式:学院——专业——班级——姓名——学号——联系方式,文件夹保存在桌面,个人作品存放在文件夹中
5﹑不得抄袭、剽窃他人的作品,不许自带相关资料,一经发现取消比赛资格
6﹑素拓加分:只按照最后参加上机比赛的人员名单加分(只报名不参加的选手不给与加分),加相关的创新分,每人只许交一张素拓卡,只在规定时间内加分,过期不补!
7﹑完成作品后请参赛选手叫附近的工作人员拷贝好自己的作品后才可以离开
8﹑ 上机操作时编辑C语言使用编辑器不限。
七、活动流程
1、活动宣传阶段:12月5日—12月9日
2、申请机房 ,准备试题及相关表格资料的打印
3、报名阶段:12月8日——12月9日下午5:00
4、比赛进行阶段:12月12—13日
5、评比阶段:12月14日—12月15日
6﹑素拓加分阶段:12月15日晚7:00——9:00(信息工程学院学生会——逸夫楼一楼)
八、各部门任务分工
1﹑有分配到任务学生会学干提前二十分钟到场
2﹑体育部和权益部负责现场纪律的维护以及楼下门口的引导(两个部门至少安排4人引导)
3﹑科技部和文艺部负责电脑的开启和检查(若发现无法正常运行的电脑,键盘倒置,表示此机已坏),并且将比赛试题拷贝到电脑上(两个部门需要自备U盘,没有U盘的委员请向其他同学借用) 4﹑生活部和办公室负责监考
5﹑宣传部负责前期的海报宣传和比赛现场的拍摄
7﹑比赛结束,由科技部负责电脑的检查和关机
9﹑办公室现场清理,关灯,离开
九﹑奖项设置
一等奖: 2名(创新分4分)
二等奖:4名(创新分3分)
三等奖:6名(创新分2分)
优秀奖:10名(创新分1分)
参与分:若干名(创新分0.3分)
学校统一为获奖同学颁发获奖证书,并加相应素拓(创新)分 十﹑联系人
陈进款:15656445822金林:18788824987汪志发:18712389705潘爽:18712389952
信息工程学院学生会科技部 二〇一〇年十二月七日
信息工程学院学生会科技部
关于举办信息工程学院C语言程序设计大赛的策划书
一、活动背景:
随着计算机技术的快速发展,计算机程序语言的多样化,C语言已经使用的越来越广泛,C语言作为一种最基本的计算机语言对于当代大学生来说已经越来越重要。
二、活动目的:
为了丰富校园文化生活,发掘大学生潜能,培养创新精神和加强实践能力,营造良好的大学氛围,展现大学生的精神风貌.选拔优秀人才,提高同学们的动手动脑能力,知识应用以及相关创新能力。
同时,也让更多的同学关注C语言、学习C语言,能够增强C语言爱好者之间的经验交流,促进共同进步。
三、活动对象
皖西学院全日制在校大学生
四、活动地点
逸夫楼三楼四楼机房
五、活动时间
2010年12月5——15日
六、活动要求及注意事项
1、参赛选手报名需要填写报名表,并将报名表送至信息工程学院学生会办公室(逸夫楼一楼西北角)
2、参赛选手需提前十分钟到场,不必带素拓卡,加分时再带,
- 1 -
每人一张(按上机名单加分)
3、参赛选手需在规定时间内上交作品
4﹑比赛开始,参赛者需在桌面上建立自己的文件夹,文件夹的命名方式:学院——专业——班级——姓名——学号——联系方式,文件夹保存在桌面,个人作品存放在文件夹中
5﹑不得抄袭、剽窃他人的作品,不许自带相关资料,一经发现取消比赛资格
6﹑素拓加分:只按照最后参加上机比赛的人员名单加分(只报名不参加的选手不给与加分),加相关的创新分,每人只许交一张素拓卡,只在规定时间内加分,过期不补!
7﹑完成作品后请参赛选手叫附近的工作人员拷贝好自己的作品后才可以离开
8﹑ 上机操作时编辑C语言使用编辑器不限。
七、活动流程
1、活动宣传阶段:12月5日—12月9日
2、申请机房 ,准备试题及相关表格资料的打印
3、报名阶段:12月8日——12月9日下午5:00
4、比赛进行阶段:12月12—13日
5、评比阶段:12月14日—12月15日
6﹑素拓加分阶段:12月15日晚7:00——9:00(信息工程学院学生会——逸夫楼一楼)
八、各部门任务分工
1﹑有分配到任务学生会学干提前二十分钟到场
2﹑体育部和权益部负责现场纪律的维护以及楼下门口的引导(两个部门至少安排4人引导)
3﹑科技部和文艺部负责电脑的开启和检查(若发现无法正常运行的电脑,键盘倒置,表示此机已坏),并且将比赛试题拷贝到电脑上(两个部门需要自备U盘,没有U盘的委员请向其他同学借用) 4﹑生活部和办公室负责监考
5﹑宣传部负责前期的海报宣传和比赛现场的拍摄
7﹑比赛结束,由科技部负责电脑的检查和关机
9﹑办公室现场清理,关灯,离开
九﹑奖项设置
一等奖: 2名(创新分4分)
二等奖:4名(创新分3分)
三等奖:6名(创新分2分)
优秀奖:10名(创新分1分)
参与分:若干名(创新分0.3分)
学校统一为获奖同学颁发获奖证书,并加相应素拓(创新)分 十﹑联系人
陈进款:15656445822金林:18788824987汪志发:18712389705潘爽:18712389952
信息工程学院学生会科技部 二〇一〇年十二月七日
合肥师范学院计算机科学与技术系
尊敬的 院(系)分团委(团总支)、学生会
第三届C语言程序设计大赛
随着计算机技术的快速发展,计算机程序语言也呈现多样化的发展趋势。C语言作为一种最基本的计算机语言对于当代大学生来说已经越来越重要。
为了丰富校园文化生活,发掘大学生潜能,提高同学们的动手动脑能力,展现大学生的精神风貌,知识应用以及相关创新能力。同时,也让更多的同学关注C语言、学习C语言,增强C语言爱好者之间的经验交流,促进共同进步,特举办本次C语言程序设计大赛。
一、主办单位
合肥师范学院实验实训中心 合肥师范学院团委
二、承办单位
计算机科学与技术系
三、比赛地点
躬行楼三楼软件机房
四、比赛时间
2014年4月26日
五、参赛对象
合肥师范学院全日制在校大学生
六、报名时间
4月24日-
- 1
《C 语言程序设计》主要在计算机软件、计算机网络、计算机应用、通信技术、智能电子、电子信息工程、多媒体以及核工程与核技术等专业中开设,是电子信息类、机械类等工科专业的重要专业基础课。
本校从2001至今,每年都开设《C语言程序设计》课程,由于,我校最开始时的特殊情况,主要把重点放在C语言中的各类重点、难点的语法、语义上,使得学生经过比较复杂和痛苦的过程后,对C语言在使用上很难做到自己编写程序。而且很多学生产生了畏惧心理。
2004年,学院成立计算机科学与技术系,为了更好学习和掌握C语言,计算机科学与技术专业和计算机维护专业(计算机应用技术前身)除了开设《C语言程序设计》课程外,在后续一学期还开设了《C语言程序设计课程设计》,使得计算机专业学生编程思想和能力得到了极大提高。
2005年,为了让我院工科学生更好的掌握C语言编程以及通过四川省计算机二级考试,在《C语言程序设计》课程后设置《C语言程序设计课程设计》,极大地提高了学生的动手机会和能力,过级率显著提高!
2007年,依托我校建设精品课程的契机,我们将C语言中的各个知识点进行重新规整,提出适用于三本院校学生的语言设计学习的方法。我们提出,先了解C语言,再学习C语言,再用C语言的思想。即在开始时让学生初步知道C语言,然后引入比较简单的运算符以及基本输入、输出和简单的顺序结构程序设计。通过这样的方式,我们发现,学生在C语言的学习就不会从开始的时候陷入大量难懂的语法、语义和数据结构中。有了以上铺垫再层层进入,最终进入复杂的各类数据结构以及指针等学习。通过以上的内容规整后,教学效果有明显提高。
1. Problem A: Hello world! Description Xiao_ming有两个哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放学回家,父母分别跟他们打招呼。
Input 无
Output 请输出: Hello Da_min, Hello Er_min, Hello Xiao_ming!
Sample Input Sample Output Hello Da_min, Hello Er_min, Hello Xiao_ming!
HINT 请注意换行符
Append Code #includeint main() {
printf("Hello Da_min,\n");
printf("Hello Er_min,\n");
printf("Hello Xiao_ming!\n"); } 2. Problem B: 求圆的面积和周长 Description 从键盘输入圆的半径,求圆的面积和周长,圆周率取3.14。
Input 输入一个浮点型数据,有效数字不会超过十进制的6位。
Output 输出为两行。
第一行为圆的面积,第二行为圆的周长,格式见sample。
Sample Input 3
Sample Output Area: 28.260000 Perimeter: 18.840000
HINT 了解浮点类型的输入、输出和算术运算符
Append Code 法一
#includeint main() { double r,p,s; scanf("%lf",&r); p=2*3.14*r; s=3.14*r*r; printf("Area: %lf\n",s); printf("Perimeter: %lf\n",p); } 法二
#include#define pi 3.14 int main() {
double r;
scanf("%d",&r);
printf("Area: %lf\n",pi*r*r);
printf("Perimeter: %lf\n",2*pi*r);
}
3.
Problem C: 平均值 Description 求3个数的平均值。
Input 输入只有一行,为3个较小的整数。
Output 输出为这3个整数的平均值,保留3位小数。
Sample Input 1 2 3 Sample Output 2.000
HINT 注意除法运算对整型数据和浮点型数据是不一样的。
Append Code #includeint main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); printf("%.3lf",(a+b+c)/3.0); }
4. Problem D: 求字符的值 Description 从键盘输入3个字符(不含双字节字符),分别输出每个字符的十进制值(ASCII码)、八进制值和十六进制值。
Input 输入为3个字符。
Output 输出为3行。
每一行为每个字符(对应输入顺序)的十进制、八进制和十六进制值,用空格分隔开。每个输出的值占3个字符,不足3个字符前面补0。
Sample Input 0 A
Sample Output 048 060 030 032 040 020 065 101 041
HINT 了解字符值的存储和整型的关系。
Append Code #includeint main() { char a,b,c; scanf("%c%c%c",&a,&b,&c); printf("%.3d %.3o %.3x\n",a,a,a); printf("%.3d %.3o %.3x\n",b,b,b); printf("%.3d %.3o %.3x\n",c,c,c); }
5.
Problem A: 最简单的程序 Description 输出一行“Hello world!”。
Input 无
Output Hello world!
Sample Input Sample Output Hello world!
HINT Append Code #includeint main() {
printf("Hello world!"); }
6. Problem B: 算术基本运算 Description 计算两整数x和y(0Input 输入只有一行,格式见sample。
Output 输出为多行,按顺序每行输出x,y的和、差、积、商、余数、x的平方和y的三次方,格式见sample
Sample Input x = 11, y = 3
Sample Output x + y : 14 xy : %d\n",x-y);
printf("x * y : %d\n",x*y);
printf("x / y quotient: %d, remainder: %d\n",x/y,x%y);
printf("x ^ 2 : %d\n",x*x);
printf("y ^ 3 : %d\n",y*y*y); } 7. Problem C: 自增自减运算 Description C语言中有自增运算++、自减运算--,并且可以前置和后置。
编写一个程序:对输入的一个整数a,输出a++、a--、++a、--a的值。
Input 一个整数a,a是很小的整数。
Output 输出为5行,第一行为a的值,后面依次为--a、a--、a++、++a的值。
5行输出纵向a要对齐,“:”对齐,“:”前后各一个空格,后面的数值不用对齐。每行行尾都有回车。
Sample Input 0
Sample Output a : 0 --a : -1 a-- : 0 a++ : 0 ++a : 1
HINT Append Code #includeint main() { int a,x; scanf("%d\n",&x); a=x; printf(" a
: %d\n",a); printf("--a
: %d\n",--a); a=x; printf(" a-- : %d\n",a--); a=x; printf(" a++ : %d\n",a++); a=x; printf("++a
: %d\n",++a); }
8. Problem F: 绝对值 Description 求整型数据和浮点型数据的绝对值。
Input 输入两个数,第一个是整数,第二个是浮点数。
Output 输出为两行,第一行为整数的绝对值,第二行为浮点数的绝对值,注意浮点数的绝对值不输出无意义的0。
Sample Input -1 1
Sample Output 1 1
HINT 求绝对值可以用标准库函数来完成,也可以自己判断。注意浮点数的输出格式。求绝对值的函数在哪个头文件?貌似很多人会搞错,包括很多编书的人!
Append Code #include//#includeint main(){
int n;
float m;
scanf("%d%f",&n,&m);
//n=abs(n);
//m=fabs(m);
if(n<0)
{
n=-n;
}
if(m<0)
{
m=-m;
}
printf("%d\n",n);
printf("%g",m);
return 0; }
9. Problem A: 奇数还是偶数? Description 输入一个整数,判读它是奇数还是偶数。
Input 输入只有一行,为一个100以内的正整数。
Output 输出为一行。
若输入为偶数则输出“even”,奇数输出“odd”。 Sample Input 30
Sample Output even
HINT 用整数运算可以解决,练习“?:”表达式。
Append Code #includeint main(){
int n;
scanf("%d",&n);
if(n>=0&&n<=100) {
if(n%2==0)printf("even\n");
else printf("odd\n");
}
return 0; }
10. Problem B: 简单的打折计算 Description 商店规定:消费满n元,可以打八八折。设某件商品标价m元,输入购买的件数x,计算出需要支付的金额(单位:元),精确到分。
Input 输入只有一行,三个整数m、n和x,且0Sample Input 95 300 4
Sample Output 334.40
HINT 了解浮点型的输出控制,注意整型和浮点型混合运算过程中的数据类型转换。
Append Code #includeint main() {
int m,x,n,a;
float b;
scanf("%d%d%d",&m,&n,&x);
0xma=m*x;
if(a>n)
b=0.88*a;
else
b=a;
printf("%.2f\n",b);
}
11. Problem C: 判断闰年 Description 输入一个正整数的年份,判断是否为闰年。
Input 输入只有一行,为一个10000以内的正整数。
Output 输出为一行。
若输入为闰年偶数则输出“Yes”,否则输出“No”。
Sample Input 2010
Sample Output No
HINT 了解逻辑运算符和关系运算符。
Append Code #includeint main() {
int x;
scanf("%d",&x);
if(x>0&&x<10000)
{
if(x%4==0&&x%100!=0)
printf("Yes\n");
else if(x%400==0)
printf("Yes\n");
else
printf("No\n");
}
else
printf("error"); }
12. Problem D: 水仙花数 Description 如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。如:13+53+33=153。
Input 一个整数x,100<=x<=999。
Output x是水仙花数,则输出“YES”,否则为“NO”。
Sample Input 153
Sample Output YES
HINT Append Code #includeint main() {
int a,b,c,x;
scanf("%d",&x);
a=x/100;
b=x/10%10;
c=x%10;
if(x==a*a*a+b*b*b+c*c*c)
printf("Yes");
else
printf("No"); }
13. Problem E: 三个数比较大小 Description 从键盘上输入0~100之间的三个数,按从小到大的顺序输出。
Input 输入只有一行,为三个整数。
Output 按从小到大输出这三个数。
Sample Input 15 10 20
Sample Output 10 15 20
HINT 用if语句判断各种情况可以解决这个问题。
Append Code #includeint main() {
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a>=b)
{
if(b>=c)
printf("%d %d %d\n",c,b,a);
else if(c>=a)
printf("%d %d %d\n",b,a,c);
else
printf("%d %d %d\n",b,c,a);
}
else
{
if(a>=c)
printf("%d %d %d\n",c,a,b);
else if(b>=c)
printf("%d %d %d\n",a,c,b);
else
printf("%d %d %d\n",a,b,c);
} }
14. Problem F: 奇怪的求和之一 Description 给定3个正整数a、b和c,按照如下规则求和: 如果这个数字是偶数,则累加到和中;
如果这个数字是奇数,则将大于该数的最小偶数累加到和中。
Input 三个正整数,均在100以内。
Output 一个和。
Sample Input 2 3 5
Sample Output 12
HINT 如果不会使用分支语句, 可使用条件运算符判断到底将哪个数累积到和中。
Append Code #includeint main() {
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a%2!=0)a++;
if(b%2!=0)b++;
if(c%2!=0)c++;
printf("%d\n",a+b+c);
}
15. Problem G: 你过线了吗? Description 经过四年的学习,你决定报考我国著名的“285”高校之一的北青大学,经过认真的复习,残酷的考试,终于知晓了自己的考试成绩,也知道了北青大学的录取分数线,请你编程判断,自己过线了吗? Input 输入有2行,第一行有4个正整数,分别表示三门课程的分数线以及总分分数线。第二行有3个非负整数,分别表示你考的三门课程的成绩。
Output 如果你的三门课程成绩都不低于相应课程的分数线,且你的考试总分也不低于北青大学的总分分数线要求,则输出“congratulations”,否则输出“sorry”。
Sample Input 70 80 70 240 80 80 82
Sample Output congratulations
HINT 如果你不会使用分支语句,同样可以使用条件运算符实现该程序。
Append Code #includeint main() {
int a,b,c,d,e,f,g,h;
scanf("%d %d %d %d\n%d %d %d",&a,&b,&c,&d,&e,&f,&g);
h=e+f+g;
if(e>=a&&f>=b&&g>=c&&h>=d)
printf("congratulations");
else
printf("sorry"); } 16. Problem I: A+B Problem (II) : Input/Output
Practice Description 计算a+b,0<=a,b<1000。
Input 输入的第一行是一个整数N,后面有N对整数a和b,每对a和b占一行,a,b用空格分开。
Output 每行输出一个a+b的和,顺序与输入对应。
Sample Input 2 1 2 10 20
Sample Output 3 30
HINT N给出了测试样例数,用for循环处理方便。
Append Code #include int main() {
int n,a,b,i; Scanf(“%d”,&n); For(i=0;i17.
Problem H: A+B Problem Description 计算a+b,0<=a,b<1000。
Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。
Output 每行输出一个a+b的值,顺序与输入对应。
Sample Input 1 2 10 20
Sample Output 3 30
HINT OJ系统上测试输入结束符为EOF(End Of File),其值为-1。用scanf()把文件所有内容读完后,会读到EOF,所以可以用来判断输入是否完成,测试时可以用Ctrl+Z产生EOF。本题解法参看FAQ。 Append Code #includeint main(){
int a,b;
while(scanf("%d%d",&a,&b)!=EOF){
printf("%d\n",a+b);
}
return 0; }
18. Problem A: 判断是否是元音字母 Description 输入一个英文字母,判断是否是元音字母。元音字母是:a,e,i,o u,A,E,I,O,U
Input 输入一个英文字母
Output 是元音字母,输出“yes”,否则输出“no”,行尾没有回车。
Sample Input A
Sample Output yes
HINT Append Code #includevoid main() {
char ch;
scanf("%c",&ch);
if(ch>='A'&&ch<='Z')
ch=ch+32;
if(ch=='a')
printf("yes");
else if(ch=='e')
printf("yes");
else if(ch=='i')
printf("yes");
else if(ch=='o')
printf("yes");
else if(ch=='u')
printf("yes");
else
printf("no");
}
19. Problem B: 按顺序输出三个数 Description 对于输入的3个整数,按照从小到大的顺序输出。
Input 输入3个int类型内的整数,两两之间用一个空格隔开。
Output 按照从小到大的顺序输出上述三个数,两两之间用一个空格隔开。
Sample Input 2 1 3 Sample Output 1 2 3
HINT Append Code #includevoid main() {
int a,b,c,temp;
scanf("%d%d%d",&a,&b,&c);
if(a
{
temp=a;
a=b;
b=temp;
}
if(a{
temp=a;
a=c;
c=temp;
}
if(b{
temp=b;
b=c;
c=temp;
}
printf("%d %d %d\n",c,b,a); }
20. Problem E: Description 判断输入整数的奇偶性。
判断奇偶数 Input 输入为一个整数。
Output 输出只有一行,代表判断结果。如果输入的整数n是一个偶数,输出: n is an even number. 否则输出:
n is an odd number. 见样例。
Sample Input 12
Sample Output 12 is an even number.
HINT Append Code #includeint main() {
int a;
scanf("%d",&a);
if(a%2==0)
printf("%d is an even number.",a);
else
printf("%d is an odd number.",a); }
21. Problem A: 判断两个整数的大小关系 Description 输入2个整数a和b,如果a>b,则输出1,否则输出0。
Input 两个整数a和b,均不超过int类型的表示范围。
Output 表示a>b的结果:如果a>b,则输出1,否则输出0。
Sample Input 3 4
Sample Output 0
HINT
Append Code #include int main() { int a,b; scanf("%d %d",&a,&b); if (a>b)
printf("1");
else
printf("0"); return 0; } 22. Problem D: 成绩的等级 Description 把百分制的考试成绩转换成五级制的成绩: 90~100:Excellent 80~89:Good 70~79:Average 60~69:Pass 0~59:Failing
不在0~100之间的输入是非法数据,输出“Error”。
Input 输入多行,每行一个整数。
Output 输入所对应的成绩等级。
Sample Input -1 81 92 35 68 72 100
Sample Output Error Good Excellent Failing Pass Average Excellent HINT 用switch语句解决这个问题比较方便。
Append Code #include int main() {
int score;
while(scanf("%d",&score)!=EOF)
{
if (score<0||score>100)
printf("Error\n");
else
{
switch (score/10)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:printf("Failing\n");break;
case 6:printf("Pass\n");break;
case 7:printf("Average\n");break;
case 8:printf("Good\n");break;
case 9:
case 10:printf("Excellent\n");break;
}
}
}
return 0; }
23.Problem E: 输出是m的倍数或n的倍数、但不是