精.选
少年宫电脑编程兴趣班测试题目
竞赛时间:2011年8月21日上午8:00—10:00
题目一览表
题目名称
歌手统分
银行密码
模拟开关
程序文件
score
password
moni
输入文件
score.in
password.in
moni.in
输出文件
Score.out
password.out
moni.out
分值
100
100
100
时限
1秒
1秒
1秒
注意事项:
务必看清题目,严格按照所要求的格式输入、输出。
在调试程序时请先用题目中的示例数据,然后再自行设计多组测试数据进行调试。
测试有严格的时间限制,请尽可能优化算法。
命名规则:
每题都规定了该题的英文名称。
程序文件和数据文件的主文件都是该题的英文名字。
程序文件扩展名采用语言环境的默认扩展名。
数据文件都是文本文件,输入和输出文件的扩展名分别是.in和.out。
程序应从输入文件读取数据,并严格地按照规定的输出格式将结果输出到输出文件中,行首不得有空格,输入数据文件和输出数据文件都与程序在同一个目录中,由于程序所在的目录是不确定的,因此不允许在程序中含有盘符信息和任何形式的路径信息。
选手在竞赛结束时应在硬盘指定位置建立以参赛号命名的文件夹,并将所完成各题的源程序文件和编译所产生的可执行文件(即扩展名为.exe的文件)拷贝到该文件夹中。
使用输入输出文件的程序结构,供同学参考
//输入输出文件开始都是以写的形式产生的
#include "stdio.h" //包含基本的输入输出头文件
main() //主函数 ,标准C++,要求有返回值,不能是void
{
FILE *fin,*fout; //定义输入输出文件指针
long a,b,c; //定义相关变量
fin=fopen("filename.in","r"); //以读取的方式打开输入文件,指向fin
fout=fopen("filename.out","w");//以写入的方式打开输出文件,指向fout
fscanf(fin,"%d%d",&a,&b); //读取输入文件中的数值,存入变量 a,b中
c=a+b; //计算
fprintf(fout,"%ld",c);//在输出计算结果到输出 文件中
fclose(fin); //关闭输入文件指针
fclose(fout); //关闭输出文件指针
return 0; // 返回主函数值
}
一、歌手统分
(score.pas/c/cpp)
【问题描述】
最近,我市举行了一届“青年歌手大奖赛”,邀请N名裁判给某歌手打分。评分原则是去掉一个最高分,去掉一个最低分,剩下的分数的平均值即为该歌手的最终得分m。裁判给分的范围是60≤分数≤100。现请你编写程序给该歌手统分,统计出该歌手的最终得分m(小数点后保留两位小数)。
【输入】
输入文件score.in包含N+1行;
第1行是一个正整数N,表示裁判员的个数;
第2~N+1行,每行一个数分别为每个裁判员给该歌手打的分数。
【输出】
输出文件score.out仅包含一行为一个数m,表示该歌手的最终得分
【输入输出样例】
score.in
score.out
5
96.56
85.55
97.88
98.65
90.88
95.11
【限制】
40%的数据满足:3≤N≤10
80%的数据满足:3≤N≤100
100%的数据满足:3≤N≤1000
二、银行密码
(password.c/cpp/pas)
【问题描述】
今年阜阳十中给高中部特困生发了助学补助,助学补助都存放在邮政储蓄卡中,但是为了安全,每个同学的储蓄卡的密码要尽量不相同。所以每个同学的出生年月日为种子,通过一定的公式计算生成一个六位密码。由于每个同学的书写习惯不一样,年月日的书写格式也不一样,有两类:****年**月**日和**年**月**日。
生成密码的规则是这样的:
无论何种格式的日期, 最终生成的一定是六位密码;
如果学生出生的那一天是偶数,则在最后一位加2,进位不计;
如果学生出生的那一天是奇数,则在年的最后一位加5,进位不计;
你的任务是:编写一个程序,通过读取学生输入的年月日,生成他的银行卡密码;
【输入文件】
文件名:password.in
文件中只有一串数字,表示年月日。
【输出文件】
文件名:password.out
文件中只有一串数字,表示银行账号密码。
【样例输入】
910304
【样例输出】