2020年6月青少年软件编程等级考试(C语言)一级试卷及C语言版答案
编程题(共5题,共100分)
1.鸡尾酒疗法
鸡尾酒疗法,原指“高效抗逆转录病毒治疗”(HAART),由美籍华裔科学家何大一于1996年提出,是通过三种或三种以上的抗病毒药物联合使用来治疗艾滋病。该疗法的应用可以减少单一用药产生的抗药性,最大限度地抑制病毒的复制,使被破坏的机体免疫功能部分甚至全部恢复,从而延缓病程进展,延长患者生 命,提高生活质量。人们在鸡尾酒疗法的基础上又提出了很多种改进的疗法。为了验证这些治疗方法是否在疗效上比鸡尾酒疗法更好,可用通过临床对照实验的方式 进行。假设鸡尾酒疗法的有效率为x,新疗法的有效率为y,如果y-x大于5%,则效果更好,如果x-y大于5%,则效果更差,否则称为效果差不多。下面给 出n组临床对照实验,其中第一组采用鸡尾酒疗法,其他n-1组为各种不同的改进疗法。请写程序判定各种改进疗法效果如何。
输入
第一行为整数n( 1 < n <= 20);其余n行每行两个整数,第一个整数是临床实验的总病例数(小于等于10000),第二个疗效有效的病例数。这n行数据中,第一行为鸡尾酒疗法的数据,其余各行为各种改进疗法的数据。
输出
有n-1行输出,分别表示对应改进疗法的效果:如果效果更好,输出better;如果效果更差,输出worse;否则输出same
样例输入
5
125 99
112 89
145 99
99 97
123 98
样例输出
same
worse
better
same
程序范例
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);//数据组数
int p,q;
scanf("%d%d",&p,&q);//旧疗法数据
double t=(double)q/p;//旧疗法有效率
for(int i=1;i<=n-1;i++)
{
int x,y;
scanf("%d%d",&x,&y);//新疗法数据
double s=(double)y/x;//新疗法有效率
if(s>t+0.05)//比对效果
printf("better\n");//相应输出
else if(s<t-0.05)
printf("worse\n");
else
printf("same\n");
}
return 0;
}
2.判断是否存在重复的数
给定3个数,判断是否存在2个数相等,如果存在输出"YES", 否者输出"NO"。
输入
1行,包含3个整数,以空格分隔。
输出
按照题目要求输出结果
样例输入
2 7 2
样例输出
YES
程序范例
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a==b||b==c||c==a)
printf("YES");
else
printf("NO");
return 0;
}
3.日期输出
给定两个整数,表示一个日期的月和日。请按照"MM-DD"的格式输出日期,即如果月和日不到2位时,填补0使得满足2位。
时间限制:10000
内存限制:65536
输入
2个整数m,d(0 < m <= 12, 0 < d <= 31)。
数据保证日期合法。
输出
按照题目要求输出日期
样例输入
7 18
样例输出
07-18
程序范例
#include<stdio.h>
int main()
{
int m,d;
scanf("%d%d",&m,&d);
printf("%02d-%02d",m,d);
return 0;
}
4.计算表达式的值
给定整数x,y的值,计算3x+2y的值。
输入
一行包含2个整数x,y,以空格作为分隔。数据保证最后计算结果还在整数表示范围内。
输出
按照题目要求输出结果
样例输入
2 3
样例输出
12
程序范例
#include<stdio.h>
int main()
{
int x,y;
scanf("%d%d",&x,&y);
printf("%d",3*x+2*y);
return 0;
}
5.与指定数字相同的数的个数
输出一个整数序列中与指定数字相同的数的个数。
输入
输入包含2行:第1行为N和m,表示整数序列的长度(N <= 100)和指定的数字, 中间用一个空格分开;第2行为N个整数,整数之间以一个空格分开。
输出
输出为N个数中与m相同的数的个数。
样例输入
3 2
2 3 2
样例输出
2
程序范例
#include <stdio.h>
int main()
{
int N,m,x,s=0;
scanf("%d%d",&N,&m);
for (int i=1;i<=N;i++)
{
scanf("%d",&x);
if(x==m)
s++;
}
printf("%d",s);
return 0;
}