作者 陈建海
单位 浙江大学
本题目要求计算下列分段函数f(x)的值:
注:可在头文件中包含math.h
,并调用sqrt
函数求平方根,调用pow
函数求幂。
输入格式:
输入在一行中给出实数x。
输出格式:
在一行中按“f(x) = result”的格式输出,其中x与result都保留两位小数。
输入样例1:
10
输出样例1:
f(10.00) = 3.16
输入样例2:
-0.5
输出样例2:
f(-0.50) = -2.75
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
参考代码
#include<stdio.h>
int main()
{
double x, y;
scanf("%lf", &x);
if(x>=0)
y=sqrt(x);
else
y=(x+1)*(x+1)+2.0*x+1.0/x;
printf("f(%.2f) = %.2f", x, y);
return 0;
}
作者 C课程组
单位 浙江大学
中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?
输入格式:
输入在一行中给出一个不超过1000的正整数N。
输出格式:
在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“in day N”。
输入样例1:
103
输出样例1:
Fishing in day 103
输入样例2:
34
输出样例2:
Drying in day 34
鸣谢内蒙古师范大学张志平老师补充数据
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
参考代码
#include<stdio.h>
main()
{
int a, N;
scanf("%d", &N);
a=N%5;
if(a==1||a==2||a==3)
printf("Fishing in day %d", N);
else
printf("Drying in day %d", N);
return 0;
}
作者 沈睿
单位 浙江大学
本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
输入格式:
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。
输出格式:
在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。
输入样例:
1201 1530
输出样例:
03:29
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
参考代码
#include<stdio.h>
void main()
{
unsigned int a, b, c, d, e;
scanf("%d %d", &a, &b);
c=(b/100*60+b%100)-(a/100*60+a%100);
d=c/60;
e=c-d*60;
printf("%02d:%02d", d, e);
}
作者 沈睿
单位 浙江大学
本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。
输入格式:
输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。操作数的数据类型为整型,且保证除法和求余的分母非零。
输出格式:
当运算符为+
、-
、*
、/
、%
时,在一行输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出ERROR
。
输入样例1:
-7 / 2
输出样例1:
-3
输入样例2:
3 & 6
输出样例2:
ERROR
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
参考代码
#include<stdio.h>
int main()
{
int a, b;
char c;
scanf("%d %c %d", &a, &c, &b);
if(c=='+')
printf("%d", a+b);
else if(c=='-')
printf("%d", a-b);
else if(c=='*')
printf("%d", a*b);
else if(c=='/')
printf("%d", a/b);
else if(c=='%')
printf("%d", a%b);
else
printf("ERROR");
return 0;
}
作者 毛薇
单位 武汉理工大学
通过键盘输入一个字符,编程判断并输出用户输入的是什么类型的字符。
输入格式:
输入一个字符。
输出格式:
在一行中输出该字符是哪种类型的字符。
若用户输入字符为’0
’~‘9
’之一,输出This is a digit.
若用户输入字符在’A
’~‘Z
’之一,输出This is a capital letter.
若用户输入字符在’a
’~'z
’之一,输出This is a small letter.
其他情况,输出Other character.
输入样例:
6
输出样例:
This is a digit.
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
参考代码
#include<stdio.h>
int main()
{
char A;
scanf("%c", &A);
if(A>='a' && A<='z')
printf("This is a small letter.");
else if(A>='0'&&A<='9')
printf("This is a digit.");
else if(A>='A'&&A<='Z')
printf("This is a capital letter.");
else
printf("Other character.");
return 0;
}
作者 孙骏
单位 武汉理工大学
学院计划在新年举行联欢晚会,要求每个班级都要准备节目。为了让班上同学有紧迫感,班长希望编写一个倒计时程序,输入日期,显示距离下一个新年的天数days
。例:输入“2021-11-11
”,显示“还有51天到新年”。
输入格式:
输入以"-"分隔的当前日期。
输出格式:
以格式“还有days天到新年”输出还有多少天到新年。无多余空格及其他字符。
输入样例:
2021-11-11
输出样例:
还有51天到新年
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
参考代码
#include<stdio.h>
int main()
{
int year, month, day, two = 28, res;
scanf("%d-%d-%d", &year, &month, &day);
if ((year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0)
two = 29;
int tmp = 13 - month;
switch (tmp) {
case 1:
res = 32 - day;
break;
case 2:
res = 62 - day;
break;
case 3:
res = 93 - day;
break;
case 4:
res = 123 - day;
break;
case 5:
res = 154 - day;
break;
case 6:
res = 185 - day;
break;
case 7:
res = 215 - day;
break;
case 8:
res = 246 - day;
break;
case 9:
res = 276 - day;
break;
case 10:
res = 307 - day;
break;
case 11:
res = 307 + two - day;
break;
case 12:
res = 338 + two - day;
break;
default:
printf("ERROR!");
return 0;
}
printf("还有%d天到新年", res);
return 0;
}
作者 毛薇
单位 武汉理工大学
运输公司对用户计算运费。路程(s)越远,每千米运费就越低。标准如下:
设每千米每吨货物的基本运费为p,货物重为 w,距离为s,折扣为d,则总运费f的计算公式为:
f=p×w×s×(1-d)
输入格式:
在一行中以小数形式输入基本运费、货重和距离,以空格作为分隔符。
输出格式:
在一行输出计算出来的运费,精确到小数点后2位的值。
输入样例:
在这里给出一组输入。例如:
100 20 300
输出样例:
在这里给出相应的输出。例如:
freight=588000.00
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
参考代码
#include<stdio.h>
int main()
{
double p, w, s, d, f;
scanf("%lf %lf %lf", &p, &w, &s);
if(s<250) {
d=0;
f=p*w*s*(1-d);
printf("freight=%.2f", f);
} else if(250<=s&&s<500) {
d=0.02;
f=p*w*s*(1-d);
printf("freight=%.2f", f);
} else if(500<=s&&s<1000) {
d=0.05;
f=p*w*s*(1-d);
printf("freight=%.2f", f);
} else if(1000<=s&&s<2000) {
d=0.08;
f=p*w*s*(1-d);
printf("freight=%.2f", f);
} else if(2000<=s&&s<3000) {
d=0.1;
f=p*w*s*(1-d);
printf("freight=%.2f", f);
} else {
d=0.15;
f=p*w*s*(1-d);
printf("freight=%.2f", f);
}
return 0;
}
作者 陈越
单位 浙江大学
为了保障安静的阅读环境,有些公共图书馆对儿童入馆做出了限制。例如“12 岁以下儿童禁止入馆,除非有 18 岁以上(包括 18 岁)的成人陪同”。现在有两位小/大朋友跑来问你,他们能不能进去?请你写个程序自动给他们一个回复。
输入格式:
输入在一行中给出 4 个整数:
禁入年龄线 陪同年龄线 询问者1的年龄 询问者2的年龄
这里的禁入年龄线
是指严格小于该年龄的儿童禁止入馆;陪同年龄线
是指大于等于该年龄的人士可以陪同儿童入馆。默认两个询问者的编号依次分别为 1
和 2
;年龄和年龄线都是 [1, 200] 区间内的整数,并且保证 陪同年龄线
严格大于 禁入年龄线
。
输出格式:
在一行中输出对两位询问者的回答,如果可以进就输出 年龄-Y
,否则输出 年龄-N
,中间空 1 格,行首尾不得有多余空格。
在第二行根据两个询问者的情况输出一句话:
qing X zhao gu hao Y
,其中 X
是陪同人的编号, Y
是小孩子的编号;huan ying ru guan
;zhang da zai lai ba
;X: huan ying ru guan
,其中 X
是可以入馆的那个人的编号。输入样例 1:
12 18 18 8
输出样例 1:
18-Y 8-Y
qing 1 zhao gu hao 2
输入样例 2:
12 18 10 15
输出样例 2:
10-N 15-Y
2: huan ying ru guan
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
参考代码
#include <stdio.h>
int main()
{
int ban = 0, company = 0, a = 0, b = 0;
scanf("%d %d %d %d", &ban, &company, &a, &b);
if (a >= ban && b >= ban) {
printf("%d-Y %d-Y\n", a, b);
printf("huan ying ru guan");
} else if ((a >= ban && b < ban) && a < company) {
printf("%d-Y %d-N\n", a, b);
printf("1: huan ying ru guan");
} else if ((a < ban && b >= ban) && b < company) {
printf("%d-N %d-Y\n", a, b);
printf("2: huan ying ru guan");
} else if ((a >= ban && b < ban) && a >= company) {
printf("%d-Y %d-Y\n", a, b);
printf("qing 1 zhao gu hao 2");
} else if ((a < ban && b >= ban) && b >= company) {
printf("%d-Y %d-Y\n", a, b);
printf("qing 2 zhao gu hao 1");
} else if (a < ban && b < ban) {
printf("%d-N %d-N\n", a, b);
printf("zhang da zai lai ba");
}
return 0;
}